~~NOCACHE~~ ~~DISCUSSION~~ ## サービス-CloudTrail ### はじめに [[Aws:Organizations:TrailAcquisitionCase|証跡取得ケース]]の以下のケースで使える ②組織内の特定アカウントで証跡を集中管理 ③Rootアカウントで証跡を集中管理 {{:Aws:Organizations:pasted:20220518-093613.png?direct 600x0}} ・別アカウントのS3バケットに格納するのでひと手間必要です。 ・[②組織内の特定アカウントで証跡を集中管理]を例に設定例を記載します。 ## ②組織内の特定アカウントで証跡を集中管理 ### 証跡管理アカウントの設定 #### Trailで利用するKMS ・組織に対してDecryptも付与しているのは、AccessAnalyzerのポリシー生成を考慮 --> KMSポリシーサンプル# { "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②]" ] } } } ] } <-- #### Trailで利用するS3バケット ・S3バケットのオブジェクト所有者は[希望するバケット所有者]に変更すること ・組織に対してDecryptも付与しているのは、AccessAnalyzerのポリシー生成を考慮 --> S3バケットポリシーサンプル# { "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" } } } ] } <-- ### 証跡を作成するアカウント(root)の設定 現状Trailは委任できないためrootアカウントから証跡を作成します。 #### CloudTrailの信頼されたアクセスを有効にする CloudShellから以下を実行する。 # サービス-CloudTrailの信頼されたアクセスを有効にする aws organizations enable-aws-service-access --service-principal=cloudtrail.amazonaws.com #### AccessAnalyzerのポリシー生成用のロール --> IAMポリシーサンプル# { "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" } } } ] } <-- ## 備考 組織で有効化すると、以下の通りTrailの証跡が作成される ・rootアカウント:証跡を作成したリージョンのみ["IsMultiRegionTrail": true]が付いているので、その他リージョンからも確認可能 ・全てのメンバアカウント:["IsMultiRegionTrail": true]が付いているので、全てのリージョンから確認可能 メンバアカウントからは証跡が操作できない。["IsOrganizationTrail": true]のおかげ? {{:Aws:Organizations:pasted:20220515-151655.png?direct 600x0}} {{tag>AWS CloudTrail}}