如何让密码不出现在 Terraform 代码文件中

如何让密码不出现在 Terraform 代码文件中

我正在 Azure 中创建一个 Azure SQL 服务器:

我有一个variables.tf文件,其中当前有管理员密码:

variable "sql_server_admin_password" {
  description = "admin password"
  default = "xxxx"  
}

然后我在主文件中引用它:

resource "azurerm_sql_server" "main" {
  name                         = var.sql_server_name
  resource_group_name          = azurerm_resource_group.main.name
  location                     = azurerm_resource_group.main.location
  version                      = "12.0"
  administrator_login          = var.sql_server_admin_login
  administrator_login_password = var.sql_server_admin_password
}

我不想将这个文件放入源代码管理中。

是否有一种 terraform 方法可以将管理员用户名和密码放入环境变量中?

答案1

取决于您的部署设置方式。您可以生成一个密码 (random_password) 并将其安全地存储在密钥库中,并在部署 SQL 时进一步引用它。您还可以引用现有的密钥库密钥作为您的密码。

Terraform 中与此相关的一些链接:

在 Terraform 中创建密钥保管库:https://www.terraform.io/docs/providers/azurerm/r/key_vault.html

从现有的 Azure Key Vault 获取机密: https://www.terraform.io/docs/providers/azurerm/d/key_vault_secret.html

与 Azure Key Vault 相关的信息可以在这里找到:https://azure.microsoft.com/en-us/services/key-vault/

答案2

作为最简单的选项,您可以删除变量的默认值并在执行terraform plan或时传递变量apply。只需export TF_SQL_SERVER_ADMIN_PASSWORD=<password>运行 terraform 命令即可。此外,它可以在构建期间安全地传递。集成 Azure KeyVault 或 HashiCorp Vault 来检索变量是一种更复杂但更安全的方法。

相关内容