我正在尝试在存储桶策略中使用 kms 密钥别名

我正在尝试在存储桶策略中使用 kms 密钥别名

我正在使用以下存储桶策略:

{ “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

相关内容