Инструкция подготовлена на примере Keycloak версии 20.0.2
1. Настройка Keycloak###
- Cоздание клиента
- Настройка параметров клиента
- Назначение ролей пользователей
- Конфигурация Визиона для работы с Keycloak
1.1 Создание клиента#
Необходимо выбрать пространство vision.
Перейти в раздел Clients и нажать на кнопку Create client. Заполнить поля следующими значениями:
- Client type: openid-connect
- Client ID: vision-core-client
Перейти на следующую страницу при помощи кнопки Next. Выбрать параметры:
- Client authentication: ON
- Authorization: OFF
- Standard Flow: ON
- Direct Access Grants: ON
- Implicit Flow: OFF
Для завершения создания клиента необходимо нажать на кнопку Save.
1.2 Настройка параметров клиента#
После создания клиента откроется страница Client details.
Вкладка «Settings»#
На вкладке Settings в подразделе Access settings необходимо указать адреса приложения:
- Root URL: <app_url>
- Home URL (Base URL в ранних версиях): <app_url>
- Valid Redirect URIs:
- <app_url>/vision/api/v1/auth/login
- <app_url>/vision/api/v1/auth/login-grafana
- Web Origins: <app_url>
- Admin URL: <app_url>
Где <app_url>, это - https://<ip_vision_vm>
Прочие параметры конфигурации можно оставить со значениями по умолчанию. После ввода параметров необходимо сохранить изменения при помощи кнопки Save.
Вкладка «Roles»#
Необходимо создать роли администратора клиента, которые затем можно назначать пользователям Keycloak. Имена ролей чувствительны к регистру. Для создания роли необходимо нажать на кнопку Create role.
Необходимо создать следующие роли:
- obj_model - администратор объектной модели
- role_model - администратор информационной безопасности
- vsn_config - администратор конфигурации Визиона, также администратор Grafana
Также можно создать пользовательские роли. Распределение их полномочий производится после их добавления в Визион. Управление ролевой моделью Визион описано в Руководстве Администратора .
Вкладка «Credentials»#
По умолчанию должны быть указаны следующие параметры:
- Client Authenticator: Client Id and Secret
- Client secret: *****
При конфигурации Визиона для работы с Keycloak потребуются следующие данные клиентов:
- Client ID
- Client secret
1.3 Назначение ролей пользователям#
Порядок действий для назначения роли пользователям:
-
Необходимо перейти в раздел Users
-
Выбрать пользователя или создать нового при помощи кнопки Add user
-
Перейти во вкладку Role mapping и нажать на кнопку Assign role
-
Нажать на выпадающий список фильтра и выбрать Filter by clients
-
Отметить необходимые роли и нажать на кнопку Assign
1.4 Конфигурация Визиона для работы с Keycloak#
Необходимо изменить параметры файла конфигурации Визиона /opt/skala-r/etc/vision/server/vision_core/config.yml
.
В ключе “auth” необходимо указать:
- enabled - установить значение true
- auth_type - keycloak
- auth_server - URL Keycloak, например “https://192.168.1.1:8080”
- realm - имя пространства.
- client_id - ID клиента в пространстве.
- client_secret - значение является ключом из хранилища секретов. Не изменять.
Пример секции авторизации:
auth:
enabled: true
auth_type: keycloak
auth_server: https://192.168.1.1:8080
realm: vision
client_id: vision-core-client
client_secret: vault.auth.client_secret
Необходимо указать реальное значение Client_secret клиента.
- Необходимо создать копию файла хранилища секретов:
cp /opt/skala-r/vision/.secrets_vault /opt/skala-r/vision/.secrets_vault_bak
. - Открыть хранилище секретов командой:
ansible-vault edit /opt/skala-r/vision/.secrets_vault
. Для оперирования содержимым хранилища требуется ключ, выдаваемый разработчиком Визиона. - Для ключа
vault.auth.client_secret
установить значение Client secret из раздела Credentials клиента. - Сохранить файл и перезапустить сервис
vision_core.service
командойsystemctl restart vision_core.service
. - Проверить успешный запуск vision_core командой
systemctl status vision_core.service
и убедиться, что в логе нет ошибок после перезапуска:journalctl -fu vision_core -n 20
.
2. Настройка Keycloak при помощи скрипта#
Необходимые условия для запуска скрипта#
-
Успешная работа скрипта возможна в составе дистрибутива Визион, без переноса скрипта в иные среды
-
Запуск скрипта возможен только под пользователем с правами root
-
Для запуска необходима утилита jq. Утилита включена в поставку Визиона. Следует предварительно установить зависимости Визиона перед запуском скрипта, если данная утилита не установлена, либо установить ее вручную
-
Для запуска скрипта необходимы следующие данные:
- адрес keycloak с протоколом (http, https)
- id клиента cli администратора - по умолчанию admin-cli
- данные учетной записи администратора keycloak (username, password)
- имя создаваемого реалма Визиона
- имя создаваемого клиента Визиона
- значение секрета клиента Визиона
- адрес сервера Визион
Значения по умолчанию#
В скрипте для некоторых аргументов подготовлены значения по умолчанию:
- id клиента cli администратора - admin-cli
- данные учетной записи администратора keycloak (username, password) - admin, admin
- имя создаваемого реалма Визиона - vision
- имя создаваемого клиента Визиона - vision-core-client
- значение секрета клиента Визиона - генерируется при запуске, будет выведен в консоль
Примечание:
- Если пространство уже существует, скрипт продолжит работать с ним.
- Если клиент уже существует, то работа скрипта будет завершена с ошибкой.
Параметры запуска скрипта#
Для запуска необходимо перейти в директорию auth/keycloak
дистрибутива при помощи команды: cd <vision-distrib-path>/auth/keycloak
Параметры запуска скрипта:
- auth-server - адрес keycloak(обязателен)
- admin-username - login администратора(по умолчанию admin)
- admin-password - пароль администратора(по умолчанию admin)
- admin-client-id - id клиента cli администратора(по умолчанию admin-cli)
- realm - название пространства (по умолчанию vision)
- core-client-id - название клиента (по умолчанию vision-core-client)
- core-client-secret - секрет клиента. При отсутствии будет сгенерирован
- vision-address - адрес сервера Визиона(пример: https://192.168.190.190)
Результат работы скрипта#
Пример только с обязательными параметрами
./setup_keycloak.sh --auth-server http://192.168.190.198:8180 --vision-address https://192.168.190.196
Будут использованы следующие аргументы:
auth-server : http://192.168.190.198:8180
admin-username : admin
admin-password : admin
admin-client-id : admin-cli
realm : vision
core-client-id : vision-core-client
core-client-secret : c0fe8c1f99055df8e84e9e2e650d7968
vision-address : https://192.168.190.196
====================================
Конфигурирование реалма в keycloak
====================================
Проверка доступности keycloak...
Получение access_token...
Создание реалма - vision
Реалм создан.
Реалм доступен по следующей ссылке:
http://192.168.190.198:8180/auth/admin/master/console/#/realms/vision
Создание клиента в реалме - vision-core-client
Клиент создан.
Получение UUID клиента
UUID клиента 7bbb2017-ebfa-4e6a-9fef-2723493b0182
Добавление базовых ролей администраторов:
Добавлена роль {"name": "vsn_config"}
Добавлена роль {"name": "role_model"}
Добавлена роль {"name": "obj_model"}
Успешно установлены следующие параметры:
realm : vision
core-client-id : vision-core-client
core-client-secret : c0fe8c1f99055df8e84e9e2e650d7968
3. Настройка Keycloak и Визион для функционала автоматической рассылки уведомлений#
Необходимо в реалме master в Keycloak создать технического пользователя, учетная запись которого будет использована для получения списка пользователей и ролей и задать для него пароль.
Техническому пользователю необходимо назначить следующие роли:
В конфигурационном файле Визион требуется задать параметры для сервиса vision_iamsyncer.service
, который запрашивает данные пользователей необходимые для рассылки у провайдера аутентификации и передает из в сервис vision_core
.
Параметры:
- iamsyncer_systemd_service - название сервиса, запрашивающего данные пользователей у провайдера аутентификации (изменять не требуется)
- user_update_enabled - включение режима сбора данных пользователей (true) или выключение (false)
- tech_auth_client_id - идентификатор клиента для сбора данных пользователей (изменять не требуется)
- tech_auth_username - имя технического пользователя
- tech_auth_password - ключ в secret vault, где хранится пароль технического пользователя
- fetch_interval - интервал времени (в секундах), через который запускается каждый последующий процесс сбора данных пользователей.
Пример заполнения:
auth:
---
iamsyncer_systemd_service: vision_iamsyncer.service
user_update_enabled: true
tech_auth_client_id: 'admin-cli'
tech_auth_username: 'vision-api-reader'
tech_auth_password: vault.auth.tech_auth_password
fetch_interval: 3600
Пароль технического пользователя необходимо добавить в secrets_vault
. Для этого необходимо открыть хранилище секретов командой: ansible-vault edit /opt/skala-r/vision/.secrets_vault
и для ключа vault.auth.tech_auth_password
установить значение пароля, заданного в разделе credentials технического пользователя.
После всех изменений необходимо рестартовать сервис Визион командой systemctl restart vision_core
. В случае, если в провайдере аутентификации произошли изменения и администратор не хочет ждать следующего запуска процесса сбора данных, можно рестартовать сервис vision_iamsyncer
командой systemctl restart vision_iamsyncer
.