OpenID Connect (OIDC) — это протокол аутентификации, работающий на основе OAuth 2.0. С его помощью можно настроить авторизацию пользователей в кластере Kubernetes через сервисы аутентификации, такие как Google, Keycloak, Dex, GitHub и другие.
Настройка OIDC-провайдера
Подключение OIDC-провайдера можно настроить при создании кластера — в разделе «Дополнения»:

Или позже — в разделе «Управление» в панели управления уже созданным кластером. Для настройки нажмите кнопку «Подключить».

При настройке укажите значения:
- Название подключения (обязательное поле) — имя подключения, отображается только в панели управления и не влияет на работу OIDC.
- Issuer URL (обязательное поле) — адрес OIDC-провайдера. Обычно это URL вида
https://<домен>/realms/<realm>для Keycloak илиhttps://accounts.google.comдля Google. - Client ID (обязательное поле) — идентификатор клиента, зарегистрированного у провайдера OIDC.
- Username claim — имя поля в ID-токене, которое Kubernetes будет использовать в качестве имени пользователя (например,
sub,preferred_usernameилиemail). - Groups claim — имя поля в ID-токене, содержащего список групп пользователя. Используется для настройки доступа через RBAC по группам.
После указания необходимых параметров нажмите на кнопку «Сохранить».
Установка kubelogin
Утилита kubelogin используется для получения ID-токена от провайдера и передачи его Kubernetes при выполнении команд через kubectl.
Скачайте архив с последней версией утилиты:
Распакуйте архив:
Сделайте бинарный файл исполняемым:
Переместите его в системный путь, чтобы можно было запускать из любой директории:
Получение токена
Для получения токена выполните команду:
После запуска откроется окно авторизации. Введите логин и пароль пользователя, которому необходимо выдать доступ. После успешной авторизации будет выведен токен в формате JSON.
Для просмотра содержимого токена выполните:
В результате будет показан объект с полями, например:
Одно из имен этих параметров вы указывали при настройке OIDC-провайдера в панели управления; по умолчанию используется sub.
Настройка RBAC
RBAC (Role-Based Access Control) — это механизм в Kubernetes, который управляет правами пользователей. Он используется для определения того, какие ресурсы может просматривать или изменять пользователь. Более полную информацию вы можете найти в официальной документации Kubernetes.
Для настройки RBAC создадим манифест oidc-access.yaml со следующим содержанием:
Укажите значение поля sub из токена в параметре name. Это даст полные права (cluster-admin) конкретному пользователю, авторизованному через OIDC.
Примените манифест:
Если вы хотите выдать доступ только на чтение ресурсов, например, подов в неймспейсе default, примените такой манифест:
Такой манифест позволит пользователю только просматривать поды в неймспейсе default, не давая доступ к другим ресурсам или пространствам имен.
Если при настройке OIDC-провайдера в панели управления вы указали «Username claim» со значением, например, preferred_username, то Kubernetes будет использовать его как имя пользователя. В этом случае вы можете упростить subjects.name и использовать читаемое имя, например:
Настройка kubectl для работы с OIDC
Для подключения к кластеру через OIDC добавьте пользователя в kubeconfig:
И назначьте текущий контекст:
Проверьте, что всё работает, выполнив:
Откроется окно браузера с запросом на вход. После авторизации команда должна выполниться без ошибок. Если возникает ошибка доступа — убедитесь, что пользователю выданы необходимые права через RBAC.
Если все работает корректно, вы можете отключить авторизацию по сертификатам в kubeconfig, чтобы использовать только OIDC. Для этого закомментируйте или удалите строки с данными клиента:
Это позволит использовать OIDC как единственный механизм аутентификации для выбранного пользователя.
Отключение OIDC-провайдера
Чтобы отключить OIDC-провайдера, перейдите в раздел «Управление» в панели управления кластером. Нажмите кнопку «Изменить» рядом с пунктом «OIDC-провайдер», затем — «Удалить».
После отключения провайдера все пользователи, подключенные через него, потеряют доступ к кластеру. При этом созданные правила RBAC сохраняются — их необходимо удалить вручную.
Найти связанные привязки ролей можно с помощью команды:
Удалить объекты можно командой:
Чтобы восстановить доступ, если в kubeconfig была указана OIDC-аутентификация, верните настройки с авторизацией по сертификатами или скачайте kubeconfig из панели управления.