Managing Yandex Key Management Service keys with Hashicorp Terraform
The Terraform provider for Yandex Cloud supports the use of Yandex Key Management Service keys.
Adding keys
To create a key:
-
Describe the parameters of the
yandex_kms_symmetric_keyresource in the configuration file:resource "yandex_kms_symmetric_key" "key-a" { name = "<key_name>" description = "<key_description>" default_algorithm = "AES_128" rotation_period = "8760h" deletion_protection = true lifecycle { prevent_destroy = true } }Where:
-
name: Key name. The name format is as follows:- It must be from 2 to 63 characters long.
- It can only contain lowercase Latin letters, numbers, and hyphens.
- It must start with a letter and cannot end with a hyphen.
-
description: Key description. -
default_algorithm: Encryption algorithm. The possible values areAES-128,AES-192, orAES-256. -
rotation_period: Rotation period (how often to change key versions). To create a key without automatic rotation, do not specify therotation_periodparameter. -
deletion_protection: Key deletion protection. To create a key without deletion protection, do not specify thedeletion_protectionparameter. -
lifecycle.prevent_destroy: Key deletion protection when running Terraform commands. To create a key without such protection, do not specify thelifecyclesection.
Warning
Deleting a KMS key destroys all data encrypted with that key: the data becomes unrecoverable after the key is deleted. The
deletion_protectionparameter and thelifecyclesection are required to prevent the deletion of the key (e.g., with theterraform destroycommand).For more information about resource parameters in Terraform, see the provider documentation.
-
-
Check the configuration using this command:
terraform validateIf the configuration is correct, you will get this message:
Success! The configuration is valid. -
Run this command:
terraform planThe terminal will display a list of resources with their parameters. No changes will be made at this step. If the configuration contains any errors, Terraform will point them out.
-
Apply the configuration changes:
terraform apply -
Confirm the changes: type
yesinto the terminal and press Enter.This will create all the resources you need in the specified folder. You can check the new resources and their configuration using the management console
or these CLI commands:yc kms symmetric-key list
Managing key access
To manage access to keys in Terraform, assign the necessary roles for the folder that contains the key.
For example, assign the kms.keys.encrypterDecrypter role to the service account permitting it to encrypt and decrypt data with keys from a specific folder:
resource "yandex_resourcemanager_folder_iam_member" "admin" {
folder_id = "<folder_ID>"
role = "kms.keys.encrypterDecrypter"
member = "serviceAccount:<service_account_ID>"
}