我正在使用以下存储桶策略:
{ “Version”:“2012-10-17”, “Id”:“Policy1566337631537”, “Statement”:[{ “Sid”:“Stmt156”, “Effect”:“Deny”, “Principal”:“", "操作": "s3:PutObject", "资源": "arn:aws:s3:::jmalacho-test-bucket23/*", "条件": { "StringNotEquals": { "s3:x-amz-server-side-encryption-aws-kms-key-id": "arn:aws:kms:us-east-2:123456789012:alias/ExampleAlias" } } } ] }
然后,当我尝试使用 CLI 上传文件时,出现“访问被拒绝”错误。
aws s3 cp notes.txt s3://jmalacho-test-bucket23/notes.txt --sse aws:kms --sse-kms-key-id 别名/ExampleAlias
如果我使用 key-id arn,策略就会起作用。在存储桶策略中不能使用密钥别名吗?
谢谢
答案1
文档表明你不能。
Amazon S3 还支持
s3:x-amz-server-side-encryption-aws-kms-key-id
条件键,您可以使用该条件键要求使用特定的 KMS 密钥进行对象加密。您在策略中指定的 KMS 密钥必须使用该arn:aws:kms:region:acct-id:key/key-id
格式。https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html
别名与上面提到的需要“特定的 KMS 密钥”的概念不一致,因为别名并不引用特定的密钥,除非别名恰好指向密钥时暂时引用。
还:
仅以下操作可以使用别名作为KeyId参数的值:
DescribeKey
Encrypt
GenerateDataKey
GenerateDataKeyWithoutPlaintext
ReEncrypt
https://docs.aws.amazon.com/kms/latest/developerguide/programming-aliases.html