Создать OIDC-приложение в Yandex Identity Hub для интеграции с Harbor
Harbor
Чтобы пользователи вашей организации входили в Harbor с помощью OpenID Connect, создайте OIDC-приложение в Yandex Identity Hub и настройте интеграцию на стороне Yandex Identity Hub и Harbor.
Управлять OIDC-приложениями может пользователь, которому назначена роль organization-manager.oauthApplications.admin или выше.
Чтобы дать пользователям организации доступ к Harbor:
Создайте приложение
- Войдите в сервис Yandex Identity Hub
. - На панели слева выберите
Приложения. - В правом верхнем углу страницы нажмите
Создать приложение и в открывшемся окне:-
Выберите метод единого входа OIDC (OpenID Connect).
-
В поле Имя задайте имя создаваемого приложения:
harbor-oidc-app. -
В поле Каталог выберите каталог, в котором будет создан OAuth-клиент для приложения.
-
(Опционально) В поле Описание задайте описание приложения.
-
(Опционально) Добавьте метки:
- Нажмите Добавить метку.
- Введите метку в формате
ключ: значение. - Нажмите Enter.
-
Нажмите Создать приложение.
-
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.
-
Посмотрите описание команды CLI для создания OIDC-приложения:
yc organization-manager idp application oauth application create --help -
Создайте OAuth-клиент:
yc iam oauth-client create \ --name harbor-oauth-client \ --scopes openid,email,profile,groupsГде:
--name— имя OAuth-клиента.--scopes— набор атрибутов пользователей, которые будут доступны Harbor. Указаны атрибуты:openid— идентификатор пользователя. Обязательный атрибут.email— адрес электронной почты пользователя.profile— дополнительная информация о пользователе, такая как имя, фамилия, аватар.groups— группы пользователей в организации.
Результат:
id: ajeqqip130i1******** name: harbor-oauth-client folder_id: b1g500m2195v******** status: ACTIVEСохраните значение поля
id, оно понадобится для создания и настройки приложения. -
Создайте секрет для OAuth-клиента:
yc iam oauth-client-secret create \ --oauth-client-id <идентификатор_OAuth-клиента>Результат:
oauth_client_secret: id: ajeq9jfrmc5t******** oauth_client_id: ajeqqip130i1******** masked_secret: yccs__939233b8ac**** created_at: "2025-10-21T10:14:17.861652377Z" secret_value: yccs__939233b8ac********Сохраните значение поля
secret_value, оно понадобится для настройки Harbor. -
Создайте OIDC-приложение:
yc organization-manager idp application oauth application create \ --organization-id <идентификатор_организации> \ --name harbor-oidc-app \ --description "OIDC-приложение для интеграции с Harbor" \ --client-id <идентификатор_OAuth-клиента> \ --authorized-scopes openid,email,profile,groups \ --group-distribution-type assigned-groupsГде:
--organization-id— идентификатор организации, в которой нужно создать OIDC-приложение. Обязательный параметр.--name— имя OIDC-приложения. Обязательный параметр.--description— описание OIDC-приложения. Необязательный параметр.--client-id— идентификатор OAuth-клиента, полученный на втором шаге. Обязательный параметр.--authorized-scopes— укажите те же атрибуты, которые были указаны при создании OAuth-клиента.--group-distribution-type— укажитеassigned-groups, чтобы передавать в Harbor только группы, добавленные в приложение.
Результат:
id: ek0o663g4rs2******** name: harbor-oidc-app organization_id: bpf2c65rqcl8******** group_claims_settings: group_distribution_type: ASSIGNED_GROUPS client_grant: client_id: ajeqqip130i1******** authorized_scopes: - openid - email - profile - groups status: ACTIVE created_at: "2025-10-21T10:51:28.790866Z" updated_at: "2025-10-21T12:37:19.274522Z"
Настройте интеграцию
Чтобы настроить интеграцию Harbor с созданным OIDC-приложением в Yandex Identity Hub, выполните действия на стороне Yandex Identity Hub и Harbor.
Проверьте, что URL Harbor (портал и реестр) доступен по HTTPS с доверенным сертификатом: это требуется для корректных OIDC-перенаправлений.
Настройте OIDC-приложение на стороне Yandex Identity Hub
Получите учетные данные приложения
-
Войдите в сервис Yandex Identity Hub
. -
На панели слева выберите
Приложения и выберите нужное OIDC-приложение. -
На вкладке Обзор в блоке Конфигурация поставщика удостоверений (IdP) разверните секцию Дополнительные атрибуты и скопируйте значения параметров, которые необходимо задать на стороне Harbor:
ClientID— уникальный идентификатор приложения.OpenID Configuration— URL с конфигурацией всех необходимых для настройки интеграции параметров.
-
В блоке Секреты приложения нажмите кнопку Добавить секрет и в открывшемся окне:
- (Опционально) Добавьте произвольное описание создаваемого секрета.
- Нажмите Создать.
В окне отобразится сгенерированный секрет приложения. Сохраните полученное значение.
Важно
После обновления или закрытия страницы с информацией о приложении посмотреть секрет будет невозможно.
Если вы закрыли или обновили страницу, не сохранив сгенерированный секрет, используйте кнопку Добавить секрет, чтобы создать новый.
Чтобы удалить секрет, в списке секретов на странице OIDC-приложения в строке с нужным секретом нажмите значок
и выберите Удалить.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.
-
Получите информацию о созданном OIDC-приложении:
yc organization-manager idp application oauth application get <идентификатор_приложения>Где
<идентификатор_приложения>— это ID OIDC-приложения, полученный при создании.В результате вы получите информацию о приложении, включая:
id: ek0o663g4rs2******** name: harbor-oidc-app organization_id: bpf2c65rqcl8******** client_grant: client_id: ajeqqip130i1******** authorized_scopes: - openid - email - profile - groupsСохраните значение
client_id— это Client ID для настройки Harbor. -
Получите URL с конфигурацией OpenID Connect Discovery:
yc organization-manager idp application oauth application get <идентификатор_приложения> \ --format json | jq -r '.client_grant.issuer_uri'Результат будет выглядеть так:
https://kz.auth.yandex.cloud/oauth/<идентификатор_OAuth-клиента>Сохраните этот URL для проверки доступности OpenID Connect Discovery. В поле OIDC Provider Endpoint в Harbor укажите базовый адрес провайдера:
https://kz.auth.yandex.cloud(без суффикса/.well-known/openid-configuration). -
Используйте секрет OAuth-клиента, который был сохранен при создании приложения на предыдущем шаге. Если вы не сохранили секрет, создайте новый:
yc iam oauth-client-secret create \ --oauth-client-id <идентификатор_OAuth-клиента>Сохраните значение
secret_valueиз результата команды — это Client Secret для настройки Harbor.
Настройте Redirect URI
- Войдите в сервис Yandex Identity Hub
. - На панели слева выберите
Приложения и выберите нужное OIDC-приложение. - Справа сверху нажмите
Редактировать и в открывшемся окне:-
В поле Redirect URI укажите эндпоинт в формате:
https://<домен_Harbor>/c/oidc/callback -
В поле Scopes отметьте атрибут
groups (группы пользователя в организации)и выберитеТолько назначенные группы. -
Нажмите Сохранить.
-
Обновите OAuth-клиент, указав Redirect URI:
yc iam oauth-client update \
--id <идентификатор_OAuth-клиента> \
--redirect-uris "https://<домен_Harbor>/c/oidc/callback"
Где:
<идентификатор_OAuth-клиента>— идентификатор OAuth-клиента, полученный при его создании.--redirect-uris— эндпоинт callback Harbor, напримерhttps://reg.example.com/c/oidc/callback.
Результат:
id: ajeiu3otac08********
name: harbor-oauth-client
redirect_uris:
- https://reg.example.com/c/oidc/callback
scopes:
- openid
- email
- profile
- groups
folder_id: b1gkd6dks6i1********
status: ACTIVE
Настройте Harbor
Выполняйте действия на стороне Harbor под учетной записью системного администратора.
Установите Harbor
-
Если у вас еще нет реестра Harbor, установите его на виртуальной машине: заранее установите Docker Engine версии
20.10.10или выше и плагинdocker compose. Инструкции по установке Docker для Ubuntu см. в официальной документации Docker . -
Подключитесь к VM по SSH, перейдите в каталог распакованного установщика Harbor и убедитесь, что Docker и
docker composeдоступны:docker --version docker compose version -
Создайте файл конфигурации из шаблона:
cp harbor.yml.tmpl harbor.yml -
Откройте
harbor.ymlи задайте обязательные параметры:hostname— FQDN VM, по которому будет доступен Harbor. Для OIDC рекомендуется использовать именно доменное имя.harbor_admin_password— пароль администратора Harbor.database.password— пароль локальной БД Harbor.- параметры секции
https(port,certificate,private_key) — укажите пути к сертификату и ключу для доступа к Harbor по TLS.
Подробнее о параметрах файла см. в руководстве Harbor: Configure the Harbor YML File
. -
Настройте внешний TLS для Harbor:
Укажите путь к сертификату в
harbor.yml. Подробная инструкция: Configure HTTPS Access to Harbor . -
(Опционально) Включите внутренний TLS между компонентами Harbor через секцию
internal_tlsвharbor.yml.Этот шаг рекомендуется для продуктивных установок с повышенными требованиями к защите внутреннего трафика. Подробнее: Configure Internal TLS communication between Harbor Component
. -
Запустите установку Harbor из каталога установщика:
sudo ./install.shПодробнее: Run the Installer Script
. -
Войдите в веб-интерфейс Harbor под учетной записью администратора.
Настройте аутентификацию
Примечание
Чтобы переключить Harbor на режим OIDC, в базе Harbor не должно быть учетных записей пользователей, кроме встроенной учетной записи администратора (после первого входа администратора это правило продолжает действовать: достаточно отсутствия прочих локальных пользователей). Подробнее см. документацию Harbor по режиму OIDC
Перед настройкой OIDC убедитесь, что веб-интерфейс доступен по HTTPS. Это обязательное условие: Harbor использует callback URL вида https://<домен_Harbor>/c/oidc/callback.
-
Откройте раздел Administration и перейдите в Configuration.
-
Откройте вкладку Authentication.
-
В поле Auth Mode выберите OIDC.
-
Заполните поля провайдера OIDC:
- OIDC Provider Name — произвольное имя кнопки входа, например
Yandex Identity Hub. - OIDC Provider Endpoint — базовый адрес провайдера OIDC:
https://kz.auth.yandex.cloud. Если вы копируете значение из поля OpenID Configuration, удалите из него суффикс/.well-known/openid-configuration. - OIDC Client ID — значение ClientID.
- OIDC Client Secret — сохраненный ранее секрет OAuth-клиента.
- OIDC Scope — укажите через запятую:
openid,profile,email,groups. - Verify Certificate — оставьте включенным, если сертификат поставщика удостоверений доверенный для Harbor.
- OIDC Provider Name — произвольное имя кнопки входа, например
-
Если вы планируете передавать группы из Yandex Identity Hub в Harbor:
- В поле Group Claim Name укажите
groups. - При необходимости задайте OIDC Admin Group и OIDC Group Filter в соответствии с документацией Harbor
.
- В поле Group Claim Name укажите
-
(Опционально) Включите Automatic onboarding, если не хотите вручную задавать имя пользователя Harbor при первом входе. В поле Username Claim укажите утверждение из ID-токена, которое будет использоваться как логин (рекомендуется
preferred_username; при необходимости можно использоватьemail. Согласуйте выбранное значение с атрибутами, которые выдает Yandex Identity Hub). -
Убедитесь, что значение Redirect URI внизу страницы совпадает с тем, что вы указали в OIDC-приложении в Yandex Identity Hub (
https://<домен_Harbor>/c/oidc/callback). -
Нажмите Test OIDC Server и убедитесь, что проверка проходит без ошибок.
-
Нажмите Save.
Подробнее о полях и ограничениях режима OIDC см. официальное руководство Harbor
Добавьте пользователя
Чтобы пользователи организации входили в Harbor через OIDC-приложение Yandex Identity Hub, явно добавьте в приложение нужных пользователей и/или группы пользователей.
Примечание
Управлять пользователями и группами, добавленными в OIDC-приложение, может пользователь, которому назначена роль organization-manager.oidcApplications.userAdmin или выше.
Добавьте пользователя в приложение:
- Войдите в сервис Yandex Identity Hub
. - На панели слева выберите
Приложения и выберите нужное приложение. - Перейдите на вкладку Пользователи и группы.
- Нажмите
Добавить пользователей. - В открывшемся окне выберите нужного пользователя или группу пользователей.
- Нажмите Добавить.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.
-
Получите идентификатор пользователя или группы пользователей.
-
Чтобы добавить в приложение пользователя или группу пользователей:
-
Посмотрите описание команды CLI для добавления пользователей в приложение:
yc organization-manager idp application oauth application add-assignments --help -
Выполните команду:
yc organization-manager idp application oauth application add-assignments \ --id <идентификатор_приложения> \ --subject-id <идентификатор_пользователя_или_группы>Где:
--id— идентификатор OIDC-приложения.--subject-id— идентификатор нужного пользователя или группы пользователей.
Результат:
assignment_deltas: - action: ADD assignment: subject_id: ajetvnq2mil8********
-
Убедитесь в корректной работе приложения
Чтобы проверить работу OIDC-приложения и интеграции с Harbor, выполните вход в Harbor от имени пользователя, добавленного в приложение.
Для этого:
- В браузере перейдите по адресу вашего экземпляра Harbor (например,
https://<домен_Harbor>). - Если вы уже авторизованы в Harbor, выйдите из учетной записи.
- На странице входа нажмите кнопку входа через OIDC (текст соответствует значению поля OIDC Provider Name в Harbor).
- На странице аутентификации Yandex Cloud укажите email и пароль пользователя. Пользователь должен быть добавлен в приложение или состоять в группе, добавленной в приложение.
- Убедитесь, что вы успешно вошли в Harbor.
- При необходимости откройте профиль пользователя в Harbor и проверьте членство в группах, если вы настроили передачу групп.