如何將密碼排除在 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) 並將其安全地儲存在 keyvault 中,並在部署 SQL 時進一步引用它。您也可以引用現有的 keyvault 機密作為您的密碼。

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 來檢索變數是一種更複雜但更安全的方法。

相關內容