1

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

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

{


   "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/*"
      }
   ]
}

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

{
    "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 命令的样子:

aws s3api put-bucket-replication --bucket "sourcebucket" --replication-configuration  file://./replicationconfigfile.json

当我在运行 cli 命令后转到 S3 存储桶时,我可以看到使用KMS-Encrypted Objectas创建的复制规则,replicate但是当我单击edit查看详细信息时,它没有选择任何 KMS 密钥。

- - - 更新 - - - -

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

4

2 回答 2

0

以防万一其他人遇到这个问题,我与 AWS 支持进行了长时间的交谈,他们确认无法以编程方式(或在 CloudFormation 中)设置用于解密源对象的密钥。就我而言,我必须使用 SDK 设置配置,然后在控制台中手动设置解密密钥。相当烦人的是,他们截至 2020 年 7 月 8 日还没有解决这个问题。

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

于 2020-07-08T10:06:56.987 回答
0

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

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

我已经把这个问题发给他们了。

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

于 2018-06-11T09:13:58.033 回答