~~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}}