Skip to content

Encrypting secrets with KMS when transferring keys to the COI VM container in Yandex Cloud.

License

Notifications You must be signed in to change notification settings

yandex-cloud-examples/yc-encrypt-coi-secrets

Repository files navigation

Шифрование секретов средствами KMS при передачи их в контейнер ВМ COI Yandex.Cloud: Terraform

Проблематика

После развертывания контейнеров с помощью Container Optimized Image (COI) может возникнуть необходимость передать приватную информацию внутрь контейнера с помощью ENV. Из UI консоли в данном случае, в свойствах ВМ будут видны передарнные ENV в открытом виде. Возникает риск компрометации приватной информации.

Пример небезопасной конфигурации:

Небезопасная конфигурация

Пример безопасной передачи приватной информации в контейнер COI

Yandex Cloud KMS имеет возможность шифрования секретов в Terraform Предлагается использовать данную функцию для передачи зашифрованных секретов в контейнер в виде ENV, с последующей расшифровкой изнутри python приложения. Расшифровка секретов из python кода будет выполнена с помощью привязанного к ВМ COI сервисного аккаунта (с ролью KMS decrypter). Token сервисного аккаунта будет получен с помощью сервиса мета-даты.

Terraform пример выполняет:

  • развертывание тестовой инфраструктуры (сети, подсети)
  • создание тестового service account и его статических ключей
  • развертывание COI с контейнером на базе простого python приложения
  • создание KMS ключа и шифрование приватных данных (в данном случае статических ключей сервисного аккаунта)
  • приватные данные передаются в зашифрованном виде внутрь контейнера
  • простое python приложение внутри кода расшифровывет приватные данные и делает print в лог

Важно:

Данное решение не отменяет необходимости применения лучших практик защиты terraform конфигурации. Yandex Cloud Object Storage может выступать в роли terraform remote state и выполнять функции блокировки с помощью Yandex Database - https://github.com/yandex-cloud/examples/tree/master/terraform-ydb-state

Подготовка/Пререквизиты:

  • установить и настроить yc client
  • установить terraform
  • заполнить файл variables.tf своими данными
  • запустить terraform

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

В UI консоли мы видим секреты только в зашифрованном виде:

Безопасная конфигурация

В логах контейнера мы видим секреты в расшифрованном виде:

Безопасная конфигурация

About

Encrypting secrets with KMS when transferring keys to the COI VM container in Yandex Cloud.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published