要求在 S3 存储桶策略中使用特定密钥 ID 进行 KMS 加密
Posted
技术标签:
【中文标题】要求在 S3 存储桶策略中使用特定密钥 ID 进行 KMS 加密【英文标题】:Require KMS encryption with specific key ID in S3 bucket policy 【发布时间】:2017-04-27 23:59:26 【问题描述】:我试图要求放入存储桶的所有对象都使用特定的 KMS 密钥进行加密。我设法要求 KMS 加密,但密钥规范不起作用。这是我目前的政策(没有真实的存储桶名称和 ID):
"Version": "2012-10-17",
"Id": "PutObjPolicy",
"Statement": [
"Sid": "DenyInsecureCommunications",
"Effect": "Deny",
"Principal":
"AWS": "*"
,
"Action": "s3:*",
"Resource": "arn:aws:s3:::bucket1,
"Condition":
"Bool":
"aws:SecureTransport": "false"
,
"Sid": "DenyIncorrectEncryptionHeader",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::bucket1/*",
"Condition":
"StringNotEquals":
"s3:x-amz-server-side-encryption": "aws:kms",
"s3:x-amz-server-side-encryption-aws-kms-key-id": "arn:aws:kms:eu-central-1:123456789:key/12345-123-notmy-keyid-1234566"
,
"Sid": "DenyUnEncryptedObjectUploads",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::bucket1/*",
"Condition":
"Null":
"s3:x-amz-server-side-encryption": "true"
]
这正确地拒绝了没有指定任何服务器端加密的上传,但它仍然允许使用默认的 s3 密钥。
【问题讨论】:
【参考方案1】:如果有多个条件运算符,或者有多个键附加到单个条件运算符,则使用逻辑 AND 评估条件。
http://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#Condition
这表明双条件策略仅在 两个 字符串不相等时才会拒绝(即,如果不使用加密 并且 key-id 是错误)。
分离测试
s3:x-amz-server-side-encryption
和
s3:x-amz-server-side-encryption-aws-kms-key-id
分成两个单独的 Deny
策略语句应该是解决方法。
【讨论】:
以上是关于要求在 S3 存储桶策略中使用特定密钥 ID 进行 KMS 加密的主要内容,如果未能解决你的问题,请参考以下文章