问题描述
在Terraform中,当我在一个类型为aws_ecs_task_definition
的资源中,我的计划(plan)中有一行看起来像这样的内容:
~ container_definitions = (sensitive) # 强制替换
原则上,这可能会执行任何操作 – 删除所有我的容器,启动比特币挖矿容器等等。
有没有办法可以查看这些数据,包括旧值和新值?
解决方案
请注意以下操作注意版本差异及修改前做好备份。
方案1
Terraform将敏感属性标记为敏感时,它会始终在任何面向人类的输出中隐藏该值。然而,实际值在机器可读的输出中仍然是可用的。这主要是为了与外部软件集成的目的,但如果需要的话,您也可以直接检查机器可读的输出。
您可以像这样获取一个机器可读(JSON)格式的计划:
terraform plan -out=tfplan
terraform show -json tfplan
如果您打算直接在终端中读取它,可以使用jq
命令(如果已安装此实用工具)来进行处理:
terraform show -json tfplan | jq
jq
是一个非常有用的命令行工具,用于在终端中解析和处理JSON数据,它可以帮助您更清晰地查看输出。
方案2
对于涉及敏感数据的操作,务必采取适当的安全措施,确保数据不会暴露给不应访问的人员。
如果您要查看旧值和新值之间的差异,可以在Terraform执行计划时,将计划保存到文件中,并手动查看文件内容。但请注意,这样做可能会暴露敏感信息,因此务必采取适当的安全措施,确保文件不会被未经授权的人员访问。
请根据您的具体需求,选择适合的方案来检查敏感数据。无论您选择哪种方法,请确保在处理敏感信息时始终遵循最佳的安全实践。
正文完