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

跨账户从SSE-KMS加密S3桶复制至默认SSE-S3加密桶的配置问题

跨账户复制SSE-KMS加密S3对象到SSE-S3加密桶的解决方案

核心问题根源

AWS控制台在启用「复制KMS加密对象」选项后,存在UI层面的强制限制——必须指定目标KMS密钥,但实际上AWS API/CLI支持配置目标对象使用默认SSE-S3加密,无需指定自定义KMS密钥,这就是你在控制台遇到矛盾的原因。

可行解决方案

放弃AWS控制台配置,改用AWS CLI或CloudFormation配置跨账户复制(CRR)规则,具体步骤如下:

  1. 确认源账户的CRR角色权限
    确保该角色具备以下权限:

    • 源桶的s3:GetObject、s3:GetObjectVersion权限(需包含允许使用源KMS密钥解密的条件)
    • 目标桶的s3:PutObject权限
    • 源KMS密钥的kms:Decrypt权限(需在KMS密钥的权限策略中添加该角色的访问许可)

    示例角色权限策略片段:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "s3:GetObject",
            "s3:GetObjectVersion"
          ],
          "Resource": "arn:aws:s3:::source-bucket/*",
          "Condition": {
            "StringEquals": {
              "s3:x-amz-server-side-encryption": "aws:kms"
            }
          }
        },
        {
          "Effect": "Allow",
          "Action": "s3:PutObject",
          "Resource": "arn:aws:s3:::destination-bucket/*"
        },
        {
          "Effect": "Allow",
          "Action": "kms:Decrypt",
          "Resource": "arn:aws:kms:source-region:source-account-id:key/source-kms-key-id"
        }
      ]
    }
    
  2. 配置目标桶的权限策略
    允许源账户的CRR角色向目标桶写入对象:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::source-account-id:role/crr-replication-role"
          },
          "Action": "s3:PutObject",
          "Resource": "arn:aws:s3:::destination-bucket/*"
        }
      ]
    }
    
  3. 使用CLI配置CRR规则
    运行以下CLI命令,替换占位符为实际值:

    aws s3api put-bucket-replication \
      --bucket source-bucket \
      --replication-configuration '{
        "Role": "arn:aws:iam::source-account-id:role/crr-replication-role",
        "Rules": [
          {
            "ID": "ReplicateSSEKMStoSSES3",
            "Status": "Enabled",
            "Priority": 1,
            "SourceSelectionCriteria": {
              "SseKmsEncryptedObjects": {
                "Status": "Enabled"
              }
            },
            "Destination": {
              "Bucket": "arn:aws:s3:::destination-bucket",
              "Account": "destination-account-id"
            }
          }
        ]
      }'
    

    关键细节:Destination中未指定EncryptionConfiguration,此时复制的对象会自动使用目标桶的默认SSE-S3加密,无需额外KMS密钥。

补充说明

  • 按上述配置完成后,复制的对象会继承目标桶的SSE-S3加密,数据使用者无需额外KMS权限即可读取,完全符合你的初始需求。
  • 反向操作(SSE-S3到SSE-KMS)可行的原因是:源对象无KMS加密,无需启用「复制KMS加密对象」选项,因此控制台无需强制指定目标KMS密钥(或指定后可通过KMS权限配置完成授权)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 14:17:08