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 Lambda 别名简介

如何将特定 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 调用失败