README_RU.md 5.1 KB

Шифрование диска ВМ в Облаке с помощью YC KMS

Описание

  • Решение позволяет выполнять шифрование диска (кроме загрузочного) Yandex Compute Cloud ВМ с помощью Yandex Key Management Service и dm-crypt+LUKS
  • Развертывание решения и пререквизитов выполняется с помощью примера terraform скрипта

Схема работы

Схема

Описание работы решения

  • В cloud-init скрипт при развертывания ВМ передатися необходимые данные
  • Устанавливается ПО: awscli, cryptsetup-bin, curl
  • Передается созданный terraform ssh ключ
  • На ВМ выполняется bash скрипт с аргументом create: создается ключ шифрования с высокой энтропией методом KMS generateDataKey и записывается на диск в открытом и зашифрованном виде
  • Шифруется и монтируется второй диск ВМ на основе ключа шифрования
  • Ключ в зашифрованном виде копируется в Yandex Object Storage и удаляется из файловой системы
  • Скрипт с аргументом open добавляется в автозагрузку ОС (чтобы при перезагрузке автоматически примонтировать шифрованный диск)
  • В момент монтирования ключ шифрования скачивается из S3, расшифровывается и по окончанию мониторования удаляется из файловой системы

Все операции с KMS и Object Storage выполняются с помощью токена сервисного аккаунта, привязанного к ВМ при ее создании

Описание аргументов скрипта:

  • create: Скрипт выполняет создание ключа с высокой энтропией методом KMS generateDataKey
  • open: Монтирование зашифрованного диска в расшифрованный объект
  • close: Размонтирование зашифрованного устройства
  • erase: Удаление исходного устройства

Пререквизиты (настраиваются с помощью примера Terraform скрипта):

  • установить на ВМ yc client
  • создать сервисную УЗ
  • создать ключ KMS
  • назначить права на ключ KMS созданному сервисному аккаунту (kms.keys.encrypterDecrypter)
  • создать Object Storage Bucket
  • назначить права на Object Storage bucket созданному сервисному аккаунту (storage.uploader, storage.viewer + BucketPolicy)
  • назначить на ВМ сервисную УЗ
  • установить aws cli (apt install awscli)
  • установить cryptsetup (apt install cryptsetup-bin)

Запуск решения

  • Скачайте файлы
  • Заполните файл variables.tf
  • Выполните команды terraform:
terraform init
terraform apply

Итоги развертывания

  • Проверить статус примонтированных объектов:
lsblk

Статус

  • Проверить статус шифрования диска:
cryptsetup status encrypted1

Статус

  • Проверить диск на другой ВМ: Создать snapshot диска:

Снапшот

  • Создать ВМ с диском из snapshot: Создание ВМ

  • Попробовать примонтировать диск:

sudo mount /dev/vdb /mnt

Результат теста