Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.
Примечание
  • Если для набора данных не определена ни одна 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

Раскрыть
titleРазвернуть инструкцию

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

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

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

    keycloak-users.png

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

    user.png

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

    attribute.png

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

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

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

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

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

    create.png

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

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

    click-button2.png

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

    find-user.png

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

    assign-user.png

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

    table-list2.png

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

    cities.png

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

    formula.png


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

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

Информация

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

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

dynamic-final.png

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

Раскрыть
titleРазвернуть инструкцию

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

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

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

    keycloak-users.png

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

    user.png

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

    attribute.png

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

    dynamic-attribute.png

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

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

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

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

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

    create.png

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

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

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

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

    assign-user.png

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

    table-list3.png

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

    table.png

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

    formula2.png


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

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

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

dynamic-final2.png


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

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

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


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

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