Atlassian uses cookies to improve your browsing experience, perform analytics and research, and conduct advertising. Accept all cookies to indicate that you agree to our use of cookies on your device. Atlassian cookies and tracking notice, (opens new window)
На этой странице мы рассмотрим следующие сценарии настроек доступа к данным:
доступ к данным, относящимся к одному объекту, с помощью одного атрибута пользователя;
доступ к данным, относящимся к нескольким объектам, с помощью нескольких атрибутов пользователя;
доступ к данным, относящимся к одному или нескольким объектам, с помощью атрибута пользователя и фиксированного правила;
доступ к данным, относящимся к одному или нескольким объектам, с помощью двух ролей с разными атрибутами пользователя;
доступ к данным, относящимся к одному или нескольким объектам, с помощью одной роли пользователя и роли группы пользователей.
При описании примеров мы будем использовать следующие данные:
Таблица
Столбцы
Таблица
Столбцы
Локация
City – список городов;
Country – список стран;
IsCapital – значение 1, если город является столицей и 0, если город не является столицей;
ID – идентификатор записи.
Предоставление доступа с помощью одного атрибута пользователя
Представьте ситуацию, в которой в вашей организации есть аналитик, который работает только по одному направлению и работает с данными, которые относятся только к Санкт-Петербургу. Для того, чтобы предоставить ему доступ ко всем данным, относящимся к Санкт-Петербургу, и при этом ограничить доступ ко всем остальным данным, вам необходимо сделать следующее:
1. Создать атрибут пользователя.
Откройте Keycloak, введя соответствующий адрес в адресной строке браузера: <domain>/v3/keycloak где <domain> – адрес вашего сервера.
Откройте консоль администратора и в боковой панели нажмите Users:
Выберите пользователя, для которого будет создаваться RLS-роль. В нашем примере это будет пользователь ivanov:
В открывшемся окне перейдите на вкладку Attributes и нажмите Add an attribute, чтобы добавить атрибут:
В поле Key укажите уникальный ключ атрибута, например City, а в поле Value укажите его значение. В нашем примере это будет город Санкт-Петербург:
Нажмите Save для сохранения изменений.
2. Создать роль доступа на платформе с использованием этого атрибута и назначить ее пользователю.
Перейдите в требуемую рабочую область и откройте набор данных, для которого вы хотите создать роль безопасности. В нашем примере это будет Продажи:
В открывшемся окне нажмите Данные > Роли безопасности:
В появившемся окне нажмите кнопку с крестиком для создания роли:
Переименуйте созданную роль. Мы переименовали в Санкт-Петербург:
Для назначения роли пользователю нажмите кнопку справа от названия роли:
В строке поиска введите имя пользователям (в нашем случае ivanov) и нажмите Назначить. Пользователю будет назначена созданная роль, о чём система проинформирует вас:
Кликните название созданной роли в левой стороне диалогового окна. Отобразится список таблиц набора данных, с которым вы работаете:
Выберите таблицу, для которой вы хотите создать правило. В нашем примере это Локация:
В поле справа от списка таблиц введите DAX-выражение фильтрации. В нашем примере мы хотим, чтобы пользователь ivanov, у которого в рабочей области Филиалы CreativeElectronix роль Зритель, мог просматривать только те данные, которые относятся к городу Санкт-Петергбург. Для этого мы введем следующее выражение: 'Локация' [City] = USERATTRIBUTE ("Санкт-Петербург")
Данный запрос вернёт все строки из таблицы Локация, в которых столбец City содержит значение Санкт-Петербург.
Нажмите Сохранить DAX в правом нижнем углу.
Теперь, при работе с набором данных Продажи, пользователь ivanov будет иметь доступ только к тем данным, которые относятся к городу Санкт-Петербург:
Предоставление доступа с помощью нескольких атрибутов пользователя
В данном примере мы опишем ситуацию похожую на пример выше, но только доступ мы откроем к нескольким странам. Для этого необходимо сделать следующее:
1. Создать несколько атрибутов пользователя.
Откройте Keycloak, введя соответствующий адрес в адресной строке браузера: <domain>/v3/keycloak где <domain> – адрес вашего сервера.
Откройте консоль администратора и в боковой панели нажмите Users:
Выберите пользователя, для которого будут создаваться RLS-роли. В нашем примере это пользователь ivanov:
В открывшемся окне перейдите на вкладку Attributes и нажмите Add an attribute, чтобы добавить атрибут:
В поле Key укажите уникальный ключ атрибута, например Countries, а в поле Value укажите его значение. В нашем примере это Россия:
Добавьте еще несколько атрибутов с таким же ключом. Наличие единого ключа позволит обратиться к ним как к массиву при создании правил доступа. В нашем примере мы добавим Китай и Куба:
Нажмите Save для сохранения изменений.
2. Создать роль доступа на платформе с использованием этих атрибутов и назначить ее пользователю.
Перейдите в требуемую рабочую область и откройте набор данных, для которого вы хотите создать роли безопасности. В нашем примере это Продажи:
В открывшемся окне нажмите Данные > Роли безопасности:
В появившемся окне нажмите кнопку с крестиком для создания роли:
Переименуйте созданную роль. Мы переименовали её в Доступные страны:
Для назначения роли пользователю нажмите кнопку справа от названия роли:
В строке поиска начните вводить имя пользователям (в нашем случае ivanov):
Выберите найденного пользователя и нажмите Назначить. Пользователю будет назначена созданная роль, о чём система проинформирует вас:
Кликните название созданной роли в левой стороне диалогового окна. Отобразится список таблиц набора данных, с которым вы работаете:
Выберите таблицу, для которой вы хотите создать правило. В нашем примере это Локация:
В поле справа от списка таблиц введите выражение DAX фильтра таблицы. В нашем примере мы хотим, чтобы пользователь ivanov, у которого в рабочей области Филиалы CreativeElectronix роль Зритель, мог просматривать только те данные, которые относятся к странам Россия, Китай и Куба. Для этого мы введем следующее выражение: 'Локация' [Country] IN USERATTRIBUTEASARRAY ("Countries")
Данный запрос вернёт все строки из таблицы Локация, в которых столбец Country содержит значения, указанные в атрибутах с ключом Countries (т.е. Россия, Китай, Куба).
Нажмите Сохранить DAX в правом нижнем углу.
Теперь, при работе с набором данных Продажи, пользователь ivanov будет иметь доступ только к тем данным, которые относятся к странам Россия, Китай и Куба:
Предоставление доступа с помощью атрибута пользователя и фиксированного правила
Для данного примера давайте представим, что у вас есть аналитик, который работает с данными по нескольким странам, но вы также хотите, чтобы у него был доступ к данным по отдельному городу ещё одной страны. Для этого необходимо сделать следующее:
1. Создать несколько атрибутов пользователя для предоставления доступа к странам.
Откройте Keycloak, введя соответствующий адрес в адресной строке браузера: <domain>/v3/keycloak где <domain> – адрес вашего сервера.
Откройте консоль администратора и в боковой панели нажмите Users:
Выберите пользователя, для которого будут создаваться RLS-роли. В нашем примере это пользователь ivanov:
В открывшемся окне перейдите на вкладку Attributes и нажмите Add an attribute, чтобы добавить атрибут:
В поле Key укажите уникальный ключ атрибута, например Countries, а в поле Value укажите его значение. В нашем примере это Россия:
Добавьте еще несколько атрибутов с таким же ключом. Наличие единого ключа позволит обратиться к ним как к массиву при создании правил доступа. В нашем примере мы добавим Франция и Куба:
Нажмите Save для сохранения изменений.
2. Создать роль доступа на платформе с использованием этих атрибутов и назначить ее пользователю
Перейдите в требуемую рабочую область и откройте набор данных, для которого вы хотите создать роли безопасности. В нашем примере это Продажи:
В открывшемся окне нажмите Данные > Роли безопасности:
В появившемся окне нажмите кнопку с крестиком для создания роли:
Переименуйте созданную роль. Мы переименовали её в Доступные страны:
Для назначения роли пользователю нажмите кнопку справа от названия роли:
В строке поиска начните вводить имя пользователям (в нашем случае ivanov):
Выберите найденного пользователя и нажмите Назначить. Пользователю будет назначена созданная роль, о чём система проинформирует вас:
Кликните название созданной роли в левой стороне диалогового окна. Отобразится список таблиц набора данных, с которым вы работаете:
Выберите таблицу, для которой вы хотите создать правило. В нашем примере это Локация:
В поле справа от списка таблиц введите выражение DAX фильтра таблицы. В нашем примере мы хотим, чтобы пользователь Иванов, у которого в рабочей области Филиалы CreativeElectronix роль Зритель, мог просматривать только те данные, которые относятся к странам Россия, Франция и Куба. Для этого мы введем следующее выражение: 'Локация' [Country] IN USERATTRIBUTEASARRAY ("Countries")
Данный запрос вернёт все строки из таблицы Локация, в которых столбец Country содержит значения, указанные в атрибутах с ключом Countries (т.е. Россия, Франция, Куба).
Нажмите Сохранить DAX в правом нижнем углу.
3. Создать роль с фиксированным правилом для доступа к определенному городу и назначить ее пользователю.
Находясь в рабочей области, перейдите в набор данных, для которого вы хотите создать роли безопасности. В нашем примере это Продажи:
В открывшемся окне нажмите Данные > Роли безопасности:
В появившемся окне нажмите кнопку с крестиком для создания роли:
Переименуйте созданную роль. Мы переименовали в Шанхай, т.к. хотим предоставить доступ к данным по этому городу:
Для назначения роли пользователю нажмите кнопку справа от названия роли:
В строке поиска начните вводить имя/фамилию/электронный адрес пользователя. Платформа отобразит список пользователей и групп, которые содержат вводимые символы:
Выберите требуемого пользователя и нажмите Назначить. Пользователю будет назначена созданная роль, о чём система проинформирует вас:
Кликните название созданной роли в левой стороне диалогового окна. Отобразится список таблиц набора данных, с которым вы работаете:
Выберите таблицу, для которой вы хотите создать правило. В нашем примере это Локация:
В поле справа от списка таблиц введите выражение DAX фильтра таблицы. В нашем примере мы хотим, чтобы пользователь ivanov мог дополнительно просматривать данные, которые относятся к городу Шанхай. Для этого мы введем следующее выражение: 'Локация' [City] IN {"Шанхай"}
Данный запрос вернёт все строки из таблицы Локация, в которых столбец City содержит Шанхай.
Нажмите Сохранить DAX в правом нижнем углу.
После выполнения всех вышеописанных действий пользователь ivanov получит доступ к данным, относящимся к России, Кубе и Франции, а также к городу Шанхай.
Предоставление доступа с помощью двух ролей с разными атрибутами пользователя
Теперь представьте ситуацию, в которой вы хотите предоставить пользователю доступ к данным, которые относятся к двум странам и ко всем столицам, указанным в таблице. Для этого необходимо сделать следующее:
1. Создать несколько атрибутов пользователя для предоставления доступа к странам и столицам.
Откройте Keycloak, введя соответствующий адрес в адресной строке браузера: <domain>/v3/keycloak где <domain> – адрес вашего сервера.
Откройте консоль администратора и в боковой панели нажмите Users:
Выберите пользователя, для которого будут создаваться RLS-роли. В нашем примере это пользователь ivanov:
В открывшемся окне перейдите на вкладку Attributes и нажмите Add an attribute, чтобы добавить атрибут:
В поле Key укажите уникальный ключ атрибута, например Countries, а в поле Value укажите его значение. В нашем примере это Россия:
Добавьте еще один атрибут с таким же ключом. Наличие единого ключа позволит обратиться к ним как к массиву при создании правил доступа. В нашем примере мы добавим Франция:
Аналогичным образом создайте еще один атрибут, но уже с другим ключом. Мы назвали его Capital и присвоили ему значение 1, которое в нашей таблице соответствует столицам:
Нажмите Save для сохранения изменений.
2. Создать роли доступа на платформе с использованием этих атрибутов и назначить их пользователю.
Перейдите в требуемую рабочую область и откройте набор данных, для которого вы хотите создать роли безопасности. В нашем примере это Продажи:
В открывшемся окне нажмите Данные > Роли безопасности:
В появившемся окне нажмите кнопку с крестиком для создания роли:
Переименуйте созданную роль. Мы переименовали её в Россия, Франция:
Для назначения роли пользователю нажмите кнопку справа от названия роли:
В строке поиска начните вводить имя пользователям (в нашем случае ivanov):
Выберите найденного пользователя и нажмите Назначить. Пользователю будет назначена созданная роль, о чём система проинформирует вас:
Кликните название созданной роли в левой стороне диалогового окна. Отобразится список таблиц набора данных, с которым вы работаете:
Выберите таблицу, для которой вы хотите создать правило. В нашем примере это Локация:
В поле справа от списка таблиц введите DAX-выражение фильтрации. В нашем примере мы хотим, чтобы пользователь ivanov мог просматривать только те данные, которые относятся к странам Россия и Франция. Для этого мы введем следующее выражение: 'Локация' [Country] IN USERATTRIBUTEASARRAY ("Countries")
Данный запрос вернёт все строки из таблицы Локация, в которых столбец Country содержит значения, указанные в атрибутах с ключом Countries (т.е. Россия и Франция).
Нажмите Сохранить DAX в правом нижнем углу.
Аналогичным образом создайте еще одну роль, пройдя все вышеописанные шаги, но только в пункте 4мы назовем её Столицы, а в пункте 10введем следующее выражение
'Локация' [City] IN USERATTRIBUTEASARRAY ("Capital")
После выполнения всех вышеописанных действий, пользователь ivanov получит доступ к данным, которые имеют отношение к двум странам (Россия и Франция) и ко всем столицам, занесённым в таблицу.
Предоставление доступа с помощью роли пользователя и роли группы пользователей
Для финального в этой статье примера давайте предположим, что вы хотите предоставить доступ пользователю к определенным данным с помощью двух ролей: одна роль назначается этому пользователю, другая назначается группе, в которой состоит данный пользователь. Для этого необходимо сделать следующее:
1. Убедиться, что данный пользователь состоит требуемой группе. Если его там нет, необходимо добавить его в группу в Keycloak:
2. Создать атрибут пользователя.
Откройте Keycloak, введя соответствующий адрес в адресной строке браузера: <domain>/v3/keycloak где <domain> – адрес вашего сервера.
Откройте консоль администратора и в боковой панели нажмите Users:
Выберите пользователя, для которого будет создаваться RLS-роль. В нашем примере это будет пользователь ivanov:
В открывшемся окне перейдите на вкладку Attributes и нажмите Add an attribute, чтобы добавить атрибут:
В поле Key укажите уникальный ключ атрибута, например City, а в поле Value укажите его значение. В нашем примере это будет город Санкт-Петербург:
Нажмите Save для сохранения изменений.
3. Создать атрибут группы.
Откройте Keycloak, введя соответствующий адрес в адресной строке браузера: <domain>/v3/keycloak где <domain> – адрес вашего сервера.
Откройте консоль администратора и в боковой панели нажмите Groups:
Щелкните название группы, для которой будет создаваться RLS-роль. В нашем примере это Аналитики.
В открывшемся окне перейдите на вкладку Attributes и нажмите Add an attribute, чтобы добавить атрибут:
В поле Key укажите уникальный ключ атрибута, например Country, а в поле Value укажите его значение. В нашем примере это будет Россия:
Нажмите Save для сохранения изменений.
Создать роли и назначить их пользователю и группе.
Для начала мы создадим роль для пользователя.
Перейдите в требуемую рабочую область и откройте набор данных, для которого вы хотите создать роль безопасности. В нашем примере это будет Продажи:
В открывшемся окне нажмите Данные > Роли безопасности:
В появившемся окне нажмите кнопку с крестиком для создания роли:
Переименуйте созданную роль. Мы переименовали в Санкт-Петербург:
Для назначения роли пользователю нажмите кнопку справа от названия роли:
В строке поиска введите имя пользователям (в нашем случае ivanov) и нажмите Назначить. Пользователю будет назначена созданная роль, о чём система проинформирует вас:
Кликните название созданной роли в левой стороне диалогового окна. Отобразится список таблиц набора данных, с которым вы работаете:
Выберите таблицу, для которой вы хотите создать правило. В нашем примере это Локация:
В поле справа от списка таблиц введите DAX-выражение для фильтрации таблицы. В нашем примере мы хотим, чтобы пользователь ivanov мог просматривать данные, которые относятся к городу Санкт-Петербург. Для этого мы введем следующее выражение: 'Локация' [City] = USERATTRIBUTE ("Санкт-Петербург")
Данный запрос вернёт все строки из таблицы Локация, в которых столбец City содержит значение Санкт-Петербург.
Нажмите Сохранить DAX в правом нижнем углу.
Теперь аналогичным образом создадим роль для группы пользователей, куда входит пользователь ivanov. Нам нужно повторить все шаги, описанные выше, со следующими изменениями:
на шаге 4 переименуем роль в Россия;
на шаге 6 нужно будет ввести название группы (в нашем примере это Аналитики)
на шаге 9 необходимо выбрать таблицу Локация, ввести DAX-выражение, указанное ниже, и нажать Сохранить DAX:
'Локация' [Country] = USERATTRIBUTE ("Россия")
В результате произведенных действий пользователь получит доступ к данным, которые относятся к Санкт-Петербургу и России (посредством своей роли и роли группы, в которой он состоит).