Перейти к содержанию

Доступ к Kubernetes через IdP: публичный клиент вместо секретов

7.0/10

Контекст

Самостоятельно разворачиваемые кластеры Kubernetes часто полагаются на статические сертификаты клиентов или долгоживущие токены, отзывать которые сложно, а безопасно передавать инженерам — невозможно. В результате отзыв прав при ротации кадров превращается в ручную рутину, а логи API-сервера содержат одинаковые учетные данные для всех команд.

Суть

Автор предлагает настроить аутентификацию через OIDC-провайдер (например, Keycloak), используя публичный клиент с механизмом PKCE (Proof Key for Code Exchange) вместо конфиденциального клиента. Распространение секретного ключа конфиденциального клиента на множество рабочих станций превращает его в статический пароль, тогда как PKCE защищает процесс авторизации без хранения секретов на клиенте за счет одноразового хэша. Утилита `kubectl` с плагином `kubelogin` выполняет вход через браузер и передает ID-токен, содержащий имя пользователя и группы, а `kube-apiserver` валидирует токен по публичным ключам IdP и передает группы в RBAC. Это позволяет управлять доступом и отзывать права исключительно через изменения групп в IdP без правки kubeconfig, а также обеспечивать точный аудит действий конкретных пользователей.

Вывод

Интеграция Kubernetes с OIDC через публичный клиент и PKCE устраняет необходимость рассылать статические секреты по машинам разработчиков и превращает управление доступом в процедуру на стороне identity-провайдера.