Terraform 0.14.5中如何将本地变量设置为敏感类型?
在Terraform 0.14.5中处理本地敏感变量的最佳方式
Terraform 0.14.x没有内置的sensitive()函数,但可以通过以下几种实用方式实现本地变量的敏感隐藏,避免在Terraform Cloud控制台明文输出:
利用数据源的敏感属性传递:AWS Secrets Manager的
secret_string字段被AWS Provider默认标记为敏感数据。直接将该值解析后赋值给本地变量,Terraform会保留其敏感属性,运行时不会明文打印,会显示为(sensitive value)。依赖资源参数的敏感性:如果本地变量的值是传递给资源的敏感参数(比如云数据库的密码、API密钥字段),这类参数本身被Terraform标记为敏感。即使本地变量未显式处理,Terraform在输出时也会自动隐藏该值。示例代码:
locals { password = jsondecode(data.aws_secretsmanager_secret_version.secret_val.secret_string)["my_password"] } resource "aws_db_instance" "example" { # 该password参数默认敏感,会自动隐藏值 password = local.password }禁止在输出块中引用敏感本地变量:Terraform 0.14.x的
output块不支持sensitive参数,所以绝对不要将敏感的本地变量加入输出块,否则会明文泄露。这是最关键的防护措施。
额外注意:确保使用的AWS Provider是兼容Terraform 0.14.5的最新版本,旧版本可能未正确标记Secrets Manager的secret_string为敏感,导致值泄露。
内容的提问来源于stack exchange,提问作者i'i'i'i'i'i'i'i'i'i'i'i
相关产品推荐
相关产品推荐

