6. Управление доступом
6.1. Общие положения
Авторизация пользователя в Datamart Platform Studio выполняется при помощи выделенного модуля auth-сервиса. Аккаунт пользователя в Datamart Platform Studio создается (обновляется) и роли пользователя в Datamart Platform Studio назначаются (обновляются) после успешного прохождения процедуры аутентификации и авторизации.
Аутентификация пользователя выполняется в Datamart Platform Studio, если установлен режим AUTH=DATABASE.
В режиме AUTH=IAM аутентификация пользователя выполняется в сервисе Keycloak, роли и организации пользователя назначаются в сервисе Keycloak и Datamart Platform Studio получает все необходимые данные из JWT-токена Keycloak.
В режиме AUTH=AD аутентификация пользователя выполняется в сервисе LDAP (Active Directory). Роль суперадмина назначается в переменных окружения. Далее, суперадмин может назначить роли другим пользователям LDAP в интерфейсе Datamart Platform Studio.
6.2. Назначение пользователя и пароля по умолчанию Datamart Platform Studio
При первом запуске Datamart Platform Studio, если предварительно не произведена конфигурация подключения к внешнему сервису аутентификации, в переменных окружения можно указать имя пользователя и пароль по умолчанию.
Назначенный таким образом единственный пользователь Datamart Platform Studio будет иметь роль Администратор студии (superadmin).
Имя и пароль пользователя Datamart Platform Studio указывается в переменных окружения (см. файл .env).
AUTH=DATABASE
STUDIO_SEED_USER_USERNAME="datamart"
STUDIO_SEED_USER_PASSWORD="datamart"
Чтобы изменить имя пользователя и пароль по умолчанию, измените соответствующие параметры в файле .env и выполните перезапуск Datamart Platform Studio.
6.3. Настройка аутентификации по протоколу LDAP
Для настройки аутентификации по протоколу LDAP (Active Directory)
необходимо в переменных окружения (см. файл .env) указать способ аутентификации
AUTH=ADи внести параметры сервера Active Directory; пользователя, который
будет осуществлять проверку; группы AD, для которой будет разрешен доступ к Datamart Platform Studio.
Пример:
# выбранный метод аутентификации
AUTH=AD
# настройка подключения к серверу LDAP (Active Directory)
AD_HOST=<ip адрес или имя хоста сервера LDAP>
AD_PORT=389
AD_ADMIN_USER="CN=datamart_user,CN=Users,DC=datamart,DC=ru"
AD_ADMIN_PASS=datamart_p@ssword
AD_SSL=false
# привязка домена и группы пользователей в домене из LDAP к |prod|
AD_ATTRIBUTE=sAMAccountName
AD_BASE="OU=dps_users,DC=datamart,DC=ru"
# привязка ролей и организаций
AD_ROLE_GROUP_BASE="OU=dps_roles,OU=dps_users,DC=datamart,DC=ru"
AD_ORG_GROUP_BASE="OU=dps_оrgs,OU=dps_users,DC=datamart,DC=ru"
, где:
datamart - учетная запись домена AD;
datamart_user - техническая учетная запись для аутентификации в домене AD;
datamart_p@ssword - пароль технической учетной записи;
sAMAccountName — Атрибут логина в AD (поле, соответствующее username в Datamart Platform Studio).
dps_users - группа пользователей домена, которой мы хотим разрешить доступ к Datamart Platform Studio;
dps_roles - DN поддерева с группами-ролями, из которой будут синхронизироваться роли пользователя в Datamart Platform Studio (CN группы-роли должно точно совпадать с именем роли в DPS);
dps_оrgs - DN поддерева с группами-организациями, из которой будут синхронизироваться организации пользователя в Datamart Platform Studio (CN группы должно точно совпадать с ОГРН организации в DPS);
Для справки см. документацию на Атрибуты именования пользователей в Active Directory
6.3.1. Настройка Active Directory
Для работы в качестве сервиса аутентификации в Active Directory требуется произвести следующие настройки:
Добавить в AD указанный в настройках домен datamart;
Добавить ТУЗ datamart_user;
Добавить группу dps_users, в которую потребуется добавлять пользователей Datamart Platform Studio;
Добавить поддерево dps_roles со списком групп Datamart Platform Studio;
Добавить поддерево dps_оrgs со списком групп ОГРН организаций, которые потребуется назначать пользователям;
Добавить в домен datamart требуемых пользователей AD (email должен быть обязательно указан); #. добавить их в группу dps_users; #. назначить пользователям группы, соответствующие требуемым ролям DPS из поддерева dps_roles; #. назначить пользователям группы, соответствующие требуемым ОГРН организаций в DPS из поддерева dps_оrgs;
6.3.2. Пример настройки в AD 2х пользователях в одной организации с разными ролями
DC=datamart,DC=ru
└── OU=Users_datamart
├── CN=Ivan Ivanov
│ └── memberOf:
│ ├── CN=superadmin,OU=Roles,OU=Users_datamart,DC=datamart,DC=ru
│ └── CN=1217700496782,OU=Organizations,OU=Users_datamart,DC=datamart,DC=ru
│
├── CN=Petr Petrov
│ └── memberOf:
│ ├── CN=org_manager,OU=Roles,OU=Users_datamart,DC=datamart,DC=ru
│ └── CN=1217700496782,OU=Organizations,OU=Users_datamart,DC=datamart,DC=ru
│
├── OU=Roles
│ ├── CN=superadmin
│ └── CN=org_manager
│
└── OU=Organizations
└── CN=1217700496782
6.4. Настройка аутентификации с использованием Keycloak (OAuth, IAM)
Для настройки аутентификации через с использованием Keycloak (IAM) необходимо в переменных окружения (см. файл .env) указать способ аутентификации AUTH=IAM и указать параметры подключения к сервису Keycloak.
Пример:
# выбранный метод аутентификации
AUTH=IAM
# настройка подключения к серверу Keycloak
KEYCLOAK_CLIENT_NAME=studio
KEYCLOAK_CLIENT_SITE=https://kc.your-server.ru
KEYCLOAK_CLIENT_REALM=studio-dev
KEYCLOAK_CLIENT_BASE_URL=''
, где:
datamart-studio - client_id клиента DPS в Keycloak;
KEYCLOAK_CLIENT_SITE - URL Keycloak;
KEYCLOAK_CLIENT_REALM - Имя соответствующего realm в Keycloak;
KEYCLOAK_CLIENT_BASE_URL - Префикс пути API Keycloak (может быть пустым)
Настройки Keycloak должны быть указаны в соответствии с рекомендациями по настройке сервиса для Platform V IAM.
В выбранном для аутентификации Realm Keycloak требуется добавить соответствующие роли Datamart Platform Studio, добавить атрибут organization_ogrn и настроить передачу ОГРН в JWT-токене.
6.4.1. Настройка Keycloak Realm
Для работы в качестве сервиса аутентификации в Keycloak требуется произвести следующие настройки:
Добавить роли Datamart Platform Studio;
Добавить группы, соответствующие организациям Datamart Platform Studio;
В каждой группе указать соответствующий ОГРН в Datamart Platform Studio атрибут organization_ogrn;
Назначить передачу (маппинг) атрибутов пользователя в JWT-токен для выбранного клиента (KEYCLOAK_CLIENT_NAME=studio);
Добавить пользователей (с обязательным указанием email); #. Назначить пользователям требуемые роли; #. Добавить требуемых пользователей в соответствующие их организациям группы.
6.4.2. Настройка пользователей Keycloak
Добавление пользователей и ролей в Keycloak производится в соответствии с рекомендациями по настройке сервиса в разделе Ведение базы внутренних пользователей.
6.4.3. Добавление ролей Datamart Platform Studio в Keycloak
В разделе Realm Roles требуется добавить список ролей, соответствующий ролям Datamart Platform Studio. Кроме ролей Datamart Platform Studio в этом разделе могут быть указаны и другие роли, но только роли, имена которых точно совпадает с именами из списка допустимых ролей Datamart Platform Studio будут учитываться при авторизации пользователя в Datamart Platform Studio.
Рисунок 6.1 Добавление ролей Datamart Platform Studio в Keycloak
6.4.4. Настройка передачи атрибутов в JWT-ключ
Для корректной передачи атрибутов пользователя из Keycloak в Datamart Platform Studio в составе JWT-ключа требуется в Dedicated scopes пользователя Dedicated scopes настроить маппирование следующих атрибутов в состав ключа (Token Claim Name):
preffered_username (User property: username)
email (User property: email)
given_name (User property: firstName)
family_name (User property: lastName)
organization_ogrn (User attribute: organization_ogrn)
Рисунок 6.2 Пример интерфейса Keycloak для создания Mapper свойства username в атрибут preffered_username JWT-ключа
Поскольку у пользователя Keycloak по умолчанию нет требуемого аттрибута organization_ogrn, его необходимо добавить в Dedicated scopes клиента.
Добавить новый Mapper-атрибут organization_ogrn пользователям и назначить передачу атрибута в JWT-токен для выбранного клиента:
Рисунок 6.3 Dedicated scopes клиента
Рисунок 6.4 Добавление Mapper атрибута
Рисунок 6.5 Выбор типа Mapper атрибута для organization_ogrn
Рисунок 6.6 Настройка передачи атрибута organization_ogrn в токене
Рисунок 6.7 Отображение organization_ogrn в Dedicated scopes для выбранного клиента DPS
6.4.5. Назначение ОГРН для группы в Keycloak
В карточке группы для указания привязки пользователей в этой группе к организации в Datamart Platform Studio требуется указать ОГРН в атрибуте organization_ogrn. Если требуется привязать пользователя к нескольким организациям, то его надо будет добавить в несколько групп:
Рисунок 6.8 Назначение ОГРН для группы в Keycloak
6.4.6. Проверка корректности настройки доступов в Keycloak
После настройки ролей и ОГРН для пользователя в составе JWM-токена (см. раздел Раздел 10.5 Содержимое JWM-токена Keycloak ) должны присутствовать поля имени пользователя, email, назначенных ролей и ОГРН:
# имя и email пользователя
"upn": "admin",
"email": "admin@admin.admin"
# назначенные роли
"realm_access": {
"roles": [
"superadmin",
"admin"
]
},
# назначенные организации
"organization_ogrn": [
"1111",
"2222"
],
6.5. Использование нескольких сервисов аутентификации
При необходимости в Datamart Platform Studio можно настроить использование нескольких Auth-сервисов, если пользователи разнесены по разным Realm Keycloak и нет возможности объединить аккаунты пользователей в едином сервисе аутентификации, либо стоит задача выполнять управление пользователями раздельно для разных организаций или услуг в рамках одного экземпляра Datamart Platform Studio.
Добавление дополнительных Auth-сервисов выполняется только для типа IAM (Keycloak).
Примечание
Если в Datamart Platform Studio добавлен хотя бы 1 дополнительный Auth-сервис на уровне организации или услуги, то при авторизации пользователя потребуется кроме логина и пароля к Datamart Platform Studio указать ОГРН организации и мнемонику услуги, к которой пользователь хочет получить доступ в Datamart Platform Studio.
6.5.1. Процесс аутентификации с использованием нескольких auth-сервисов
Если в DPS указано несколько auth-сервисов Keycloak, то аутентификация пользователя выполняется при указании пользователем ОГРН организации и мнемоники услуги(опционально):
если в DPS отсутствует организация с указанным ОГРН - ошибка 404
если в DPS отсутствует услуга с указанной мнемоникой в указанной пользователем организации - ошибка 404
- если организация/услуга есть в DPS, но у нее отсутствует свой auth-сервис:
используется системный auth-сервис DPS
при отсутствии auth-сервиса у услуги используется auth-сервис организации
Рисунок 6.9 Выбор пользователем ОГРН организации и мнемоники услуги
если услуга с указанной мнемоникой присутствует в нескольких окружениях - отображается список окружений услуги для выбора с возможностью перехода к следующему шагу (шаг опционален)
Рисунок 6.10 Выбор пользователем окружения услуги
если у услуги указано несколько auth-сервисов (такое может быть) отображается список description доступных auth-сервисов
Рисунок 6.11 Выбор пользователем окружения услуги
после выбора auth-сервиса, выполняется переадресация пользователя в выбранный realm keycloak
6.5.2. Добавление Auth-сервисов на уровне услуги
Пользователь DPS с ролью адимна услуги, организации или суперадимна может добавить один или несколько Auth-сервисов на уровне выбранной услуги:
Рисунок 6.12 Добавление Auth-сервисов на уровне услуги
При добавлении Auth-сервисов на уровне услуги права пользователей при авторизации к этой услуге данной будут проверяться последовательно в указанных Auth-сервисах.
При выполнении запросов по ProxyAPI к компонентам данной услуги, права, соответственно проверяются в Auth-сервисе данной услуги. Если в услуге указано несколько Auth-сервисов, то при выполнении запросов по ProxyAPI можно указать 1 из Auth-сервисов услуги (см. раздел Proxy API Руководства пользователя).
Примечание
По умолчанию в интерфейсе добавления Auth-сервисов установлен флаг «Использовать текущие настройки подключения». Если требуется указать адрес Keycloak, отличный от указанного в Datamart Platform Studio по умолчанию, то этот флаг надо снять. После этого поле редактирования адреса Keycloak будет доступно для редактирования.
6.5.3. Добавление Auth-сервисов на уровне организации
Пользователь DPS с ролью суперадимна или админа организации может добавить один или несколько дополнительных Auth-сервисов для организации в карточке организации:
Рисунок 6.13 Добавление Auth-сервисов на уровне организации
При добавлении Auth-сервисов на уровне организации права пользователей при авторизации в DPS к этой организации будут проверяться последовательно в указанных Auth-сервисах.
Если в DPS указано несколько Auth-сервисов, то при выполнении запросов по ProxyAPI к компонентам услуг можно указать 1 из Auth-сервисов DPS (см. раздел Proxy API Руководства пользователя).
Примечание
Если для услуги или организации добавлен хотя бы 1 дополнительный Auth-сервис на уровне организации, то для получения JWT-токена при авторизации при выполнении запроса ProxyAPI пользователю потребуется указывать соответствующий Auth-сервис.
6.5.4. Добавление Auth-сервисов на уровне DPS
Пользователь DPS с ролью суперадимна может добавить один или несколько дополнительных Auth-сервисов:
Рисунок 6.14 Добавление Auth-сервисов на уровне DPS
При добавлении Auth-сервисов на уровне DPS права пользователей при авторизации в DPS будут проверяться последовательно в указанных Auth-сервисах.
Если в DPS указано несколько Auth-сервисов, то при выполнении запросов по ProxyAPI к компонентам услуг можно указать 1 из Auth-сервисов DPS (см. раздел Proxy API Руководства пользователя).
Примечание
Если для услуги или организации добавлен хотя бы 1 дополнительный Auth-сервис на уровне организации или услуги, то для получения JWT-токена при авторизации при выполнении запроса ProxyAPI пользователю потребуется указывать соответствующий услуге Auth-сервис.
6.6. Управление ресурсами организаций
Пользователь с ролью Администратор студии (superadmin) из меню пользователя имеет возможность посмотреть список добавленных в Datamart Platform Studio организаций, добавить новые и отслеживать ресурсы, используемые организациями в Datamart Platform Studio.
Рисунок 6.15 Просмотр списка организаций и добавление новых
Пользователь с ролью Администратор (admin) из меню пользователя имеет возможность посмотреть список только назначенных ему организаций, редактировать и мониторить их ресурсы, соответственно.
6.6.1. Список пользователей организаций
В карточке организации во вкладке «Пользователи» отображается список пользователей, получивших доступ к ресурсам данной организации в Datamart Platform Studio с их именами, ролями, данными о количестве авторизаций и времени последнего входа (см. Рисунок 6.16).
Рисунок 6.16 Просмотр списка пользователей организации
6.6.2. Указание ОГРН для организаций в Datamart Platform Studio
В карточке организации в Datamart Platform Studio есть возможность указать уникальное значение ОГРН для каждой организации. По значению ОГРН будет осуществляться привязка доступа пользователей к ресурсам данной организации:
Услугам;
Инсталляциям приложений;
Датацентрам (ЦОД);
Серверам;
Базам данных;
Гипервизорам;
Рисунок 6.17 Настройка ОГРН для организаций
Примечание
Добавление новых организаций и доступ к ресурсам всех организаций в Datamart Platform Studio доступно только пользователю с ролью Администратор студии (superadmin).