AWS跨账号配置CloudTrail推日志到S3时KMS权限报错如何排查
问题排查步骤
1. 修复KMS策略中的明显语法错误
你当前最后一条跨账号解密权限的规则存在ARN拼写错误:
原配置:
"arn:aws:cloudtrail:*:logging_account_idtrail/*"
问题:logging_account_id和trail之间缺少冒号分隔符
修正后应为:"arn:aws:cloudtrail:*:logging_account_id:trail/*"
2. 验证KMS密钥属性与配置匹配
- 你使用的KMS密钥必须和CloudTrail trail所属的区域相同,如果你配置的是跨区域/组织级trail,必须使用多区域KMS密钥,不允许用其他区域的单区域KMS密钥加密当前区域的CloudTrail日志
- 确认你使用的是客户托管密钥(CMK),AWS默认托管的CloudTrail密钥不支持跨账号场景使用
- 确认主账号CloudTrail配置中填写的KMS密钥ARN完整正确,无拼写错误
3. 补充CloudTrail服务必要权限
当前你给cloudtrail.amazonaws.com服务主体的权限仅包含kms:DescribeKey和kms:GenerateDataKey*,如果你的CloudTrail开启了日志文件完整性校验功能,还需要额外允许kms:Verify权限:
{ "Sid": "AllowCloudTrailVerifyHash", "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": "kms:Verify", "Resource": "*" }
4. 检查S3存储桶加密配置
确认日志账号的目标S3存储桶没有开启默认SSE-KMS加密,如果开启了存储桶默认加密,需要额外给CloudTrail服务授予对应存储桶加密密钥的访问权限,或者将存储桶默认加密方式改为SSE-S3。
5. 安全优化(可选)
你当前第一条规则"Principal": {"AWS": "*"}, "Action": "kms:*"权限范围过大,存在严重安全风险,建议替换为仅允许指定的IAM管理员账号管理KMS密钥,避免密钥被未授权访问。
内容的提问来源于stack exchange,提问作者Evan Gertis
相关产品推荐
相关产品推荐

