как убрать пароли из файла кода terraform

как убрать пароли из файла кода terraform

Я создаю сервер Azure SQL в Azure:

У меня есть 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 secret, чтобы использовать его в качестве пароля.

Некоторые ссылки по теме от Terraform:

Создание хранилища ключей в Terraform:https://www.terraform.io/docs/providers/azurerm/r/key_vault.html

Извлеките секрет из существующего хранилища ключей Azure: 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 для извлечения переменных — более сложный, но более безопасный способ.

Связанный контент