mik*_*tak 3 amazon-web-services aws-lambda terraform
我刚刚将 lambda(使用 gitlab runner 中的 Terraform)部署到新的 aws 帐户。此管道将 lambda 部署到另一个(开发/测试)帐户没有任何问题,但是当我尝试部署到我的产品帐户时,出现以下错误:
我正在强调这样的说法:“密文是指不存在、不存在于该区域或不允许您访问的客户主密钥。”
我已确认环境变量的加密配置设置为使用默认的 aws/lambda 密钥而不是客户主密钥。这似乎与涉及客户主密钥的错误语言相矛盾......?
lambda 所承担的角色确实有一个包含两个 kms 操作的策略:
"Sid": "AWSKeyManagementService",
"Action": [
"kms:Decrypt",
"kms:DescribeKey"
]
Run Code Online (Sandbox Code Playgroud)
通过排除的过程,我想知道问题是否在于 kms 密钥上基于资源的策略的缺失。查看 kms 键,在 aws Managed 下,我发现 aws/lambda 键具有以下键策略:
{
"Version": "2012-10-17",
"Id": "auto-awslambda",
"Statement": [
{
"Sid": "Allow access through AWS Lambda for all principals in the account that are authorized to use AWS Lambda",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": [
"kms:Encrypt",
"kms:Decrypt",
"kms:ReEncrypt*",
"kms:GenerateDataKey*",
"kms:CreateGrant",
"kms:DescribeKey"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"kms:ViaService": "lambda.us-east-1.amazonaws.com",
"kms:CallerAccount": "REDACTED"#<-- Account where lambda deployed
}
}
},
{
"Sid": "Allow direct access to key metadata to the account",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::REDACTED:root"#<-- Account where lambda deployed
},
"Action": [
"kms:Describe*",
"kms:Get*",
"kms:List*",
"kms:RevokeGrant"
],
"Resource": "*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
这是非常令人费解的。任何指示表示赞赏!
| 归档时间: |
|
| 查看次数: |
3962 次 |
| 最近记录: |