AWS上で他アカウントの監視を行うための準備設定
ウィスキー、シガー、パイプをこよなく愛する大栗です。 AWS上のリソースを監視していますか?AWSの監視を行うためには下準備が必要ですので、その下準備についてまとめてみました。
どんな準備が必要か?
監視方法
AWS上のリソースを監視する場合には、大きく2種類が考えられます。
- ネットワーク経由で直接アクセスして情報を取得する。
- AWSのAPI経由で情報を取得する。
ネットワーク経由の場合は、オンプレミスでも同様ですが普通にネットワーク経由でアクセスします。AWSのAPI経由の場合は、CloudWatchやDescribe系のAPIで情報を取得します。 監視サーバと監視対象が同じネットワーク内で同じアカウントの場合は、下準備は必要ありません。しかし、別のVPCで別のアカウントを監視したいと言った時はどうしたら良いでしょうか?
必要な準備
ネットワークの接続
ネットワークを繋ぐ方法として、先ずインターネット経由でアクセスやVPNを繋ぐ方法が考えられます。しかし、インターネット経由だと直接アクセスできるのはPublicサブネット部分だけになるため中継サーバ(Zabbixの場合であればZabbixProxy)が必要になります。 VPCにはVPC Peeringという機能があるため、同じリージョンであればVPC同士を直接接続することが可能です。あえてインターネット経由でアクセスする場合もあるでしょうが、今回はVPC PeeringでVPCを接続します。
IAM権限
他のアカウントに対してAPIを発行する場合は、IAMユーザを発行してアクセスキーを使用してAPIを発行することが考えられます。しかし、アクセスキーを使用すると気がキーの流出やローテーション管理などが必要になってしまうので、できればIAM Roleを使用したいですね。 IAMにはクロスアカウントアクセスという機能があり、別のアカウントのIAM権限を委任することができます。委任されるので別アカウントの情報を自身のアカウント情報を使用して取得することができるようになります。これでIAM Roleを使用することが可能になります。
設定方法
別VPC、別アカウントに対して接続する場合の設定方法を提示します。
VPCの接続設定
各VPCを"Peering01-TEST"と"Peering02-TEST"としてPeeringしてつなげます。"Peering01-TEST"と"Peering02-TEST"は別アカウントを想定しています。 ※:以下のPeering設定作業は作業するアカウントを反対にしても設定可能です。
VPC Peeringの設定
"Peering01-TEST"側のVPCの画面で[Peering Connections]から[Create VPC Peering Connection]をクリックします。
以下の情報を入力して、[Create]をクリックします。
- Local VPC to peer:このアカウントの接続元VPCを選択します。
- Account:別のアカウントへ接続するため[Another account]を選択します。同じアカウントの場合は[My account]を選択してください。
- Account ID:接続先のアカウントID(12桁の数字)を入力します。
- VPC ID:接続先のVPC IDを入力します。
入力内容を確認して[OK]をクリックします。
以下のようにPending Acceptanceの状態のコネクションができます。
次は"Peering02-TEST"側で操作します。 "Peering02-TEST"側のVPCの画面で[Peering Connections]でも以下のようにコネクションがPending Acceptanceの状態で表示されます。
コネクションを選択して、[Accept Request]をクリックします。
コネクションの内容を確認して[Yes, Accept]をクリックします。
[Close]をクリックします。
コネクションが[Active]になりました。
"Peering01-TEST"側でも[Active]になっています。
Route Tableの設定
VPCがPeeringされたので、各VPC上でルーティングの設定を行います。
まず"Peering01-TEST"側で設定を行います。 VPCの[Route Tables]で使用しているRoute Tableに以下のルートを追加します。
- Destination:接続先VPC(Peering02-TEST)のCIDR
- Target:作成したVPC Peering Connection
次に"Peering02-TEST"側で設定を行います。 VPCの[Route Tables]で使用しているRoute Tableに以下のルートを追加します。
- Destination:接続先VPC(Peering01-TEST)のCIDR
- Target:作成したVPC Peering Connection
これでVPC同士が接続できるようになりました。
Security Groupの設定方法
VPC間の通信はSecurity Groupの設定をIPアドレスで行う必要がありますので注意してください。
クロスアカウントアクセスの設定
事前に監視対象アカウントから監視元アカウントへIAM権限の委任する設定を行います。 手順は以下になります。
監視される側のアカウントで委任するための権限をIAM Roleとして作成します。 ここでは"cross-role"と名付けます。
"Role for Cross-Account Access"で"Provide access between AWS accounts you own"を選択します。
監視元側のアカウントIDを入力します。MFAを使用しないので"Require MFA"はチェックしません。
委任する権限を選択します。ここでは"Read Only Access"を選択します。
設定された権限を確認します。
内容を確認して"Create Role"をクリックします。
以下のように権限が委任されています。
上記の設定を行うとAssumeRoleを使用して、別アカウントの権限でAPIを発行できます。AWS CLIから使用する方法については、以下の記事を参照してください。
AWS CLIがAssumeRoleによる自動クレデンシャル取得とMFAに対応しました!
さいごに
AWSの機能により、別の環境を監視する準備を行うことができました。ここでは下準備のみを述べますので、ここで終了します。 別のネットワークへ通信したり、別アカウントの権限でAPIを発行したりすることができます。監視情報はセンシティブな場合があるため、このような手段を使用してセキュアに監視を行いましょう。