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

  • Если для набора данных не определена ни одна RLS-роль, пользователь может просматривать все данные этого набора. Если же для данного набора создана хотя бы одна RLS-роль, то пользователь увидит сообщение об ошибке, если ему не присвоена никакая RLS-роль.

  • Перед выполнением настроек необходимо добавить и настроить маппер протоколов.

При использовании динамической модели RLS вам необходимо настроить атрибуты пользователя в Keycloak, а затем использовать значения этих атрибутов либо по отдельности, либо в качестве массива при создании правил доступа. Для использования отдельных значений применяется функция USERATTRIBUTE, а при необходимости использования нескольких значений атрибутов применяется функция USERATTRIBUTEASARRAY (см. ниже).

Для создания правил доступа используются DAX-выражения. Ниже представлен список поддерживаемых функций, которые можно использовать для этой цели:

Название функции

Описание

Название функции

Описание

IN

DAX-функция. Используется для проверки наличия значения в заданном списке значений. Например: <значение> IN {<значение>, <значение>, ...}

AND

DAX-функция. Используется для проверки, выполняются ли все условия, переданные в качестве аргументов. Возвращает TRUE, если все условия истинны, и FALSE, если хотя бы одно из условий ложно.

Например: AND(<логическое_выражение1>, <логическое_выражение2>)

Также поддерживается логический оператор && .

OR

DAX-функция. Используется для проверки нескольких условий и возвращает TRUE, если хотя бы одно из условий истинно.

Например: OR(<логическое_выражение1>, <логическое_выражение2>)

Также поддерживается логический оператор || .

USERATTRIBUTE

Применяется при использовании одного значения пользовательского атрибута. Данная функция создана специально для настройки правил доступа на платформе Visiology.

USERATTRIBUTEASARRAY

Применяется при использовании нескольких значений пользовательского атрибута. Данная функция создана специально для настройки правил доступа на платформе Visiology.

Ниже подробное описание процесса создания правил доступа с использованием этих функций.

Создание правил доступа с использованием функции USERATTRIBUTE

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

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

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

    keycloak-users.png

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

    user.png

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

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

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

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

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

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

     

  10. Переименуйте созданную роль. Мы переименовали в Москва:

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

     

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

     

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

     

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

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

     

  16. В поле справа от списка таблиц введите выражение DAX фильтра таблицы. В нашем примере мы хотим, чтобы пользователь Иванов, у которого в рабочей области Филиалы CreativeElectronix роль Зритель, мог просматривать только те данные, которые относятся к городу Москва. Для этого мы введем следующее выражение:
    'Города' [City] = USERATTRIBUTE ("Москва")


    Данный запрос вернёт все строки из таблицы Города, в которых столбец City содержит значение Москва.

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

Функция USERATTRIBUTE также поддерживает работу с массивами, содержащими один элемент (например, Country = ["Китай"]). Если массив содержит более одного элемента, необходимо использовать функцию USERATTRIBUTEASARRAY (см. ниже).

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

 

Создание правил доступа с использованием функции USERATTRIBUTEASARRAY

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

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

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

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

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

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

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

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

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

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

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

     

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

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

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

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

     

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

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

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


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

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

Теперь, при работе с набором данных Продажи, пользователь Иванов будет иметь доступ только к тем данным, которые относятся к странам Россия, Китай и Куба:

 


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

Администрирование рабочих областей
Настройка статической RLS

Время чтения: 2 мин.


Нужна дополнительная помощь?

Свяжитесь с технической поддержкой.

 

Related pages