Я читаю все документы terraform об использовании субъекта службы с секретом клиента в файле CI или docker или чем-то еще, и я цитирую:
Мы рекомендуем использование принципала службы или идентификатора управляемой службы при неинтерактивном запуске Terraform (например, при запуске Terraform на сервере CI) и аутентификация с использованием CLI Azure при локальном запуске Terraform.
It затем подробно рассказывает о создании субъекта службы, а затем приводит ужасный пример в конце, когда идентификатор клиента и секрет клиента жестко закодированы в файле путем их сохранения в переменных среды:
export ARM_CLIENT_ID="00000000-0000-0000-0000-000000000000"
export ARM_CLIENT_SECRET="00000000-0000-0000-0000-000000000000"
export ARM_SUBSCRIPTION_ID="00000000-0000-0000-0000-000000000000"
export ARM_TENANT_ID="00000000-0000-0000-0000-000000000000"
или в блок провайдера terraform:
provider "azurerm" {
# Whilst version is optional, we /strongly recommend/ using it to pin the version of the Provider being used
version = "=1.43.0"
subscription_id = "00000000-0000-0000-0000-000000000000"
client_id = "00000000-0000-0000-0000-000000000000"
client_secret = "${var.client_secret}"
tenant_id = "00000000-0000-0000-0000-000000000000"
}
В нем есть симпатичная желтая рамка о том, что не делайте этого, но нет никаких подсказок, что делать.
Я не думаю client_secret
в переменной среды - это особенно хорошая идея.
Должен ли я использовать сертификат клиента и, если да, то же самое возникает вопрос о том, где сохранить конфигурацию.
Я хочу, если возможно, избежать azure -cli.
Azure -cli в любом случае не вернет секрет клиента.
Как мне go передать эти секреты в переменные окружения? Должен ли я положить их в хранилище или есть другой способ?