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

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

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

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

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

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

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

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

    user.png

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

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

  6. Добавьте еще один атрибут с таким же ключом. Наличие единого ключа позволит обратиться к ним как к массиву при создании правил доступа. В нашем примере мы добавим Франция:

     

  7. Аналогичным образом создайте еще один атрибут, но уже с другим ключом. Мы назвали его Capital и присвоили ему значение 1, которое в нашей таблице соответствует столицам:

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

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

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

  2. В открывшемся окне нажмите Данные > Роли безопасности:

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

  4. Переименуйте созданную роль. Мы переименовали её в Россия, Франция:

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

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

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

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

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

  10. В поле справа от списка таблиц введите DAX-выражение фильтрации. В нашем примере мы хотим, чтобы пользователь ivanov мог просматривать только те данные, которые относятся к странам Россия и Франция. Для этого мы введем следующее выражение:
    'Локация' [Country] IN USERATTRIBUTEASARRAY ("Countries")

     

  11. Данный запрос вернёт все строки из таблицы Локация, в которых столбец Country содержит значения, указанные в атрибутах с ключом Countries (т.е. Россия и Франция).

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

Аналогичным образом создайте еще одну роль, пройдя все вышеописанные шаги, но только в пункте 4 мы назовем её Столицы, а в пункте 10 введем следующее выражение:

'Локация' [City] IN USERATTRIBUTEASARRAY ("Capital")

После выполнения всех вышеописанных действий, пользователь ivanov получит доступ к данным, которые имеют отношение к двум странам (Россия и Франция) и ко всем столицам, занесённым в таблицу.


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

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