Предоставление доступа с помощью нескольких атрибутов пользователя одного или другого типа

Представьте ситуацию, в которой ваш сотрудник работает по нескольким направлениям и работает с данными, которые относятся к нескольким городам и регионам. Для того, чтобы предоставить ему доступ ко всем данным, относящимся к этим локациям, и при этом ограничить доступ ко всем остальным данным, вам необходимо сделать следующее:

  1. Создать несколько атрибутов пользователя.

  2. Создать роль доступа на платформе с использованием этих атрибутов и назначить ее пользователю.

Создание нескольких атрибутов пользователя

  1. Откройте Keycloak, введя соответствующий адрес в адресной строке браузера:
    <domain>/v3/keycloak
    где <domain> – адрес вашего сервера.

  2. Откройте консоль администратора и в боковой панели нажмите Users:

    keycloak-users.png
  3. Выберите пользователя, для которого будут создаваться RLS-роли. В нашем примере это пользователь ivanov:

    user.png
  4. В открывшемся окне перейдите на вкладку Attributes и нажмите Add an attribute, чтобы добавить атрибут:

 

  1. В поле Key укажите уникальный ключ атрибута, например Cities, а в поле Value укажите его значение. В нашем примере это Москва:

  2. Добавьте еще несколько атрибутов с ключами Cities и Regions. Наличие единого ключа позволит обратиться к ним как к массиву при создании правил доступа. В нашем примере мы добавим еще города Санкт-Петербург и Самара, а также Московскую, Ленинградскую и Самарскую области с ключом Regions:

  3. Нажмите Save для сохранения изменений.

Создание роли доступа на платформе и назначение её пользователю

  1. Перейдите в требуемую рабочую область и откройте набор данных, для которого вы хотите создать роли безопасности. В нашем примере это Продажи:

  2. В открывшемся окне нажмите Роли в верхней панели:

  3. В появившемся окне нажмите кнопку с крестиком для создания роли:

  4. Переименуйте созданную роль. Мы переименовали её в Доступные города и регионы:

  5. Для назначения роли пользователю нажмите кнопку справа от названия роли:

  6. В строке поиска начните вводить имя пользователя (в нашем случае ivanov):

  7. Выберите найденного пользователя и нажмите Назначить. Пользователю будет назначена созданная роль, о чём система проинформирует вас:

  8. Кликните название созданной роли в левой стороне диалогового окна. Отобразится список таблиц набора данных, с которым вы работаете:

  9. Выберите таблицу, для которой вы хотите создать правило. В нашем примере это Локация:

  10. В поле справа от списка таблиц введите выражение DAX фильтра таблицы. В нашем примере мы хотим, чтобы пользователь ivanov, у которого в рабочей области Филиалы CreativeElectronix роль Зритель, мог просматривать только те данные, которые относятся либо к городам Москва, Санкт-Петербург, Самара, либо к регионам Московская область, Ленинградская область, Самарская область. Для этого мы введем следующее выражение:

    OR('Локация' [City] IN USERATTRIBUTEASARRAY ("Cities"), 'Локация' [Region] IN USERATTRIBUTEASARRAY ("Regions") )

    Данный запрос вернёт все строки из таблицы Локация, в которых либо столбец City содержит значения, указанные в атрибутах с ключом Cities (т.е. Москва, Санкт-Петербург, Самара), либо столбец Region содержит значения, указанные в атрибутах с ключом Regions (Московская область, Ленинградская область, Самарская область).

  11. Нажмите Сохранить DAX в правом нижнем углу.

Теперь, при работе с набором данных Продажи, пользователь ivanov будет иметь доступ только к тем данным, которые относятся либо к городам Москва, Санкт-Петербург и Самара, либо к регионам Московская область, Ленинградская область и Самарская область:


Смотрите также

Настройка динамической RLS
Настройка статической RLS