Управление ключами KMS с HashiCorp Terraform
Terraform-провайдер для Yandex Cloud поддерживает работу с ключами Yandex Key Management Service.
Добавление ключа
Чтобы создать новый ключ:
-
Опишите в конфигурационном файле параметры ресурса
yandex_kms_symmetric_key:resource "yandex_kms_symmetric_key" "key-a" { name = "<имя_ключа>" description = "<описание_ключа>" default_algorithm = "AES_128" rotation_period = "8760h" deletion_protection = true lifecycle { prevent_destroy = true } }Где:
-
name— имя ключа. Формат имени:- длина — от 2 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
description— описание ключа. -
default_algorithm— алгоритм шифрования. Возможные значения:AES-128,AES-192илиAES-256. -
rotation_period— период ротации (частота смены версии ключа по умолчанию). Чтобы создать ключ без автоматической ротации, не указывайте параметрrotation_period. -
deletion_protection— защита от удаления ключа. Чтобы создать ключ без защиты от удаления, не указывайте параметрdeletion_protection. -
lifecycle.prevent_destroy— защита от удаления ключа при выполнении команд Terraform. Чтобы создать ключ без такой защиты, не указывайте блокlifecycle.
Важно
Удаление ключа KMS равносильно уничтожению всех зашифрованных с его помощью данных — без ключа восстановить данные не получится. Параметр
deletion_protectionи блокlifecycleнеобходимы, чтобы обезопасить ключ от удаления (например, командойterraform destroy).Более подробную информацию о параметрах ресурсов в Terraform см. в документации провайдера.
-
-
Проверьте конфигурацию командой:
terraform validateЕсли конфигурация является корректной, появится сообщение:
Success! The configuration is valid. -
Выполните команду:
terraform planВ терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply -
Подтвердите изменения: введите в терминал слово
yesи нажмите Enter.После этого в указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
или с помощью команд CLI:yc kms symmetric-key list
Управление доступом к ключу
Для управления доступом к ключу через Terraform назначьте необходимые роли на каталог, содержащий ключ.
Например, назначьте на сервисный аккаунт роль kms.keys.encrypterDecrypter, дающую права шифровать и расшифровывать данные ключами из определенного каталога:
resource "yandex_resourcemanager_folder_iam_member" "admin" {
folder_id = "<идентификатор_каталога>"
role = "kms.keys.encrypterDecrypter"
member = "serviceAccount:<идентификатор_сервисного_аккаунта>"
}