証跡取得ケースの以下のケースで使える
②組織内の特定アカウントで証跡を集中管理
③Rootアカウントで証跡を集中管理
・別アカウントのS3バケットに格納するのでひと手間必要です。
・[②組織内の特定アカウントで証跡を集中管理]を例に設定例を記載します。
・組織に対してDecryptも付与しているのは、AccessAnalyzerのポリシー生成を考慮
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::[証跡管理を行うアカウントID]:root" }, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allow use of the key for Organization", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringEquals": { "aws:PrincipalOrgID": "[組織ID]" } } }, { "Sid": "Allow use of the key for trail", "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": [ "kms:Encrypt", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "arn:aws:kms:[証跡管理を行うリージョン]::[証跡管理を行うアカウントID]::key/*", "Condition": { "StringEquals": { "aws:SourceAccount": [ "[組織内のアカウントID①]", "[組織内のアカウントID②]" ] } } } ] }
・S3バケットのオブジェクト所有者は[希望するバケット所有者]に変更すること
・組織に対してDecryptも付与しているのは、AccessAnalyzerのポリシー生成を考慮
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AWSCloudTrailAclCheck", "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": "s3:GetBucketAcl", "Resource": "arn:aws:s3:::[Trail用S3バケット名]" }, { "Sid": "AWSCloudTrailWrite", "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": "s3:PutObject", "Resource": [ "arn:aws:s3:::[Trail用S3バケット名]", "arn:aws:s3:::[Trail用S3バケット名]/*" ], "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control" } } }, { "Sid": "Allow-Access-From-Same-Organization", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": [ "s3:ListBucket", "s3:GetObject" ], "Resource": [ "arn:aws:s3:::[Trail用S3バケット名]", "arn:aws:s3:::[Trail用S3バケット名]/*" ], "Condition": { "StringEquals": { "aws:PrincipalOrgID": "[組織ID]" } } }, { "Sid": "Deny non SSL request", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": [ "arn:aws:s3:::[Trail用S3バケット名]", "arn:aws:s3:::[Trail用S3バケット名]/*" ], "Condition": { "Bool": { "aws:SecureTransport": "false" } } } ] }
現状Trailは委任できないためrootアカウントから証跡を作成します。
CloudShellから以下を実行する。
# サービス-CloudTrailの信頼されたアクセスを有効にする aws organizations enable-aws-service-access --service-principal=cloudtrail.amazonaws.com
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "cloudtrail:GetTrail", "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:GenerateServiceLastAccessedDetails", "iam:GetServiceLastAccessedDetails" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::[Trail用S3バケット名]", "arn:aws:s3:::[Trail用S3バケット名]/*" ] }, { "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": [ "[Trail用KMSキーARN]" ], "Condition": { "StringLike": { "kms:ViaService": "s3.*.amazonaws.com" } } } ] }