Всем привет!
В статье представлен пример того, как можно шифровать секреты, хранимые в etcd (data at rest encryption).
Процедура достаточно простая:
🍭 Необходимо сгенерировать произвольный ключ, который будет использован для шифрования
🍭 Подготовить манифест для
kind: EncryptionConfiguration, указав в нем недавно созданный ключ🍭 «Активировать» флаг
--encryption-provider-config=%path/to/file% в манифесте kube-apiserver🍭 Настроить необходимые mounts и готово! Все «вновь созданные секреты будут зашифрованы в etcd.
Что делать с теми, что уже были? Ответ можно найти в статье, также как и информацию по обновлению (ротации) используемого ключа шифрования.
Кстати, это еще и одна из рекомендаций – 1.2.30, прописанная в CIS Kubernetes Benchmark, v1.23. При помощи подобного подхода можно шифровать не только Secrets, но и другие ресурсы. Подробности описания компонентов манифеста можно посмотреть в документации.
Обратная процедура – «расшифровать все» проста: необходимо поместить параметр
identity: {} первым в списке providers