В продолжение поста 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:
Поэтому перед переключением реалма и/или изменением настроек — будет хорошей мыслью сделать бекап этого файла.
Готово.