【Organizations】組織レベルで CloudTrailの証跡を有効化、S3バケットへ集約する
AWS Organizations はマルチアカウントの管理、統制に役立つサービスです。
それぞれの AWSアカウントを 組織単位(Organizational Unit: OU)に所属させ、 グループ化することができます。 組織単位で AWSのリソース設定や セキュリティの統制 が可能になります。
一方、 AWS CloudTrail は AWSに対して行った操作(マネジメントコンソール, CLI, SDKなど)の履歴: 証跡 を記録する機能です。
操作の履歴を S3バケットに保存することができます。 必要に応じて Amazon Athena(S3内のデータ分析を行うサービス) など使って ログを調査できます。
Organizations と CloudTrailの連携 で 組織内 全アカウントに一括で証跡を作成 することが簡単にできます。
実際にやってみます。
(準備) CloudTrailアクセスの有効化
最初に Organizationsと CloudTrailの連携を有効化する必要があります。
マスターアカウントで AWS Organizations のコンソール画面に入り、「設定」から
CloudTrail アクセスの有効化
をしましょう。
CloudTrail証跡の作成
マスターアカウントで CloudTrailのコンソール画面に入り、「証跡の作成」を選択しましょう。
以下 「証跡情報の作成」画面です。
組織に証跡を適用 を 「はい」にするだけで、全てのメンバーアカウントで証跡が作成されます。
今回は新規バケットを作成します。
他項目を適当に埋めて「作成」を実行しましょう。
証跡の確認
S3バケットを確認してみます。
作成した S3バケットの AWSLogs/[組織ID]
に各組織内のアカウントのフォルダがあります。
1つのアカウントIDフォルダを見てみます。
通常の証跡と同じく、これらログを Athena(ほか分析ツール)など使って調査することが可能です。 (参考: CloudTrailでS3オブジェクトレベルのログを取得してAthenaで閲覧してみた)
自動生成されたバケットポリシーは以下のような内容でした。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AWSCloudTrailAclCheck20150319", "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": "s3:GetBucketAcl", "Resource": "arn:aws:s3:::(バケット名)" }, { "Sid": "AWSCloudTrailWrite20150319", "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::(バケット名)/AWSLogs/(マスターアカウントID)/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control" } } }, { "Sid": "AWSCloudTrailWrite20150319", "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::(バケット名)/AWSLogs/(組織ID)/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control" } } } ] }
既存バケットで証跡を作成する場合は、 このようなポリシーの記載が事前に必要となります。
おわりに
Organizations と連携した 組織レベルの CloudTrail有効化を試してみました。
- マルチアカウントの情報を 1バケットに集約できる
- 組織に新しいアカウントが追加されたときの CloudTrail設定が省ける
上記メリットがあり、便利に感じました。
少しでもどなたかのお役に立てば幸いです。