如何隐藏 terraform aws_ssm_parameter 值

How to hide terraform aws_ssm_parameter values

我创建了一个 SSM 参数,其类型为 SecureString,键值为 (pasword=Passwor@d123)。我正在尝试使用在计划输出中打印值的数据资源获取值。

data "aws_ssm_parameter" "foo" {
 name = "password"
}

module "lamda_env_vars" {
New_password = data.aws_ssm_parameter.foo.value
}

plan output:-

New_paswword = Password@123

我试过如下加密。

data "aws_ssm_parameter" "foo" {
 name = "password"
with_decryption = false
}

module "lambda_env_vars" {
New_password = data.aws_ssm_parameter.foo.value
}

plan output:-
New_password = Q#iuws##)9ssdhs(some encryptrd value)

这里的问题是相同的加密哈希码被分配为我的 lambda 函数的值。

如何在改造计划时屏蔽值并为我的 lambda 函数获取纯文本值?

通常,您只需将 SSM 的 SecretString 参数的名称 作为环境变量传递给您的 lambda 函数。然后 lambda 函数将从 SSM Parameter Store 中获取它自己。

如果您想使用 with_decryption = false 的方法,那么您的 lambda 函数将不得不 调用 KMS decrypt API 来实际解密将密文转换为纯文本版本。

在这两种情况下,您函数的 执行角色 需要具有 KMS and/or SSM Parameter Store 的权限。