今回は、AWS CloudTrailをAWS Organizationsと連携させる時の初期セットアップの手順について説明します。

AWS CloudTrailはAWS Organizationsと連携させることで組織の証跡と呼ばれるAWS Organizations配下のすべてのAWSアカウントのイベントを記録する証跡を作ることができます。この組織の証跡のセットアップ手順について紹介します。

想定しているシステム構成

本稿では、実案件でよくあるマルチアカウント構成でのセットアップ手順を説明します。具体的には、下図のようにセキュリティアカウントとログアーカイブアカウントを用意します。

  • 今回のセットアップで想定しているシステム構成

  • セキュリティアカウント:管理アカウントから委任管理者として設定され、CloudTrail、Config、Security Hubなどのセキュリティ関連の設定を行うアカウント

  • ログアーカイブアカウント:各種AWSサービスから出力されたログを保管するアカウント

案件によっては、セキュリティアカウントとログアーカイブアカウントを同一のAWSアカウントとする場合もあるので、自身の案件の状況に応じて適宜読み替えていただければと思います。

委任管理者アカウントの設定

前回も説明しましたが、CloudTrailで委任管理者をサポートしましたので、まずは委任管理者アカウントの設定を行います。

(1)委任管理者アカウントの設定は、管理アカウントでのみ実施できるので、まず管理アカウントにログインを行い、CloudTrailの画面を開きます。

(2)サイドメニューから「設定」をクリックします。

(3)「管理者を登録」ボタンをクリックし、ポップアップ画面で委任管理者として設定するAWSアカウントIDを入力します。

ログアーカイブアカウントの設定

CloudTrailの設定前に、Cloudtrailの証跡を保管するためのS3バケットを用意する必要があるため、ログアーカイブアカウントにてその設定を行います。

(1)組織の証跡用のS3バケットの作成を行います。付与すべきバケットポリシーは公式ドキュメントに記載がありますので、記載の通りの設定を行います。公式ドキュメントのバケットポリシーはわかりにくいところがありますので、少し補足をします。

   {
 "Version": "2012-10-17",
 "Statement": [
     {
         "Sid": "AWSCloudTrailAclCheck20150319",
         "Effect": "Allow",
         "Principal": {
             "Service": [
                 "cloudtrail.amazonaws.com"
             ]
         },
         "Action": "s3:GetBucketAcl",
         "Resource": "arn:aws:s3:::myOrganizationBucket"※1,
         "Condition": {
             "StringEquals": {
                 "aws:SourceArn": "arn:aws:cloudtrail:region:111111111111:trail/trailName"※2
             }
         }
     },
     {
         "Sid": "AWSCloudTrailWrite20150319"※3,
         "Effect": "Allow",
         "Principal": {
             "Service": [
                 "cloudtrail.amazonaws.com"
             ]
         },
         "Action": "s3:PutObject",
         "Resource": "arn:aws:s3:::myOrganizationBucket/AWSLogs/111111111111/*",
         "Condition": {
             "StringEquals": {
                 "s3:x-amz-acl": "bucket-owner-full-control",
                 "aws:SourceArn": "arn:aws:cloudtrail:region:111111111111:trail/trailName"
             }
         }
     },
     {
         "Sid": "AWSCloudTrailOrganizationWrite20150319",
         "Effect": "Allow",
         "Principal": {
             "Service": [
                 "cloudtrail.amazonaws.com"
             ]
         },
         "Action": "s3:PutObject",
         "Resource": "arn:aws:s3:::myOrganizationBucket/AWSLogs/o-exampleorgid/*"※4,
         "Condition": {
             "StringEquals": {
                 "s3:x-amz-acl": "bucket-owner-full-control",
                 "aws:SourceArn": "arn:aws:cloudtrail:region:111111111111:trail/trailName"
             }
         }
     }
 ]
}

※1:Resourceに指定している「myOrganizationBucket」は、今回作成するS3バケット名を指定してください
※2:記載例の「111111111111」は 管理アカウントのAWSアカウントID です。セキュリティアカウントのAWSアカウントIDではないのでご注意ください
※3:組織の証跡の場合、このブロックの記載は必須ではありません
※4:組織の証跡は「{バケット名}/AWSLogs/{組織ID}/{管理アカウントのAWSアカウントID}/{メンバーアカウントのAWSアカウントID}」という名前で保管されます。組織IDは管理アカウントで確認可能ですので、事前に確認しておきましょう。