この回では、AWS CloudTrailをAWS Organizationsと連携させるときの初期セットアップ手順について説明します。
AWS CloudTrailはAWS Organizationsと連携させることで組織の証跡と呼ばれるAWS Organizations配下のすべてのAWSアカウントのイベントを記録する証跡を作ることができます。
この組織の証跡のセットアップ手順について紹介します。
本記事では実案件でよくあるマルチアカウント構成でのセットアップ手順を紹介します。具体的には下図のようにセキュリティアカウントとログアーカイブアカウントを用意します。
案件によってはセキュリティアカウントとログアーカイブアカウントを同一のAWSアカウントとする場合もありますので、ご自身の案件の状況に応じて適宜読み替えていただければと思います。
前回の記事でも紹介しましたが、CloudTrailで委任管理者をサポートしましたので、まずは委任管理者アカウントの設定を行います。
CloudTrailの設定前に、Cloudtrailの証跡を保管するための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は管理アカウントで確認可能ですので、事前に確認しておきましょう。
CloudTrailの設定を行う前に、KMSにて顧客管理キー(CMK)を作成します。組織の証跡作成時にCMKを新規作成することも可能ですが、今回は事前にCMKを作成し、そのCMKを指定するという流れでのセットアップを紹介します。
{
"Version": "2012-10-17",
"Id": "Key policy for CloudTrail",
"Statement": [
{
"Sid": "Enable IAM User Permissions For Security Account",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::セキュリティアカウントのID:root"
]
},
"Action": "kms:*",
"Resource": "*"
},
{
"Sid": "Enable IAM User Permissions For Log Archive Account",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::ログアーカイブアカウントのID:root"
]
},
"Action": "kms:Decrypt",
"Resource": "*"
},
{
"Sid": "Allow CloudTrail to encrypt logs",
"Effect": "Allow",
"Principal": {
"Service": "cloudtrail.amazonaws.com"
},
"Action": [
"kms:Decrypt",
"kms:GenerateDataKey*"
],
"Resource": "*",
"Condition": {
"StringLike": {
"kms:EncryptionContext:aws:cloudtrail:arn": [
"arn:aws:cloudtrail:ap-northeast-1:管理アカウントのID:trail/作成するCloudTrailの名前"
]
}
}
},
{
"Sid": "Allow CloudTrail to describe key",
"Effect": "Allow",
"Principal": {
"Service": "cloudtrail.amazonaws.com"
},
"Action": "kms:DescribeKey",
"Resource": "*",
"Condition": {
"StringEquals": {
"aws:SourceArn": "arn:aws:cloudtrail:ap-northeast-1:管理アカウントのID:trail/作成するCloudTrailの名前"
}
}
}
]
}
最後にCloudTrailの設定を行います。本操作はセキュリティアカウントで行います。
最後にCloudtrailをOrganizationsと連携させるにあたり、課題となりやすい個所について紹介します。
証跡イベントを組織のイベントデータストアにコピーするには、組織の管理アカウントを使用する必要があります。組織の委任された管理者アカウントを使用して、証跡イベントをコピーすることはできません。
今回は、CloudTrailの組織の証跡の作成ステップや組織の証跡を利用時に課題となりやすいポイントについても紹介しました。それほどメジャーな操作ではないため、初めて実施される時には戸惑われたり、手戻りが発生してしまうことも起きやすいかと思います。本記事がそうした課題の解決の一助になれば幸いです。
次回は、AWS ConfigのOrganizations連携について紹介いたします。