在通过SAM/CloudFormation管理的Lambda函数中使用已经存在的KMS键



情况是:
使用SAM/CloudFormation创建lambda函数。附加一个策略以允许该函数访问现有的bucket(在同一区域中)。它看起来像这样:

MyFunction:
Type: AWS::Serverless::Function
Properties:
.....
Policies:
- Statement:
- Effect: Allow
Action:
- "s3:ListBucket"
- "s3:PutObject"
- "s3:GetObject"
Resource: 
- "arn:aws:s3:::my-great-existing-bucket"
- "arn:aws:s3:::my-great-existing-bucket/*"

这意味着:不修改现有桶的策略,新创建的lambda函数现在可以访问该桶。

但是在这种情况下,这个已经存在的桶是用一个现有的客户管理的KMS密钥额外加密的(同样在同一区域),所以Lambda函数的访问仍然会被拒绝。
目标是将使用现有密钥的策略也直接添加到云形成模板中。
我找到这个链接:https://docs.aws.amazon.com/kms/latest/developerguide/iam-policies.html

我的解释是,指定的目标通常只能通过另一种方式实现:需要修改KMS-key的策略。但是他们的Key当然不是通过云形成堆栈管理的,因此不能在这里管理(或者我错了吗?)

所以实现它的唯一方法是激活KMS-key的通用IAM策略?https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default-allow-root-enable-iam
这种理解正确吗?

所以实现它的唯一方法是为KMS-key激活一般IAM策略?

是的。. 如果您的客户管理的KMS密钥没有它,您必须修改KMS策略以允许lambda角色。如果你激活了一般的IAM policy,那么你只需要修改lambda执行角色的KMS密钥权限。

相关内容

最新更新