TGViewer
ITTales :(){ :|:& };: ITTales :(){ :|:& };: @ittales · 1.68K subscribers
Post #724 2.45K
Заопенсорсили ещё один наш инструмент — keycloak-kms-proxy.

Начну с проблемы. Keycloak хранит PII пользователей — email, имя, фамилию, атрибуты и т.д. — в своей базе открытым текстом. Согласно GDPR эти данные считаются персональными и должны быть защищены в состоянии покоя. Обычное storage encryption или шифрование на стороне PostgreSQL помогают лишь частично: ключ всё равно живёт рядом с данными, внутри Postgres, а ещё такой подход не позволяет нормально ротировать ключи без остановки сервиса.

Есть несколько неофициальных плагинов, решающих эту задачу, например Keycloak-PII-Data-Encryption-Provider. Но и у них хватает ограничений: жёсткая привязка к версии Keycloak, интеграция на уровне Java и статический ключ, передаваемый через переменную окружения.

Мы пошли другим путём и сделали прозрачный прокси на уровне wire-протокола PostgreSQL. Он встаёт между Keycloak и его Postgres-базой: Keycloak думает, что работает с обычным Postgres, а прокси на лету шифрует нужные колонки при записи и расшифровывает их при чтении.

Само решение построено по тем же принципам, что и механизм KMSv2 в Kubernetes.

Каждое зашифрованное значение самоописываемое ($KKP$...), поэтому прокси спокойно работает с частично зашифрованной базой, пока backfill-утилита постепенно шифрует оставшиеся записи. Ротация KEK в Vault полностью прозрачна: версия ключа хранится вместе с каждым завёрнутым DEK, поэтому старые данные продолжают расшифровываться без каких-либо миграций.

В Cozystack это уже встроено в системный пакет Keycloak как опциональная возможность. Достаточно включить флаг шифрования в Helm-чарте — прокси автоматически разворачивается, а Keycloak переподключается к нему без дополнительной настройки.
GitHub GitHub - cozystack/keycloak-kms-proxy: Transparent PostgreSQL wire-protocol proxy that encrypts Keycloak PII columns at the database… Transparent PostgreSQL wire-protocol proxy that encrypts Keycloak PII columns at the database boundary, keeping the data key in a KMS outside PostgreSQL. - cozystack/keycloak-kms-proxy
  • 🔥 32
  • 👍 5
  • 🤔 5
  • ⚡ 1
More from @ittales
  1. Sep 21, 2026TL;DR. Мы выкатили Татарнетес — национальную обёртку над Kubernetes, где команды, сообщени…
  2. Aug 10, 2026Чему меня научили десятки AI-агентов: как я в качестве эксперимента написал хранилище Bloc…
  3. Aug 1, 2026Кстати, вчера собрал образ Talos с shell на консоли — чтобы видеть, что происходит на ноде…
  4. Jul 30, 2026Наконец-то выехал перевод в официальный блог Kubernetes В ходе публикации пришли мейнтейне…
  5. Jul 24, 2026Опенсорснули aeman — инструмент для краткосрочного планирования, который мы используем в Æ…
  6. Jul 10, 2026Марафон LPE уязвимостей в Linux продолжается. Команда Nebula Security раскрыла GhostLock (…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →