【Organizations】組織レベルで CloudTrailの証跡を有効化、S3バケットへ集約する

2020.05.08

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設定が省ける

上記メリットがあり、便利に感じました。

少しでもどなたかのお役に立てば幸いです。

参考