На этой странице мы рассмотрим следующие сценарии настроек доступа к данным:
доступ к данным, относящимся к одному объекту, с помощью одного атрибута пользователя;
доступ к данным, относящимся к нескольким объектам, с помощью нескольких атрибутов пользователя;
доступ к данным, относящимся к одному или нескольким объектам, с помощью атрибута пользователя и фиксированного правила;
доступ к данным, относящимся к одному или нескольким объектам, с помощью двух ролей с разными атрибутами пользователя;
доступ к данным, относящимся к одному или нескольким объектам, с помощью одной роли пользователя и роли группы пользователей;
предоставление доступа с помощью нескольких атрибутов пользователя одного или другого типа.
При описании примеров мы будем использовать следующие данные:
Таблица | Столбцы |
---|
Локация | City – список городов; Country – список стран; Region – список областей; IsCapital – значение 1 , если город является столицей и 0 , если город не является столицей; ID – идентификатор записи.
|
Предоставление доступа с помощью одного атрибута пользователя
Представьте ситуацию, в которой в вашей организации есть аналитик, который работает только по одному направлению и работает с данными, которые относятся только к Санкт-Петербургу. Для того, чтобы предоставить ему доступ ко всем данным, относящимся к Санкт-Петербургу, и при этом ограничить доступ ко всем остальным данным, вам необходимо сделать следующее:
1. Создать атрибут пользователя.
Раскрыть |
---|
title | Развернуть инструкцию |
---|
|
Откройте Keycloak, введя соответствующий адрес в адресной строке браузера:
<domain>/v3/keycloak
где <domain>
– адрес вашего сервера.
Откройте консоль администратора и в боковой панели нажмите Users:
Image RemovedВыберите пользователя, для которого будет создаваться RLS-роль В нашем примере это будет пользователь ivanov:Image RemovedВ открывшемся окне перейдите на вкладку Attributes и нажмите Add an attribute, чтобы добавить атрибут:
Image RemovedВ поле Key укажите уникальный ключ атрибута, например City, а в поле Value укажите его значение. В нашем примере это будет город Санкт-Петербург:
Image RemovedНажмите Save для сохранения изменений.
2. Создать роль доступа на платформе с использованием этого атрибута и назначить ее пользователю.
Раскрыть |
---|
title | Развернуть инструкцию |
---|
|
Перейдите в требуемую рабочую область и откройте набор данных, для которого вы хотите создать роль безопасности. В нашем примере это будет Продажи: Image RemovedВ открывшемся окне нажмите Данные > Роли безопасности: Image RemovedВ появившемся окне нажмите кнопку с крестиком для создания роли: Image RemovedПереименуйте созданную роль. Мы переименовали в Санкт-Петербург:
Image RemovedДля назначения роли пользователю нажмите кнопку справа от названия роли:
Image RemovedВ строке поиска введите имя пользователям (в нашем случае ivanov) и нажмите Назначить. Пользователю будет назначена созданная роль, о чём система проинформирует вас:
Image RemovedКликните название созданной роли в левой стороне диалогового окна. Отобразится список таблиц набора данных, с которым вы работаете:
Image RemovedВыберите таблицу, для которой вы хотите создать правило. В нашем примере это Локация:
Image RemovedВ поле справа от списка таблиц введите DAX-выражение фильтрации. В нашем примере мы хотим, чтобы пользователь ivanov, у которого в рабочей области Филиалы CreativeElectronix роль Зритель, мог просматривать только те данные, которые относятся к городу Санкт-Петергбург. Для этого мы введем следующее выражение:
'Локация' [City] = USERATTRIBUTE ("Санкт-Петербург")
Image RemovedДанный запрос вернёт все строки из таблицы Локация , в которых столбец City содержит значение Санкт-Петербург. Нажмите Сохранить DAX в правом нижнем углу.
Теперь, при работе с набором данных Продажи, пользователь ivanov будет иметь доступ только к тем данным, которые относятся к городу Санкт-Петербург:
Image Removed |
Предоставление доступа с помощью нескольких атрибутов пользователя
В данном примере мы опишем ситуацию похожую на пример выше, но только доступ мы откроем к нескольким странам. Для этого необходимо сделать следующее:
1. Создать несколько атрибутов пользователя.
Раскрыть |
---|
title | Развернуть инструкцию |
---|
|
Откройте Keycloak, введя соответствующий адрес в адресной строке браузера:
<domain>/v3/keycloak
где <domain>
– адрес вашего сервера.
Откройте консоль администратора и в боковой панели нажмите Users:
Image RemovedВыберите пользователя, для которого будут создаваться RLS-роли. В нашем примере это пользователь ivanov:
Image RemovedВ открывшемся окне перейдите на вкладку Attributes и нажмите Add an attribute, чтобы добавить атрибут:
Image Removed
В поле Key укажите уникальный ключ атрибута, например Countries, а в поле Value укажите его значение. В нашем примере это Россия:
Image RemovedДобавьте еще несколько атрибутов с таким же ключом. Наличие единого ключа позволит обратиться к ним как к массиву при создании правил доступа. В нашем примере мы добавим Китай и Куба:
Image RemovedНажмите Save для сохранения изменений.
2. Создать роль доступа на платформе с использованием этих атрибутов и назначить ее пользователю.
Раскрыть |
---|
title | Развернуть инструкцию |
---|
|
Перейдите в требуемую рабочую область и откройте набор данных, для которого вы хотите создать роли безопасности. В нашем примере это Продажи:
Image RemovedВ открывшемся окне нажмите Данные > Роли безопасности:
Image RemovedВ появившемся окне нажмите кнопку с крестиком для создания роли:
Image RemovedПереименуйте созданную роль. Мы переименовали её в Доступные страны:
Image RemovedДля назначения роли пользователю нажмите кнопку справа от названия роли:
Image RemovedВ строке поиска начните вводить имя пользователям (в нашем случае ivanov):
Image RemovedВыберите найденного пользователя и нажмите Назначить. Пользователю будет назначена созданная роль, о чём система проинформирует вас:
Image Removed
Кликните название созданной роли в левой стороне диалогового окна. Отобразится список таблиц набора данных, с которым вы работаете:
Image RemovedВыберите таблицу, для которой вы хотите создать правило. В нашем примере это Локация:
Image RemovedВ поле справа от списка таблиц введите выражение DAX фильтра таблицы. В нашем примере мы хотим, чтобы пользователь ivanov, у которого в рабочей области Филиалы CreativeElectronix роль Зритель, мог просматривать только те данные, которые относятся к странам Россия, Китай и Куба. Для этого мы введем следующее выражение:
'Локация' [Country] IN USERATTRIBUTEASARRAY ("Countries")
Image RemovedДанный запрос вернёт все строки из таблицы Локация
, в которых столбец Country
содержит значения, указанные в атрибутах с ключом Countries
(т.е. Россия, Китай, Куба).
Нажмите Сохранить DAX в правом нижнем углу.
Теперь, при работе с набором данных Продажи, пользователь ivanov будет иметь доступ только к тем данным, которые относятся к странам Россия, Китай и Куба:
Image Removed
Предоставление доступа с помощью атрибута пользователя и фиксированного правила
Для данного примера давайте представим, что у вас есть аналитик, который работает с данными по нескольким странам, но вы также хотите, чтобы у него был доступ к данным по отдельному городу ещё одной страны. Для этого необходимо сделать следующее:
1. Создать несколько атрибутов пользователя для предоставления доступа к странам.
Раскрыть |
---|
title | Развернуть инструкцию |
---|
|
Откройте Keycloak, введя соответствующий адрес в адресной строке браузера:
<domain>/v3/keycloak где <domain> – адрес вашего сервера. Откройте консоль администратора и в боковой панели нажмите Users: Image RemovedВыберите пользователя, для которого будут создаваться RLS-роли. В нашем примере это пользователь ivanov: Image RemovedВ открывшемся окне перейдите на вкладку Attributes и нажмите Add an attribute, чтобы добавить атрибут: Image RemovedВ поле Key укажите уникальный ключ атрибута, например Countries, а в поле Value укажите его значение. В нашем примере это Россия: Image RemovedДобавьте еще несколько атрибутов с таким же ключом. Наличие единого ключа позволит обратиться к ним как к массиву при создании правил доступа. В нашем примере мы добавим Франция и Куба:
Image RemovedНажмите Save для сохранения изменений.
|
2. Создать роль доступа на платформе с использованием этих атрибутов и назначить ее пользователю
Раскрыть |
---|
title | Развернуть инструкцию |
---|
|
Перейдите в требуемую рабочую область и откройте набор данных, для которого вы хотите создать роли безопасности. В нашем примере это Продажи: Image RemovedВ открывшемся окне нажмите Данные > Роли безопасности: Image RemovedВ появившемся окне нажмите кнопку с крестиком для создания роли: Image RemovedПереименуйте созданную роль. Мы переименовали её в Доступные страны: Image RemovedДля назначения роли пользователю нажмите кнопку справа от названия роли: Image RemovedВ строке поиска начните вводить имя пользователям (в нашем случае ivanov): Image RemovedВыберите найденного пользователя и нажмите Назначить. Пользователю будет назначена созданная роль, о чём система проинформирует вас: Image Removed Кликните название созданной роли в левой стороне диалогового окна. Отобразится список таблиц набора данных, с которым вы работаете: Image RemovedВыберите таблицу, для которой вы хотите создать правило. В нашем примере это Локация: Image RemovedВ поле справа от списка таблиц введите выражение DAX фильтра таблицы. В нашем примере мы хотим, чтобы пользователь Иванов, у которого в рабочей области Филиалы CreativeElectronix роль Зритель, мог просматривать только те данные, которые относятся к странам Россия, Франция и Куба. Для этого мы введем следующее выражение:
'Локация' [Country] IN USERATTRIBUTEASARRAY ("Countries") Image RemovedДанный запрос вернёт все строки из таблицы Локация , в которых столбец Country содержит значения, указанные в атрибутах с ключом Countries (т.е. Россия, Франция, Куба). Нажмите Сохранить DAX в правом нижнем углу.
|
3. Создать роль с фиксированным правилом для доступа к определенному городу и назначить ее пользователю.
Раскрыть |
---|
title | Развернуть инструкцию |
---|
|
Находясь в рабочей области, перейдите в набор данных, для которого вы хотите создать роли безопасности. В нашем примере это Продажи:
Image RemovedВ открывшемся окне нажмите Данные > Роли безопасности:
Image RemovedВ появившемся окне нажмите кнопку с крестиком для создания роли:
Image RemovedПереименуйте созданную роль. Мы переименовали в Шанхай, т.к. хотим предоставить доступ к данным по этому городу:
Image RemovedДля назначения роли пользователю нажмите кнопку справа от названия роли:
Image RemovedВ строке поиска начните вводить имя/фамилию/электронный адрес пользователя. Платформа отобразит список пользователей и групп, которые содержат вводимые символы:
Image RemovedВыберите требуемого пользователя и нажмите Назначить. Пользователю будет назначена созданная роль, о чём система проинформирует вас:
Image RemovedКликните название созданной роли в левой стороне диалогового окна. Отобразится список таблиц набора данных, с которым вы работаете:
Image RemovedВыберите таблицу, для которой вы хотите создать правило. В нашем примере это Локация:
Image RemovedВ поле справа от списка таблиц введите выражение DAX фильтра таблицы. В нашем примере мы хотим, чтобы пользователь ivanov мог дополнительно просматривать данные, которые относятся к городу Шанхай. Для этого мы введем следующее выражение:
'Локация' [City] IN {"Шанхай"}
Image Removed Данный запрос вернёт все строки из таблицы Локация , в которых столбец City содержит Шанхай. Нажмите Сохранить DAX в правом нижнем углу.
|
После выполнения всех вышеописанных действий пользователь ivanov получит доступ к данным, относящимся к России, Кубе и Франции, а также к городу Шанхай.
Предоставление доступа с помощью двух ролей с разными атрибутами пользователя
Теперь представьте ситуацию, в которой вы хотите предоставить пользователю доступ к данным, которые относятся к двум странам и ко всем столицам, указанным в таблице. Для этого необходимо сделать следующее:
1. Создать несколько атрибутов пользователя для предоставления доступа к странам и столицам.
Раскрыть |
---|
title | Развернуть инструкцию |
---|
|
Откройте Keycloak, введя соответствующий адрес в адресной строке браузера:
<domain>/v3/keycloak где <domain> – адрес вашего сервера. Откройте консоль администратора и в боковой панели нажмите Users: Image RemovedВыберите пользователя, для которого будут создаваться RLS-роли. В нашем примере это пользователь ivanov: Image RemovedВ открывшемся окне перейдите на вкладку Attributes и нажмите Add an attribute, чтобы добавить атрибут: Image RemovedВ поле Key укажите уникальный ключ атрибута, например Countries, а в поле Value укажите его значение. В нашем примере это Россия: Image RemovedДобавьте еще один атрибут с таким же ключом. Наличие единого ключа позволит обратиться к ним как к массиву при создании правил доступа. В нашем примере мы добавим Франция: Image RemovedАналогичным образом создайте еще один атрибут, но уже с другим ключом. Мы назвали его Capital и присвоили ему значение 1 , которое в нашей таблице соответствует столицам:
Image RemovedНажмите Save для сохранения изменений.
|
2. Создать роли доступа на платформе с использованием этих атрибутов и назначить их пользователю.
Раскрыть |
---|
title | Развернуть инструкцию |
---|
|
Перейдите в требуемую рабочую область и откройте набор данных, для которого вы хотите создать роли безопасности. В нашем примере это Продажи:
Image RemovedВ открывшемся окне нажмите Данные > Роли безопасности:
Image RemovedВ появившемся окне нажмите кнопку с крестиком для создания роли:
Image RemovedПереименуйте созданную роль. Мы переименовали её в Россия, Франция:
Image RemovedДля назначения роли пользователю нажмите кнопку справа от названия роли:
Image RemovedВ строке поиска начните вводить имя пользователям (в нашем случае ivanov):
Image RemovedВыберите найденного пользователя и нажмите Назначить. Пользователю будет назначена созданная роль, о чём система проинформирует вас:
Image RemovedКликните название созданной роли в левой стороне диалогового окна. Отобразится список таблиц набора данных, с которым вы работаете:
Image RemovedВыберите таблицу, для которой вы хотите создать правило. В нашем примере это Локация:
Image RemovedВ поле справа от списка таблиц введите DAX-выражение фильтрации. В нашем примере мы хотим, чтобы пользователь ivanov мог просматривать только те данные, которые относятся к странам Россия и Франция. Для этого мы введем следующее выражение:
'Локация' [Country] IN USERATTRIBUTEASARRAY ("Countries")
Image RemovedДанный запрос вернёт все строки из таблицы Локация
, в которых столбец Country
содержит значения, указанные в атрибутах с ключом Countries
(т.е. Россия и Франция).
Нажмите Сохранить DAX в правом нижнем углу.
Аналогичным образом создайте еще одну роль, пройдя все вышеописанные шаги, но только в пункте 4
мы назовем её Столицы, а в пункте 10
введем следующее выражение 'Локация' [City] IN USERATTRIBUTEASARRAY ("Capital")
После выполнения всех вышеописанных действий, пользователь ivanov получит доступ к данным, которые имеют отношение к двум странам (Россия и Франция) и ко всем столицам, занесённым в таблицу.
Предоставление доступа с помощью роли пользователя и роли группы пользователей
Для финального в этой статье примера давайте предположим, что вы хотите предоставить доступ пользователю к определенным данным с помощью двух ролей: одна роль назначается этому пользователю, другая назначается группе, в которой состоит данный пользователь. Для этого необходимо сделать следующее:
1. Убедиться, что данный пользователь состоит требуемой группе. Если его там нет, необходимо добавить его в группу в Keycloak:
Image Removed 2. Создать атрибут пользователя.
Раскрыть |
---|
title | Развернуть инструкцию |
---|
|
Откройте Keycloak, введя соответствующий адрес в адресной строке браузера:
<domain>/v3/keycloak где <domain> – адрес вашего сервера. Откройте консоль администратора и в боковой панели нажмите Users: Image RemovedВыберите пользователя, для которого будет создаваться RLS-роль. В нашем примере это будет пользователь ivanov: Image RemovedВ открывшемся окне перейдите на вкладку Attributes и нажмите Add an attribute, чтобы добавить атрибут: Image RemovedВ поле Key укажите уникальный ключ атрибута, например City, а в поле Value укажите его значение. В нашем примере это будет город Санкт-Петербург: Image RemovedНажмите Save для сохранения изменений.
|
3. Создать атрибут группы.
Раскрыть |
---|
title | Развернуть инструкцию |
---|
|
Откройте Keycloak, введя соответствующий адрес в адресной строке браузера:
<domain>/v3/keycloak где <domain> – адрес вашего сервера. Откройте консоль администратора и в боковой панели нажмите Groups:
Image RemovedЩелкните название группы, для которой будет создаваться RLS-роль. В нашем примере это Аналитики. В открывшемся окне перейдите на вкладку Attributes и нажмите Add an attribute, чтобы добавить атрибут:
Image RemovedВ поле Key укажите уникальный ключ атрибута, например Country, а в поле Value укажите его значение. В нашем примере это будет Россия:
Image RemovedНажмите Save для сохранения изменений.
|
Создать роли и назначить их пользователю и группе.
Раскрыть |
---|
title | Развернуть инструкцию |
---|
|
Для начала мы создадим роль для пользователя. Перейдите в требуемую рабочую область и откройте набор данных, для которого вы хотите создать роль безопасности. В нашем примере это будет Продажи: Image RemovedВ открывшемся окне нажмите Данные > Роли безопасности: Image RemovedВ появившемся окне нажмите кнопку с крестиком для создания роли: Image RemovedПереименуйте созданную роль. Мы переименовали в Санкт-Петербург:
Image RemovedДля назначения роли пользователю нажмите кнопку справа от названия роли:
Image RemovedВ строке поиска введите имя пользователям (в нашем случае ivanov) и нажмите Назначить. Пользователю будет назначена созданная роль, о чём система проинформирует вас:
Image RemovedКликните название созданной роли в левой стороне диалогового окна. Отобразится список таблиц набора данных, с которым вы работаете:
Image RemovedВыберите таблицу, для которой вы хотите создать правило. В нашем примере это Локация:
Image RemovedВ поле справа от списка таблиц введите DAX-выражение для фильтрации таблицы. В нашем примере мы хотим, чтобы пользователь ivanov мог просматривать данные, которые относятся к городу Санкт-Петербург. Для этого мы введем следующее выражение:
'Локация' [City] = USERATTRIBUTE ("Санкт-Петербург")
Image RemovedДанный запрос вернёт все строки из таблицы Локация , в которых столбец City содержит значение Санкт-Петербург. Нажмите Сохранить DAX в правом нижнем углу.
Теперь аналогичным образом создадим роль для группы пользователей, куда входит пользователь ivanov. Нам нужно повторить все шаги, описанные выше, со следующими изменениями: на шаге 4 переименуем роль в Россия; на шаге 6 нужно будет ввести название группы (в нашем примере это Аналитики) на шаге 9 необходимо выбрать таблицу Локация, ввести DAX-выражение, указанное ниже, и нажать Сохранить DAX:
'Локация' [Country] = USERATTRIBUTE ("Россия")
|
В результате произведенных действий пользователь получит доступ к данным, которые относятся к Санкт-Петербургу и России (посредством своей роли и роли группы, в которой он состоит).
Смотрите также
📄 Настройка динамической RLS
📄 Настройка статической RLS