- Создатель Эдуард Столяр , отредактировано нояб. 19, 2024
Вы просматриваете старую версию данной страницы. Смотрите текущую версию.
Сравнить с текущим просмотр истории страницы
« Предыдущий Версия 2 Текущий »
Если для набора данных не определена ни одна RLS-роль, пользователь может просматривать все данные этого набора. Если же для данного набора создана хотя бы одна RLS-роль, то пользователь увидит сообщение об ошибке, если ему не присвоена никакая RLS-роль.
Перед выполнением настроек необходимо добавить и настроить маппер протоколов.
При использовании динамической модели RLS вам необходимо настроить атрибуты пользователя в Keycloak, а затем использовать значения этих атрибутов либо по отдельности, либо в качестве массива при создании правил доступа. Для использования отдельных значений применяется функция USERATTRIBUTE
, а при необходимости использования нескольких значений атрибутов применяется функция USERATTRIBUTEASARRAY
(см. в таблице ниже).
Для создания правил доступа используются DAX-выражения. Ниже представлен список поддерживаемых функций, которые можно использовать для этой цели:
Название функции | Описание |
---|---|
IN | DAX-функция. Используется для проверки наличия значения в заданном списке значений. Например: |
AND | DAX-функция. Используется для проверки, выполняются ли все условия, переданные в качестве аргументов. Возвращает Например: |
OR | DAX-функция. Используется для проверки нескольких условий и возвращает Например: |
USERATTRIBUTE | Применяется при использовании одного значения пользовательского атрибута. Данная функция создана специально для настройки правил доступа на платформе Visiology. |
USERATTRIBUTEASARRAY | Применяется при использовании нескольких значений пользовательского атрибута. Данная функция создана специально для настройки правил доступа на платформе Visiology. |
Также поддерживаются логические операторы &&
и ||
.
Ниже подробное описание процесса создания правил доступа с использованием этих функций.
Создание правил доступа с использованием функции USERATTRIBUTE
Для настройки атрибутов пользователей необходимо выполнить следующие шаги:
Откройте Keycloak, введя соответствующий адрес в адресной строке браузера:
<domain>/v3/keycloak
где<domain>
– адрес вашего сервера.Откройте консоль администратора и в боковой панели нажмите Users:
Выберите пользователя, для которого будут создаваться RLS-роли. В нашем примере это будет пользователь ivanov:
В открывшемся окне перейдите на вкладку Attributes и нажмите Add an attribute, чтобы добавить атрибут:
В поле Key укажите уникальный ключ атрибута, например City, а в поле Value укажите его значение. В нашем примере это будет город Москва:
Нажмите Save для сохранения изменений.
Перейдите в требуемую рабочую область и откройте набор данных, для которого вы хотите создать роли безопасности. В нашем примере это будет Продажи:
В открывшемся окне нажмите Данные > Роли безопасности:
В появившемся окне нажмите кнопку с крестиком для создания роли:
Переименуйте созданную роль. Мы переименовали в Москва:
Для назначения роли пользователю нажмите кнопку справа от названия роли:
В строке поиска начните вводить имя пользователям (в нашем случае ivanov):
Выберите найденного пользователя и нажмите Назначить. Пользователю будет назначена созданная роль, о чём система проинформирует вас:
Кликните название созданной роли в левой стороне диалогового окна. Отобразится список таблиц набора данных, с которым вы работаете:
Выберите таблицу, для которой вы хотите создать правило. В нашем примере это Города:
В поле справа от списка таблиц введите выражение DAX фильтра таблицы. В нашем примере мы хотим, чтобы пользователь Иванов, у которого в рабочей области Филиалы CreativeElectronix роль Зритель, мог просматривать только те данные, которые относятся к городу Москва. Для этого мы введем следующее выражение:
'Города' [City] = USERATTRIBUTE ("Москва")
Данный запрос вернёт все строки из таблицыГорода
, в которых столбецCity
содержит значение Москва.Нажмите Сохранить DAX в правом нижнем углу.
Функция USERATTRIBUTE
также поддерживает работу с массивами, содержащими один элемент (например, Country = ["Китай"]
). Если массив содержит более одного элемента, необходимо использовать функцию USERATTRIBUTEASARRAY
(см. ниже).
Теперь, при работе с набором данных Продажи, пользователь Иванов будет иметь доступ только к тем данным, которые относятся к городу Москве:
Создание правил доступа с использованием функции USERATTRIBUTEASARRAY
Для настройки атрибутов пользователей необходимо выполнить следующие шаги:
Откройте Keycloak, введя соответствующий адрес в адресной строке браузера:
<domain>/v3/keycloak
где<domain>
– адрес вашего сервера.Откройте консоль администратора и в боковой панели нажмите Users:
Выберите пользователя, для которого будут создаваться RLS-роли. В нашем примере это пользователь ivanov:
В открывшемся окне перейдите на вкладку Attributes и нажмите Add an attribute, чтобы добавить атрибут:
В поле Key укажите уникальный ключ атрибута, например Countries, а в поле Value укажите его значение. В нашем примере это Россия:
Добавьте еще несколько атрибутов с таким же ключом. Наличие единого ключа позволит обратиться к ним как к массиву при создании правил доступа. В нашем примере мы добавим Китай и Куба:
Нажмите Save для сохранения изменений.
Перейдите в требуемую рабочую область и откройте набор данных, для которого вы хотите создать роли безопасности. В нашем примере это Продажи:
В открывшемся окне нажмите Данные > Роли безопасности:
В появившемся окне нажмите кнопку с крестиком для создания роли:
Переименуйте созданную роль. Мы переименовали её в Доступные страны:
Для назначения роли пользователю нажмите кнопку справа от названия роли:
В строке поиска начните вводить имя пользователям (в нашем случае ivanov):
Выберите найденного пользователя и нажмите Назначить. Пользователю будет назначена созданная роль, о чём система проинформирует вас:
Кликните название созданной роли в левой стороне диалогового окна. Отобразится список таблиц набора данных, с которым вы работаете:
Выберите таблицу, для которой вы хотите создать правило. В нашем примере это Города:
В поле справа от списка таблиц введите выражение DAX фильтра таблицы. В нашем примере мы хотим, чтобы пользователь Иванов, у которого в рабочей области Филиалы CreativeElectronix роль Зритель, мог просматривать только те данные, которые относятся к странам Россия, Китай и Куба. Для этого мы введем следующее выражение:
'Города' [Country] IN USERATTRIBUTEASARRAY ("Countries")
Данный запрос вернёт все строки из таблицыГорода
, в которых столбецCountry
содержит значения, указанные в атрибутах с ключомCountries
(т.е. Россия, Китай, Куба).Нажмите Сохранить DAX в правом нижнем углу.
Теперь, при работе с набором данных Продажи, пользователь Иванов будет иметь доступ только к тем данным, которые относятся к странам Россия, Китай и Куба:
Смотрите также
📄 Администрирование рабочих областей
📄 Настройка статической RLS
- Нет меток