Шифрование 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.
- Настройки шифрования
- Ротация ключа
- Особенности шифрования