OIDC Аутентификация
OIDC Аутентификация — приложение для аутентификации пользователей в кластере Managed Service for Kubernetes с помощью сторонних провайдеров аутентификации, поддерживающих протоколы идентификации OIDC, Active Directory, LDAP или Github. Приложение использует протокол OAuth 2.0 для выпуска токена доступа пользователя по идентификатору и секретному ключу, предоставленному провайдером.
Приложение состоит из двух компонентов:
- Concierge — прокси-сервер для Kubernetes API.
- Supervisor — OIDC-сервер авторизации кластера для прокси-сервера.
Приложение использует сервис Pinniped для обеспечения работы.
-
Зарегистрируйте в OIDC-сервере организации нового OAuth-клиента и получите его идентификатор и секретный ключ.
О том, как получить идентификатор и секретный ключ, см. в официальной документации по настройке провайдеров идентификации.
-
Зарезервируйте публичный IP-адрес для сервиса Supervisor с помощью Yandex Virtual Private Cloud.
-
Зарегистрируйте DNS-запись для сервиса Supervisor (обычно это поддомен
supervisor.<ваш_домен>) с помощью Yandex Cloud DNS и привяжите к ней зарезервированный IP-адрес. -
Выпустите сертификат для зарегистрированного домена Supervisor с помощью Yandex Certificate Manager.
-
Получите содержимое выпущенного сертификата и сохраните его в файл
cert.json:yc certificate-manager certificate content <идентификатор_сертификата> \ --format json > cert.json -
Задайте настройки приложения:
- Пространство имен — создайте новое пространство имен
pinniped-concierge. Приложение использует его по умолчанию. Если вы оставите пространство имен по умолчанию, OIDC Аутентификация может работать некорректно. - Название приложения — укажите название приложения.
- OIDС-домен компании — укажите URL основного домена вашей организации.
- Идентификатор клиента — укажите идентификатор OAuth-клиента.
- Секрет клиента — укажите секретный ключ OAuth-клиента.
- Дополнительные права доступа — укажите дополнительные права доступа для токена.
- Поле в токене с именем пользователя — укажите название поля, в котором содержится имя пользователя.
- Поле в токене с группой — укажите название поля, в котором содержится группа пользователя.
- Домен супервайзера — укажите созданный ранее поддомен сервиса Supervisor.
- IP-адрес супервайзера — укажите зарезервированный ранее IP-адрес.
- Доменный сертификат супервайзера — вставьте содержимое файла
cert.json.
- Пространство имен — создайте новое пространство имен
-
Нажмите кнопку Установить.
-
Дождитесь перехода приложения в статус
Deployed.
Для доступа к ресурсам кластера:
-
Назначьте роли в кластере, соответствующие группам в организации. Например:
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 -
Выполните действия на компьютере с правами доступа к ресурсам Supervisor в кластере:
-
Выполните команду для получения публичного конфигурационного файла:
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Подробнее о параметрах команды см. в официальной документации.
-
Установите на компьютере сотрудника необходимые ресурсы:
- Установите утилиту
pinniped-cli. - Скопируйте публичную конфигурацию. В файле публичной конфигурации укажите локальный путь к утилите
pinniped-cliв параметреusers.user.exec.command.
- Установите утилиту
-
Укажите файл публичной конфигурации при выполнении команд в кластере, например:
kubectl get namespaces \ --kubeconfig "$HOME/public_config.yaml"При первом выполнении команды
kubectlсотрудник будет перенаправлен в браузер для OIDC-аутентификации и выпуска OAuth-токена доступа к кластеру.Далее команды
kubectlбудут выполняться без прохождения аутентификации до истечения срока действия токена доступа.
Служба технической поддержки Yandex Cloud отвечает на запросы 24 часа в сутки, 7 дней в неделю. Доступные виды запросов и срок их обработки зависят от тарифного плана. Подключить платную поддержку можно в консоли управления. Подробнее о порядке оказания технической поддержки.
| Helm-чарт | Версия | Pull-команда | Документация |
|---|---|---|---|
| yandex-cloud/oidc-authenticator/chart/oidc-authenticator | 0.1.0 | Открыть |
| Docker-образ | Версия | Pull-команда |
|---|---|---|
| yandex-cloud/oidc-authenticator/pinniped-server1745409111637681582974706894465763185749068690538 | v0.38.0 |