OIDC Аутентификация

Обновлено 20 августа 2025 г.

OIDC Аутентификация — приложение для аутентификации пользователей в кластере Managed Service for Kubernetes с помощью сторонних провайдеров аутентификации, поддерживающих протоколы идентификации OIDC, Active Directory, LDAP или Github. Приложение использует протокол OAuth 2.0 для выпуска токена доступа пользователя по идентификатору и секретному ключу, предоставленному провайдером.

Приложение состоит из двух компонентов:

  • Concierge — прокси-сервер для Kubernetes API.
  • Supervisor — OIDC-сервер авторизации кластера для прокси-сервера.

Приложение использует сервис Pinniped для обеспечения работы.

Инструкция по развертыванию
  1. Зарегистрируйте в OIDC-сервере организации нового OAuth-клиента и получите его идентификатор и секретный ключ.

    О том, как получить идентификатор и секретный ключ, см. в официальной документации по настройке провайдеров идентификации.

  2. Зарезервируйте публичный IP-адрес для сервиса Supervisor с помощью Yandex Virtual Private Cloud.

  3. Зарегистрируйте DNS-запись для сервиса Supervisor (обычно это поддомен supervisor.<ваш_домен>) с помощью Yandex Cloud DNS и привяжите к ней зарезервированный IP-адрес.

  4. Выпустите сертификат для зарегистрированного домена Supervisor с помощью Yandex Certificate Manager.

  5. Получите содержимое выпущенного сертификата и сохраните его в файл cert.json:

    yc certificate-manager certificate content <идентификатор_сертификата> \
      --format json > cert.json
    
  6. Задайте настройки приложения:

    • Пространство имен — создайте новое пространство имен pinniped-concierge. Приложение использует его по умолчанию. Если вы оставите пространство имен по умолчанию, OIDC Аутентификация может работать некорректно.
    • Название приложения — укажите название приложения.
    • OIDС-домен компании — укажите URL основного домена вашей организации.
    • Идентификатор клиента — укажите идентификатор OAuth-клиента.
    • Секрет клиента — укажите секретный ключ OAuth-клиента.
    • Дополнительные права доступа — укажите дополнительные права доступа для токена.
    • Поле в токене с именем пользователя — укажите название поля, в котором содержится имя пользователя.
    • Поле в токене с группой — укажите название поля, в котором содержится группа пользователя.
    • Домен супервайзера — укажите созданный ранее поддомен сервиса Supervisor.
    • IP-адрес супервайзера — укажите зарезервированный ранее IP-адрес.
    • Доменный сертификат супервайзера — вставьте содержимое файла cert.json.
  7. Нажмите кнопку Установить.

  8. Дождитесь перехода приложения в статус Deployed.

Для доступа к ресурсам кластера:

  1. Назначьте роли в кластере, соответствующие группам в организации. Например:

    kind: ClusterRoleBinding
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
      name: clusterroleall-user
    subjects:
    - kind: User
      name: <user_account_id_в_организации>
    roleRef:
      kind: ClusterRole
      name: <роль_в_кластере>
      apiGroup: rbac.authorization.k8s.io
    
  2. Выполните действия на компьютере с правами доступа к ресурсам Supervisor в кластере:

    1. Установите утилиту pinniped-cli .

    2. Выполните команду для получения публичного конфигурационного файла:

      pinniped get kubeconfig \
        --upstream-identity-provider-flow browser_authcode > public_config.yaml
      

      Для провайдеров LDAP и Active Directory в команде используются другие параметры:

      pinniped get kubeconfig \
        --upstream-identity-provider-flow cli_password > public_config.yaml 
      

      Подробнее о параметрах команды см. в официальной документации.

  3. Установите на компьютере сотрудника необходимые ресурсы:

    1. Установите утилиту pinniped-cli.
    2. Скопируйте публичную конфигурацию. В файле публичной конфигурации укажите локальный путь к утилите pinniped-cli в параметре users.user.exec.command.
  4. Укажите файл публичной конфигурации при выполнении команд в кластере, например:

    kubectl get namespaces \
      --kubeconfig "$HOME/public_config.yaml"
    

    При первом выполнении команды kubectl сотрудник будет перенаправлен в браузер для OIDC-аутентификации и выпуска OAuth-токена доступа к кластеру.

    Далее команды kubectl будут выполняться без прохождения аутентификации до истечения срока действия токена доступа.

Тип тарификации
Free
Тип
Приложение Kubernetes®
Категория
Безопасность
Издатель
Yandex Cloud
Техническая поддержка

Служба технической поддержки Yandex Cloud отвечает на запросы 24 часа в сутки, 7 дней в неделю. Доступные виды запросов и срок их обработки зависят от тарифного плана. Подключить платную поддержку можно в консоли управления. Подробнее о порядке оказания технической поддержки.

Состав продукта
Helm-чартВерсия
Pull-команда
Документация
yandex-cloud/oidc-authenticator/chart/oidc-authenticator0.1.0Открыть
Docker-образВерсия
Pull-команда
yandex-cloud/oidc-authenticator/pinniped-server1745409111637681582974706894465763185749068690538v0.38.0
Лицензионное соглашение
Используя данный продукт, вы соглашаетесь с Условиями использования Yandex Cloud Marketplace
Тип тарификации
Free
Тип
Приложение Kubernetes®
Категория
Безопасность
Издатель
Yandex Cloud