在通过 SAM/CloudFormation 管理的 Lambda 函数中使用现有的 KMS 密钥
Use already existing KMS key in Lambda functions that are managed through SAM/CloudFormation
情况是:
使用 SAM/CloudFormation 创建 lambda 函数。附加了一个策略以允许此函数访问现有存储桶(在同一区域中)。这看起来像这样:
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 函数仍然会被拒绝。
我们的目标是将使用现有密钥的策略也直接添加到云形成模板中。
我发现了这个 link:
https://docs.aws.amazon.com/kms/latest/developerguide/iam-policies.html
我的解释是,指定的目标通常只能以相反的方式实现:
您需要修改 KMS 密钥的策略。但是它们的密钥当然不是通过 Cloud Formation Stack 管理的,因此在这里无法管理(或者我错了吗?)。
所以实现它的唯一方法是为 KMS 密钥激活通用 IAM 策略?
https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default-allow-root-enable-iam
这样理解对吗?
So the only way to achieve it would be to activate general IAM Policies for the KMS-key?
是的。 正确。如果您的客户管理的 KMS 密钥没有它,您必须修改 KMS 策略以允许 lambda 角色。如果您激活通用 IAM 策略,那么您只需修改具有 KMS 密钥权限的 lambda 执行角色。
情况是:
使用 SAM/CloudFormation 创建 lambda 函数。附加了一个策略以允许此函数访问现有存储桶(在同一区域中)。这看起来像这样:
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 函数仍然会被拒绝。
我们的目标是将使用现有密钥的策略也直接添加到云形成模板中。
我发现了这个 link:
https://docs.aws.amazon.com/kms/latest/developerguide/iam-policies.html
我的解释是,指定的目标通常只能以相反的方式实现:
您需要修改 KMS 密钥的策略。但是它们的密钥当然不是通过 Cloud Formation Stack 管理的,因此在这里无法管理(或者我错了吗?)。
所以实现它的唯一方法是为 KMS 密钥激活通用 IAM 策略?
https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default-allow-root-enable-iam
这样理解对吗?
So the only way to achieve it would be to activate general IAM Policies for the KMS-key?
是的。 正确。如果您的客户管理的 KMS 密钥没有它,您必须修改 KMS 策略以允许 lambda 角色。如果您激活通用 IAM 策略,那么您只需修改具有 KMS 密钥权限的 lambda 执行角色。