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

Автор: | 10/15/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:

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

Готово.