执行terraform plan
时,如果状态中存在azurerm_kubernetes_cluster
(Azure)资源,terraform将打印来自kube_config
的一些敏感信息。
示例打印输出:(所有...
值都会被打印)
kube_config = [
{
client_certificate = (...)
client_key = (...)
cluster_ca_certificate = (...)
host = (...)
password = (...)
}
我不确定这些值中的哪个是敏感的,但是password
可能是...正确吗?
另一方面,terraform似乎对哪些值敏感是 的知识,因为它确实以这种方式打印client_secret
:
service_principal {
client_id = "(...)"
client_secret = (sensitive value)
}
所以,我的问题是:
我们使用的版本:
provider "azurerm" {
version = "~>1.37.0"
}
这是有问题的,原因是我们在Github PR评论中提出了计划。
谢谢
答案 0 :(得分:0)
那些值真的敏感吗?
是的,有敏感数据。实际上,它们是您用来控制AKS集群所需的配置。这是AKS凭证。我认为有必要输出这些数据,只是假设您只有Terraform并使用它来创建AKS集群,如果Terraform不输出凭据,则您将无法控制AKS集群。
如果是这样,是否有一种方法可以指示Terraform掩盖 计划?
根据上面的解释,您应该不会对Terraform状态文件中的敏感数据犯错。您需要关心的是如何保护状态文件。我建议您将Terraform状态文件存储在Azure存储中,然后可以对其进行加密。请遵循Store Terraform state in Azure Storage中的步骤。
答案 1 :(得分:0)
Terraform 现在能够将变量设置为敏感,并将输出设置为敏感。
变量示例:
variable "user_information" {
type = object({
name = string
address = string
})
sensitive = true
}
输出示例:
output "db_password" {
value = aws_db_instance.db.password
description = "The password for logging in to the database."
sensitive = true
}
但是,自 2021 年 7 月 1 日起,对于并非源自敏感输入的内容,将无法隐藏计划输出。
参考文献: