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 требуется произвести следующие настройки:

  1. Добавить в AD указанный в настройках домен datamart;

  2. Добавить ТУЗ datamart_user;

  3. Добавить группу dps_users, в которую потребуется добавлять пользователей Datamart Platform Studio;

  4. Добавить поддерево dps_roles со списком групп Datamart Platform Studio;

  5. Добавить поддерево dps_оrgs со списком групп ОГРН организаций, которые потребуется назначать пользователям;

  6. Добавить в домен 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 требуется произвести следующие настройки:

  1. Добавить роли Datamart Platform Studio;

  2. Добавить группы, соответствующие организациям Datamart Platform Studio;

  3. В каждой группе указать соответствующий ОГРН в Datamart Platform Studio атрибут organization_ogrn;

  4. Назначить передачу (маппинг) атрибутов пользователя в JWT-токен для выбранного клиента (KEYCLOAK_CLIENT_NAME=studio);

  5. Добавить пользователей (с обязательным указанием 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.

Добавление ролей |prod| в Keycloak

Рисунок 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)

Пример интерфейса Keycloak для создания Mapper свойства username в атрибут preffered_username JWT-ключа

Рисунок 6.2 Пример интерфейса Keycloak для создания Mapper свойства username в атрибут preffered_username JWT-ключа

Поскольку у пользователя Keycloak по умолчанию нет требуемого аттрибута organization_ogrn, его необходимо добавить в Dedicated scopes клиента.

Добавить новый Mapper-атрибут organization_ogrn пользователям и назначить передачу атрибута в JWT-токен для выбранного клиента:

Dedicated scopes клиента

Рисунок 6.3 Dedicated scopes клиента

Добавление Mapper атрибута

Рисунок 6.4 Добавление Mapper атрибута

Выбор типа Mapper атрибута для organization_ogrn

Рисунок 6.5 Выбор типа Mapper атрибута для organization_ogrn

Настройка передачи атрибута organization_ogrn в токене

Рисунок 6.6 Настройка передачи атрибута organization_ogrn в токене

Отображение organization_ogrn в Dedicated scopes для выбранного клиента DPS

Рисунок 6.7 Отображение organization_ogrn в Dedicated scopes для выбранного клиента DPS

6.4.5. Назначение ОГРН для группы в Keycloak

В карточке группы для указания привязки пользователей в этой группе к организации в Datamart Platform Studio требуется указать ОГРН в атрибуте organization_ogrn. Если требуется привязать пользователя к нескольким организациям, то его надо будет добавить в несколько групп:

Назначение ОГРН для группы в Keycloak

Рисунок 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-сервисов на уровне выбранной услуги:

Добавление 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-сервисов для организации в карточке организации:

Добавление 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-сервисов:

Добавление Auth-сервисов на уровне DPS

Рисунок 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).