Инструкция подготовлена на примере Keycloak версии 20.0.2.
Терминология
- Authentication — идентификация и проверка пользователя.
- Authorization — предоставление доступа пользователю.
- Realm — пространство для управления пользователями, приложениями, ролями и группами. Пользователь принадлежит к конкретному realm. Realm’ы изолированы друг от друга.
- Clients — клиенты (приложения), которые могут обращаться к Keycloak для аутентификации пользователя. Чаще всего клиентами являются приложения и службы, которые используют Keycloak для обеспечения единого входа в систему.
- Users — пользователи, которые могут войти в вашу систему. Им можно назначить членство в группе и/или определенные роли.
- Roles — определяют тип/категорию пользователя. Читатель, писатель — типичные роли. Обычно, приложения назначают доступ и разрешения конкретным ролям, а не отдельным пользователям.
1.1 Создание клиента#
Выберите необходимый Realm, перейдите страницу Clients и нажмите на кнопку Create client, после чего укажите следующие параметры:
- Client type: openid-connect
- Client ID: <ИМЯ КЛИЕНТА>
- Vision Core: 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»#
Необходимо указать адреса приложения.
- 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>
При доступности приложений с нескольких <app_url> (по IP, по домену) укажите все допустимые варианты для Valid redirect URIs и Web Origins.
Прочие параметры конфигурации можно оставить со значениями по умолчанию.
После ввода параметров нажмите Save.
Вкладка «Roles»#
Необходимо создать роли администраторов клиента, которые затем можно назначать пользователям Keycloak для доступа к приложениям. Имена ролей чувствительны к регистру. Для создания роли нажмите Create role.
В клиенте для Vision Core создайте следующие роли:
- obj_model Администратор объектной модели
- role_model Администратор информационной безопасности
- vsn_config Администратора конфигурации Визиона, также администратор Grafana
Также можно создать пользовательские роли. Распределение их полномочий производится после их добавления в Визион. Управление ролевой моделью Визион описано в разделе 17 Руководства Администратора .
Вкладка «Credentials»#
По-умолчанию на данной вкладке должны быть указаны следующие параметры
- Client Authenticator: Client Id and Secret
- Client secret: *****
При конфигурации приложений нам понадобятся следующие данные клиентов:
- Client ID
- Client secret
1.3 Назначение ролей пользователям#
- Откройте раздел Users
- Выберите необходимого пользователя или создайте нового.
- Перейдите во вкладку 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 - имя Realm.
- client_id - ID клиента в Realm.
- 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
.