Шифрование 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:
-
Данные в etcd шифруются с помощью одноразового ключа шифрования данных (Data Encryption Key), который регулярно ротируется.
-
DEK шифруется с помощью ключа шифрования ключа (Key Encryption Key).
-
KEK хранится и управляется в сервисе Key Management.
- Настройки шифрования
- Ротация ключа
- Особенности шифрования