Шифрование секретов в Hashicorp Terraform
Terraform-провайдер для Yandex.Cloud позволяет зашифровать секреты ключом KMS для последующего их использования в Terraform-конфигурации.
Открытый текст и ключ KMS, который следует использовать для шифрования, необходимо указать в блоке yandex_kms_secret_ciphertext:
resource "yandex_kms_secret_ciphertext" "encrypted_strong_password" {
key_id = "<ID ключа>"
aad_context = "additional authenticated data"
plaintext = "strong password"
}
После этого доступ к шифртексту можно получить через переменную ${yandex_kms_secret_ciphertext.encrypted_strong_password.ciphertext}
.
Важно
Использование yandex_kms_secret_ciphertext
позволяет скрыть секреты при разворачивании инфраструктуры, но в общем случае указание plaintext
и aad_context
в конфигурационном файле в открытом виде небезопасно. Секреты могут быть прочитаны из файла конфигурации, могут попасть в Terraform-state или могут быть прочитаны из логов выполнения.
Рекомендации для безопасного хранения секретных данных
- Не указывайте значения секретов в конфигурационном файле явно. Читайте их из хранилища, доступ к которому ограничен (например, использовать хранилища секретов).
- Рассмотрите возможность удаленного хранения Terraform-state.