You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

跨账户CloudTrail日志写入S3的KMS加密配置报错排查

问题根因定位
  • 区域不匹配:AWS要求用于S3服务端加密的客户托管KMS密钥必须和目标S3桶处于完全相同的区域,若你创建的KMS密钥和日志账户S3桶的区域不一致,会直接触发该报错
  • 权限缺失:现有KMS密钥仅配置了解密权限,缺少CloudTrail服务加密所需的密钥操作权限;同时主账户用于配置CloudTrail的IAM身份未获得KMS密钥的访问授权,也会触发权限类错误
正确配置步骤

1. 区域一致性校验

  • 登录日志账户,进入S3控制台查看目标存储桶的所属区域
  • 切换到KMS控制台,选择上述相同区域,确认待使用的密钥为该区域下创建的客户托管密钥(AWS托管的S3/KMS密钥不支持跨账户CloudTrail加密场景)

2. 补全日志账户KMS密钥策略

在现有密钥策略基础上,新增CloudTrail服务加密权限声明,完整新增配置如下:

{
    "Sid": "AllowCloudTrailEncryptLogs",
    "Effect": "Allow",
    "Principal": {
        "Service": "cloudtrail.amazonaws.com"
    },
    "Action": [
        "kms:GenerateDataKey*",
        "kms:Decrypt"
    ],
    "Resource": "*",
    "Condition": {
        "StringEquals": {
            "aws:SourceArn": "arn:aws:cloudtrail:<主账户CloudTrail所在区域>:<主账户ID>:trail/<主账户CloudTrail名称>"
        }
    }
}

保留你原有组织内解密权限的声明即可,注意替换上述配置中的占位符为实际资源信息。

3. 配置主账户IAM权限

在主账户用于配置CloudTrail的IAM用户/角色的权限策略中,新增如下授权:

{
    "Effect": "Allow",
    "Action": [
        "kms:DescribeKey",
        "kms:GenerateDataKey*",
        "kms:Decrypt"
    ],
    "Resource": "arn:aws:kms:<日志账户S3桶区域>:<日志账户ID>:key/<KMS密钥ID>"
}

4. 补全日志账户S3桶策略

在现有允许CloudTrail写入的桶策略基础上,新增KMS加密校验规则:

{
    "Sid": "AllowCloudTrailKMSWrite",
    "Effect": "Allow",
    "Principal": {
        "Service": "cloudtrail.amazonaws.com"
    },
    "Action": "s3:PutObject",
    "Resource": "arn:aws:s3:::<日志桶名称>/AWSLogs/<主账户ID>/*",
    "Condition": {
        "StringEquals": {
            "s3:x-amz-server-side-encryption": "aws:kms",
            "s3:x-amz-server-side-encryption-aws-kms-key-id": "<KMS密钥完整ARN>"
        }
    }
}

5. 完成CloudTrail加密配置

回到主账户CloudTrail控制台,编辑对应追踪的加密配置,填写日志账户KMS密钥的完整ARN,即可完成配置,不再触发报错。

内容的提问来源于stack exchange,提问作者Evan Gertis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 22:36:05