Истории успеха наших клиентов — лучшие проекты
Вход/ Регистрация
На главную
25eb9e0a-a5a8-472a-ace7-940b8bd2adf0
Облачные сервисы

Подключение OIDC-провайдера к кластеру

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

Настройка OIDC-провайдера

Подключение OIDC-провайдера можно настроить при создании кластера — в разделе «Дополнения»:

Screenshot 05 27 25 18:34:35

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

Selection 273

При настройке укажите значения:

  • Название подключения (обязательное поле) — имя подключения, отображается только в панели управления и не влияет на работу 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 из панели управления.

Была ли статья полезна?
Ваша оценка очень важна