Tho*_*sen 6 amazon-s3 terraform terraform-provider-aws
我正在尝试将加密对象复制到不同区域的 S3 存储桶。执行此操作时,我需要指定一个或多个用于解密源对象的 KMS 密钥。
我正在使用以下 Terraform 脚本:
replication_configuration {
role = "${aws_iam_role.replication.arn}"
rules {
id = "${var.service}"
prefix = "${var.replication_bucket_prefix}"
status = "Enabled"
destination {
bucket = "${aws_s3_bucket.replication_bucket.arn}"
storage_class = "STANDARD"
replica_kms_key_id = "xxxxx"
}
source_selection_criteria {
sse_kms_encrypted_objects {
enabled = true
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
该脚本有效(它适用),但在 AWS 控制台中检查时,没有为源对象选择 KMS 密钥。
查看配置,我看不到任何地方可以指定这些键。用于replica_kms_key_id
指定用于加密目标存储桶中的对象的 KMS 密钥。
小智 5
当我尝试使用 terraform 实现 KMS 加密的跨区域、跨帐户复制时,我遇到了同样的问题。
\n\n在某些时候,我注意到配置中缺少源 KMS 密钥(就像您所做的那样),并通过 S3 Web 界面添加了它。这样做之后,AWS 创建了另一个名为“类似”的策略(没有在任何地方提及;一天后我在做其他事情时发现了它)crr-$SOURCE_BUCKET_NAME-to-$TARGET_BUCKET_NAME
并将其附加到复制角色。在检查了该规则后,我意识到这是拼图中缺失的一块。
这是该政策的重要部分:
\n\n{\n "Action": [\n "kms:Decrypt"\n ],\n "Effect": "Allow",\n "Condition": {\n "StringLike": {\n "kms:ViaService": "s3.${var.source_bucket_region}.amazonaws.com",\n "kms:EncryptionContext:aws:s3:arn": [\n "arn:aws:s3:::${var.source_bucket_name}/*"\n ]\n }\n },\n "Resource": [\n "${var.source_kms_key_arn}"\n ]\n },\n
Run Code Online (Sandbox Code Playgroud)\n\n${var.source_kms_key_arn}
是您的源 KMS 密钥 arn。
PS:这个问题让我抓狂!(\xe2\x95\xaf\xc2\xb0\xe2\x96\xa1\xc2\xb0\xef\xbc\x89\xe2\x95\xaf\xef\xb8\xb5\xe2\x94\xbb\xe2\x94\ x81\xe2\x94\xbb
\n 归档时间: |
|
查看次数: |
4158 次 |
最近记录: |