nav-img
Evolution

Шифрование etcd в Managed Kubernetes

Managed Kubernetes поддерживает шифрование Secret и ConfigMap в etcd.

Настройки шифрования

По умолчанию шифрование etcd в кластере отключено. Включить его можно только при создании кластера. При включении шифрования необходимо выбрать ключ из сервиса Key Management.

В работающем кластере нельзя отключить шифрование или изменить ключ шифрования.

На пользовательском сервисном аккаунте, выбранном в кластере, должна быть назначена роль sckm.user. Если при создании кластера:

  • Выбрано автоматическое создание сервисного аккаунта, то роль sckm.user на этот сервисный аккаунт будет также назначена автоматически.

  • Выбран сервисный аккаунт, настроенный самостоятельно, то такому сервисному аккаунту необходимо назначить роль sckm.user.

Ротация ключа

При создании ключа шифрования в Key Management пользователь может задать период ротации ключа. Также пользователь может создать новую версию ключа шифрования вручную.

Важно помнить, что после ротации версии ключа шифрования нужно самостоятельно обновить ConfigMap и Secrets для их перезаписи с новой версией ключа. Сделать это можно с помощью команд:

kubectl get secrets --all-namespaces -o json | kubectl replace -f -
kubectl get configmap --all-namespaces -o json | kubectl replace -f -
Внимание

Если отключить или удалить старую версию ключа при не обновленных ConfigMap и Secrets, зашифрованные с помощью этой версии ключа данные будут утеряны.

Особенности шифрования

Для взаимодействия с Key Management используется преднастроенный KMS-плагин. В качестве KMS-провайдера Managed Kubernetes использует KMS v2, который поддерживает схему шифрования envelope encryption:

  1. Данные в etcd шифруются с помощью одноразового ключа шифрования данных (Data Encryption Key), который регулярно ротируется.

  2. DEK шифруется с помощью ключа шифрования ключа (Key Encryption Key).

  3. KEK хранится и управляется в сервисе Key Management.