Amazon web services 如果S3中的代码文件是KMS加密的,AWS CloudData如何访问该文件?
当S3存储桶中的Lambda代码文件未加密时,我通过CloudFormation进行的Lambda函数部署工作正常,但在使用KMS加密代码文件时失败 我有一个AWS CloudFormation堆栈,其中包含Lambda资源。我的Python代码ZIP文件位于S3存储桶中。我的CFN模板中的Lambda资源包含指向zip所在的S3Bucket和S3Key的“Code”属性。bucket策略允许我的角色执行操作Amazon web services 如果S3中的代码文件是KMS加密的,AWS CloudData如何访问该文件?,amazon-web-services,encryption,amazon-s3,lambda,Amazon Web Services,Encryption,Amazon S3,Lambda,当S3存储桶中的Lambda代码文件未加密时,我通过CloudFormation进行的Lambda函数部署工作正常,但在使用KMS加密代码文件时失败 我有一个AWS CloudFormation堆栈,其中包含Lambda资源。我的Python代码ZIP文件位于S3存储桶中。我的CFN模板中的Lambda资源包含指向zip所在的S3Bucket和S3Key的“Code”属性。bucket策略允许我的角色执行操作s3:GetObject,s3:PutObject,s3:ListBucket。当代码Z
s3:GetObject
,s3:PutObject
,s3:ListBucket
。当代码ZIP文件未加密时,堆栈构建工作正常。但是,当我在bucket中使用KMS加密的zip文件时,会出现以下错误:
您的访问已被S3拒绝,请确保您的请求凭据有权获取my bucket/my folder/sample.zip的对象。S3错误代码:AccessDenied。S3错误消息:访问被拒绝
我是否需要增强S3存储桶策略以支持访问KMS加密文件?这是怎么做到的?(错误消息似乎有误导性,因为我的bucket策略已经允许我的角色
GetObject
访问。)谢谢。由于您几乎可以确定加密对象的请求失败,因此必须向您引用的“角色”授予使用KMS CMK的权限,并且必须通过KMS密钥策略完成(和/或IAM政策)
如果您使用的是客户管理的CMK,则可以将IAM角色作为关键用户引用和添加。如果您使用的是AWS管理的CMK(可通过AWS图标识别),则可以将权限策略添加到IAM角色,如下所示:
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Action": [
"kms:*"
],
"Resource": [
"arn:aws:kms:*:account_id:key/key_id"
]
}
}
注: