AWS lambda 和 kms 密钥别名
Posted
技术标签:
【中文标题】AWS lambda 和 kms 密钥别名【英文标题】:AWS lambda and kms key aliases 【发布时间】:2022-01-01 00:09:05 【问题描述】:我有一个使用 kms 的 lambda 函数
"Sid": "KMSDecryption",
"Effect": "Allow",
"Action": [
"kms:Encrypt",
"kms:Decrypt",
"kms:ReEncrypt*",
"kms:GenerateDataKey*",
"kms:DescribeKey"
],
"Resource": [
"$KMSArn"
]
最初我在 terraform 中将其设置为仅使用别名,但这不起作用我必须引用“arn”以允许 lambda 访问,这是有意义的。
....
.....
policy_file = templatefile("lambda_policy.json",
KMSArn = data.aws_kms_alias.key_alias.target_key_arn
)
data "aws_kms_alias" "key_alias"
name = "alias/kms_test"
我的问题是,现在 lambda 策略在其策略中包含我在控制台中看到的“arn”。旋转密钥时会发生什么,AWS 是否还会更新 lambda 上的 arn 以指向新密钥...
或
有没有办法在 lambda 策略中引用别名以使其无关紧要?
【问题讨论】:
【参考方案1】:您需要在策略中引用 ARN。你不应该担心旋转。来自documentation:
密钥轮换仅更改 KMS 密钥的密钥材料,即 用于加密操作的加密材料。知识管理系统 key 是同一个逻辑资源,不管有没有或者有多少 次其关键材料的变化。 KMS 密钥的属性不 如下图所示。
【讨论】:
以上是关于AWS lambda 和 kms 密钥别名的主要内容,如果未能解决你的问题,请参考以下文章
如何将特定 AWS API Gateway 阶段连接到特定 AWS lambda 别名
如何将AWS API网关阶段指向特定的lambda函数别名?
在定义单个 AWS::Serverless::Function 的 SAM 模板中指定多个 API 阶段和 Lambda 别名
将特定 AWS API Gateway 阶段连接到 CloudFormation 模板中的特定 Lambda 别名
由于错误 AccessDeniedException(Lambda 别名作为 Cognito 触发器),AWS Cognito 用户池引发 PreSignUp 调用失败