Jenkins: SAML, Okta, группы пользователей и Role-Based Security

Автор: | 15/10/2019
 

В продолжение поста Jenkins: SAML Authentication через Okta SSO и группы пользователей – настройка Role-Based Security авторизации в Jenkins, используя группы Okta.

Настройка Role-Based Security плагина

Устанавливаем плагин Role-based Authorization Strategy:

Переходим в Configure Global Security, переключаем авторизацию на Role-Based Strategy:

Переходим в Manage and Assign Roles:

Создание ролей – Global roles

Роли делятся на три типа:

  • global roles: глобальные настройки, такие как разрешение на создание/удаление Views, Jobs, Overall
  • project roles: настройки привязанные к конкретной джобе, ограничение джоб задаётся через регулярное выражение
  • agent roles: доступы к слейвам

Если сейчас залогиниться с любым пользователем из Okta – получим ошибку “missing the Overall/Read permission“:

Что бы её избежать – надо создать глобальную роль с правами на Read.

Переходим в Manage Roles:

Создаём глобальную роль read_all с правами только Overall – Read:

Сохраняем.

Assign Roles

Для примера возьмём юзера test:

У него две группы – Everyone и DevOps.

Переходим в Assign Roles, добавляем группу Everyone и задаём ей роль read_all:

Сохраняем, логинимся под этим юзером, проверяем:

Лгинимся, ошибки с правами нет, отлично.

Project roles

Теперь надо добавить роли, которые дадут доступ к конкретным джобам и вьюшкам.

Например – у нас есть view Android, в которой собраны все джобы Android-девелоперов:

Переходим в Manage Roles, добавляем роль android_developer и в Pattern указываем (?i)android_.* – с помощью (?i) указываем не учитывать регистр символов в именах, и по android_.* – выбираем все джобы Android:

Можно кликнуть на регулярное выражение, что бы увидеть список джоб, к которым правило будет применено:

Переходим в Assign Roles, подключаем роль android_developer к группе Android:

Группы в Okta

Переходим в Okta, добавляем тестовому юзеру группу Android:

Логинимся под ним:

Готово – видим только джобы и вьюшки Android.

Аналогично – добавляем ещё одну роль, ios_config, для iOS, но в этот раз – с правами на редактирование:

Присваиваем эту роль группе iOS:

В Okta подключаем группу iOS к тестовому юзеру:

Логинимся под ним, и видим все джобы iOS:

И права на настройку джобы:

Бекап

Security Realm, группы и роли сохраняются в файле config.xml Jenkins-a:

Поэтому перед переключением реалма и/или изменением настроек – будет хорошей мыслью сделать бекап этого файла.

Готово.