Симметричное шифрование данных
В этом разделе вы узнаете, как в KMS шифровать и расшифровывать данные небольшого размера (до 32 КБ) с помощью CLI и API по схеме симметричного шифрования. Подробнее о возможных способах шифрования читайте в разделе Какой способ шифрования выбрать?
Перед началом работы
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
Зашифруйте данные
Команда зашифрует открытый текст, переданный в файле --plaintext-file
, и запишет полученный шифртекст в файл --ciphertext-file
.
--id
— идентификатор ключа KMS, должен быть указан один из флагов:--id
или--name
.--name
— название ключа KMS, должен быть указан один из флагов:--id
или--name
.--version-id
— (опционально) версия ключа KMS, которая будет использоваться для шифрования. По умолчанию используется основная.--plaintext-file
— входной файл с открытым текстом.--aad-context-file
— (опционально) входной файл с AAD-контекстом.--ciphertext-file
— выходной файл с шифртекстом.
yc kms symmetric-crypto encrypt \
--id abj76v82fics******** \
--plaintext-file plaintext-file \
--ciphertext-file ciphertext-file
Terraform
Terraform распространяется под лицензией Business Source License
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
Чтобы зашифровать данные:
-
Опишите в конфигурационном файле параметры ресурса
yandex_kms_secret_ciphertext
с указанием на ключ KMS в полеkey_id
:resource "yandex_kms_secret_ciphertext" "password" { key_id = "<идентификатор_ключа>" aad_context = "additional authenticated data" plaintext = "strong password" }
Где:
key_id
— идентификатор ключа KMS.aad_context
— (AAD-контекст).plaintext
— строка, которую нужно зашифровать.
Важно
Использование
yandex_kms_secret_ciphertext
позволяет скрыть секреты при разворачивании инфраструктуры, но в общем случае указаниеplaintext
иaad_context
в конфигурационном файле в открытом виде небезопасно. Секреты могут быть прочитаны из файла конфигурации, могут попасть в Terraform-state или могут быть прочитаны из логов выполнения.Более подробную информацию о параметрах ресурсов в Terraform см. в документации провайдера
. -
Проверьте конфигурацию командой:
terraform validate
Если конфигурация является корректной, появится сообщение:
Success! The configuration is valid.
-
Выполните команду:
terraform plan
В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply
-
Подтвердите изменения: введите в терминал слово
yes
и нажмите Enter.После этого доступ к шифртексту можно получить через переменную
ciphertext
, а к зашифрованным данным —plaintext
.Для проверки вы можете добавить в файл конфигурации следующий код с выходной переменной
decrypted_pass
.Внимание
Это небезопасно и может быть использовано только для тестирования.
output "decrypted_pass" { sensitive = true value = yandex_kms_secret_ciphertext.password.plaintext }
После обновления конфигурации можно проверить зашифрованные данные командой:
terraform output decrypted_pass
Результат:
"strong password"
Чтобы зашифровать данные, воспользуйтесь методом REST API encrypt для ресурса SymmetricCrypto или вызовом gRPC API SymmetricCryptoService/Encrypt.
О том, как шифровать и расшифровывать данные с помощью SDK Yandex Cloud читайте в разделе Шифрование данных с помощью SDK Yandex Cloud.
О том, как шифровать и расшифровывать данные с помощью AWS Encryption SDK
О том, как шифровать и расшифровывать данные с помощью Google Tink
Расшифруйте данные
Команда расшифрует шифртекст, переданный в файле --ciphertext-file
, и запишет полученный открытый текст в файл --plaintext-file
:
--id
— идентификатор ключа KMS, должен быть указан один из флагов:--id
или--name
.--name
— название ключа KMS, должен быть указан один из флагов:--id
или--name
.--ciphertext-file
— входной файл с открытым текстом.--aad-context-file
— (опционально) входной файл с AAD-контекстом.--plaintext-file
— выходной файл с шифртекстом.
yc kms symmetric-crypto decrypt \
--id abj76v82fics******** \
--ciphertext-file ciphertext-file \
--plaintext-file decrypted-file
Чтобы расшифровать данные, воспользуйтесь методом REST API decrypt для ресурса SymmetricCrypto или вызовом gRPC API SymmetricCryptoService/Decrypt.
О том, как шифровать и расшифровывать данные с помощью SDK Yandex Cloud читайте в разделе Шифрование данных с помощью SDK Yandex Cloud.
О том, как шифровать и расшифровывать данные с помощью AWS Encryption SDK
О том, как шифровать и расшифровывать данные с помощью Google Tink