Установка OIDC Аутентификация
OIDC Аутентификация — приложение для аутентификации пользователей в кластере Managed Service for Kubernetes с помощью сторонних провайдеров аутентификации, поддерживающих протоколы идентификации OIDC
Приложение состоит из двух компонентов:
- Concierge — прокси-сервер для Kubernetes API.
- Supervisor — OIDC-сервер авторизации кластера для прокси-сервера.
Приложение использует решение Pinniped
Перед началом работы
-
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду
yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров--folder-nameили--folder-id. -
Зарегистрируйте в 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
Установка OIDC Аутентификация с помощью Yandex Cloud Marketplace
-
Перейдите на страницу каталога
и выберите сервис Managed Service for Kubernetes. -
Нажмите на имя нужного кластера Managed Service for Kubernetes и выберите вкладку
Marketplace. -
В разделе Доступные для установки приложения выберите OIDC Аутентификация и нажмите кнопку Перейти к установке.
-
Задайте настройки приложения:
- Пространство имен — создайте новое пространство имен
pinniped-concierge. Приложение использует его по умолчанию. Если вы оставите пространство именdefault, OIDC Аутентификация может работать некорректно. - Название приложения — укажите название приложения.
- OIDC-домен компании — укажите URL основного домена вашей организации.
- Идентификатор клиента — укажите идентификатор OAuth-клиента.
- Секрет клиента — укажите секретный ключ OAuth-клиента.
- Дополнительные права доступа — укажите дополнительные права доступа для токена.
- Поле в токене с именем пользователя — укажите название поля, в котором содержится имя пользователя.
- Поле в токене с группой — укажите название поля, в котором содержится группа пользователя.
- Домен супервайзера — укажите созданный ранее поддомен сервиса Supervisor.
- IP-адрес супервайзера — укажите зарезервированный ранее IP-адрес.
- Доменный сертификат супервайзера — вставьте содержимое файла
cert.json.
- Пространство имен — создайте новое пространство имен
-
Нажмите кнопку Установить.
-
Дождитесь перехода приложения в статус
Deployed.
Установка с помощью Helm-чарта
-
Установите менеджер пакетов Helm
версии не ниже 3.8.0. -
Установите kubectl
и настройте его на работу с созданным кластером. -
Для установки Helm-чарта
с приложением OIDC Аутентификация выполните команду:helm pull oci://cr.yandex/yc-marketplace/yandex-cloud/external-secrets/chart/external-secrets \ --version 0.1.0 \ --untar && \ helm install \ --namespace pinniped-concierge \ --create-namespace \ --set domain=<основной_домен_организации> \ --set client_id=<идентификатор_OAuth-клиента> \ --set client_secret=<секретный_ключ_OAuth-клиента> \ --set username_claim=<поле_токена_с_именем_пользователя> \ --set group_claim=<поле_токена_с_группой> \ --set domain=<поддомен_сервиса_Supervisor_организации> \ --set ip=<IP-адрес_поддомена_сервиса_Supervisor> \ --set additional_scopes=<дополнительные_права_доступа_токена> \ --set-file certificate=<путь_к_файлу_cert.json> \ oidc-authenticator ./oidc-authenticator/Эта команда создаст новое пространство имен, необходимое для работы OIDC Аутентификации.
Примечание
Если вы используете версию Helm ниже 3.8.0, добавьте в начало команды строку
export HELM_EXPERIMENTAL_OCI=1 && \, чтобы включить поддержку Open Container Initiative (OCI) в клиенте Helm.
Получение доступа к кластеру
-
Назначьте роли в кластере, соответствующие пользователю в организации.
Пример назначения роли
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выполняются без прохождения аутентификации до истечения срока действия токена доступа.