无法使用SSE在S3存储桶上设置跨区域复制

时间:2018-01-23 14:16:07

标签: amazon-web-services amazon-s3 replication aws-kms

当对象是服务器端加密时,我无法设置跨区域复制。我正在使用awscli进行设置。这就是我所做的。

跨区域复制角色IAM策略如下所示:

<xp:checkBox text="Agree" value="#{proposalBean.proposal.mailNotify}" checkedValue="YES"/>

这是我的复制配置文件的样子:

{


   "Version":"2012-10-17",
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "s3:GetReplicationConfiguration",
            "s3:ListBucket"
         ],
         "Resource":[
            "arn:aws:s3:::source-bucket"
         ]
      },
      {
         "Effect":"Allow",
         "Action":[

            "s3:GetObjectVersion",
            "s3:GetObjectVersionAcl",
            "s3:GetObjectVersionTagging"

         ],
         "Resource":[
            "arn:aws:s3:::source-bucket/*"
         ]
      },
      {
         "Effect":"Allow",
         "Action":[
            "s3:ReplicateObject",
            "s3:ReplicateDelete",
            "s3:ReplicateTags"
         ],
         "Resource":"arn:aws:s3:::destination-bucket/*"
      }
   ]
}

这就是我的cli命令的样子:

{
    "Role": "arn:aws:iam::1234567890:role/replication-role",
    "Rules": [
        {
            "ID": "abcd",
            "Prefix": "",
            "Status": "Enabled",
            "SourceSelectionCriteria": {
                "SseKmsEncryptedObjects": {
                    "Status": "Enabled"
                }
            },
            "Destination": {
                "Bucket": "arn:aws:s3:::destinationbucket",
                "EncryptionConfiguration": {
                    "ReplicaKmsKeyID": "arn:aws:kms:us-west-2:1234567890:key/849b779d-bdc3-4190-b285-6006657a578c"
                }
            }
        }
    ]
}

当我在运行cli命令后转到S3存储桶时,我可以看到使用aws s3api put-bucket-replication --bucket "sourcebucket" --replication-configuration file://./replicationconfigfile.json 创建的复制规则为KMS-Encrypted Object但是当我点击replicate查看详细信息时,它没有选择任何KMS密钥。

------ -------更新

如果我删除cli创建的规则并使用控制台进行设置,它会选择向导中的所有kms键。所以问题是当我使用cli时为什么不在源区域中选择kms键? 我在这里错过了什么?

2 个答案:

答案 0 :(得分:0)

CLI中缺少向导中显示的KMS列表字段,我有同样的问题,因为我使用KMS来加密我的源和我的目标存储桶,我无法选择密钥来解密我的对象我正在使用Terraform来创建复制规则。

正如您在此处所见,唯一存在的参数是“复制条件”,值可以是 true false ,列表字段“选择一个或多个用于解密源对象的密钥”在AWS CLI中不存在。

我已将此问题发送给他们。

我做了什么? 我替换了由我管理的生成的KMS密钥以使用AWS管理的密钥,我只启用了服务器端加密,并且我在桶,源和目标中都选择了AES256加密类型,它对我来说很好。

答案 1 :(得分:0)

以防万一其他人遇到此问题,我与AWS支持进行了漫长的交谈,他们确认没有办法设置以编程方式(或在CloudFormation中)解密源对象的密钥。就我而言,我必须使用SDK设置配置,然后在控制台中手动设置解密密钥。令人十分恼火的是,他们尚未在2020年7月8日前解决此问题。

环顾他们讨论相同问题的Terraform线程,我相信他们可以通过直接为CRR设置IAM策略来解决此问题,但是我不确定您将如何做到这一点。 https://github.com/terraform-providers/terraform-provider-aws/issues/6046#issuecomment-427960842