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

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

На этой странице мы рассмотрим следующие сценарии настроек доступа к данным:

При описании примеров мы будем использовать следующие данные:

Таблица

Столбцы

Локация

  • City – список городов;

  • Country – список стран;

  • Region – список областей;

  • IsCapital – значение 1, если город является столицей и 0, если город не является столицей;

  • ID – идентификатор записи.

Предоставление доступа с помощью одного атрибута пользователя

Представьте ситуацию, в которой в вашей организации есть аналитик, который работает только по одному направлению и работает с данными, которые относятся только к Санкт-Петербургу. Для того, чтобы предоставить ему доступ ко всем данным, относящимся к Санкт-Петербургу, и при этом ограничить доступ ко всем остальным данным, вам необходимо сделать следующее:

1. Создать атрибут пользователя.

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

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

    keycloak-users.pngImage Removed
  • Выберите пользователя, для которого будет создаваться RLS-роль
    • .

    В нашем примере это будет пользователь ivanov:user.pngImage Removed

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

    attribute.pngImage Removed
  • В поле Key укажите уникальный ключ атрибута, например City, а в поле Value укажите его значение. В нашем примере это будет город Санкт-Петербург:

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

  • 2. Создать роль доступа на платформе с использованием этого атрибута и назначить ее пользователю.

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

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

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

      create.pngImage Removed
    4. Переименуйте созданную роль. Мы переименовали в Санкт-Петербург:

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

      click-button2.pngImage Removed
    6. В строке поиска введите имя пользователям (в нашем случае ivanov) и нажмите Назначить. Пользователю будет назначена созданная роль, о чём система проинформирует вас:

      assign-user(1).pngImage Removed

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

      table-list2(2).pngImage Removed

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

      location.pngImage Removed

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

      formula.pngImage Removed

    10. Данный запрос вернёт все строки из таблицы Локация, в которых столбец City содержит значение Санкт-Петербург.

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

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

    dynamic-final.pngImage Removed

    Предоставление доступа с помощью нескольких атрибутов пользователя

    В данном примере мы опишем ситуацию похожую на пример выше, но только доступ мы откроем к нескольким странам. Для этого необходимо сделать следующее:

    1. Создать несколько атрибутов пользователя.

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

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

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

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

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

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

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

    2. Создать роль доступа на платформе с использованием этих атрибутов и назначить ее пользователю.

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

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

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

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

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

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

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

      assign-user.pngImage Removed

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

      tables.pngImage Removed

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

      location.pngImage Removed

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

      formula1.pngImage Removed

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

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

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

    Без имени-20240409-200031.pngImage Removed

    Предоставление доступа с помощью атрибута пользователя и фиксированного правила

    Для данного примера давайте представим, что у вас есть аналитик, который работает с данными по нескольким странам, но вы также хотите, чтобы у него был доступ к данным по отдельному городу ещё одной страны. Для этого необходимо сделать следующее:

    1. Создать несколько атрибутов пользователя для предоставления доступа к странам.

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

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

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

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

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

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

      countries.pngImage Removed

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

    2. Создать роль доступа на платформе с использованием этих атрибутов и назначить ее пользователю

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

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

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

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

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

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

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

      assign-user.pngImage Removed

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

      tables.pngImage Removed

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

      location.pngImage Removed

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

      formula1.pngImage Removed

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

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

    3. Создать роль с фиксированным правилом для доступа к определенному городу и назначить ее пользователю.

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

      select-dataset.pngImage Removed

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

      menu.pngImage Removed

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

      create-new.pngImage Removed

    4. Переименуйте созданную роль. Мы переименовали в Шанхай, т.к. хотим предоставить доступ к данным по этому городу:

      new-city.pngImage Removed

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

      assign-role2.pngImage Removed

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

      select-user2.pngImage Removed

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

      assign-role3.pngImage Removed

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

      table-list3.pngImage Removed

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

      location.pngImage Removed

    10. В поле справа от списка таблиц введите выражение DAX фильтра таблицы. В нашем примере мы хотим, чтобы пользователь ivanov мог дополнительно просматривать данные, которые относятся к городу Шанхай. Для этого мы введем следующее выражение:
      'Локация' [City] IN {"Шанхай"}

      formula2.pngImage Removed

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

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

    После выполнения всех вышеописанных действий пользователь ivanov получит доступ к данным, относящимся к России, Кубе и Франции, а также к городу Шанхай.

    Предоставление доступа с помощью двух ролей с разными атрибутами пользователя

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

    1. Создать несколько атрибутов пользователя для предоставления доступа к странам и столицам.

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

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

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

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

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

      dynamic-attribute.pngImage Removed
    6. Добавьте еще один атрибут с таким же ключом. Наличие единого ключа позволит обратиться к ним как к массиву при создании правил доступа. В нашем примере мы добавим Франция:

      more-countries.pngImage Removed

    7. Аналогичным образом создайте еще один атрибут, но уже с другим ключом. Мы назвали его Capital и присвоили ему значение 1, которое в нашей таблице соответствует столицам:

      capital1.pngImage Removed
    8. Нажмите Save для сохранения изменений.

    2. Создать роли доступа на платформе с использованием этих атрибутов и назначить их пользователю.

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

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

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

      create.pngImage Removed
    4. Переименуйте созданную роль. Мы переименовали её в Россия, Франция:

      Russia-france.pngImage Removed

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

      Russia-france2.pngImage Removed

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

      R-F-assign.pngImage Removed

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

      R-F-assign2.pngImage Removed

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

      r-f-list.pngImage Removed

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

      location.pngImage Removed

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

      formula1.pngImage Removed

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

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


    Аналогичным образом создайте еще одну роль, пройдя все вышеописанные шаги, но только в пункте 4мы назовем её Столицы, а в пункте 10введем следующее выражение

    'Локация' [City] IN USERATTRIBUTEASARRAY ("Capital")

    После выполнения всех вышеописанных действий, пользователь ivanov получит доступ к данным, которые имеют отношение к двум странам (Россия и Франция) и ко всем столицам, занесённым в таблицу.

    Предоставление доступа с помощью роли пользователя и роли группы пользователей

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

    1. Убедиться, что данный пользователь состоит требуемой группе. Если его там нет, необходимо добавить его в группу в Keycloak:

    group.pngImage Removed

    2. Создать атрибут пользователя.

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

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

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

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

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

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

    3. Создать атрибут группы.

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

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

      groups.pngImage Removed

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

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

      group-attribute.pngImage Removed

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

      group-attribute2.pngImage Removed

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

    Создать роли и назначить их пользователю и группе.

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

    Для начала мы создадим роль для пользователя.

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

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

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

      create.pngImage Removed
    4. Переименуйте созданную роль. Мы переименовали в Санкт-Петербург:

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

      click-button2.pngImage Removed
    6. В строке поиска введите имя пользователям (в нашем случае ivanov) и нажмите Назначить. Пользователю будет назначена созданная роль, о чём система проинформирует вас:

      role-peter.pngImage Removed

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

      table-list2(2).pngImage Removed
    8. Выберите таблицу, для которой вы хотите создать правило. В нашем примере это Локация:

      location.pngImage Removed
    9. В поле справа от списка таблиц введите DAX-выражение для фильтрации таблицы. В нашем примере мы хотим, чтобы пользователь ivanov мог просматривать данные, которые относятся к городу Санкт-Петербург. Для этого мы введем следующее выражение:
      'Локация' [City] = USERATTRIBUTE ("Санкт-Петербург")

      formula.pngImage Removed
    10. Данный запрос вернёт все строки из таблицы Локация, в которых столбец City содержит значение Санкт-Петербург.

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

    Теперь аналогичным образом создадим роль для группы пользователей, куда входит пользователь ivanov. Нам нужно повторить все шаги, описанные выше, со следующими изменениями:

    • на шаге 4 переименуем роль в Россия;

    • на шаге 6 нужно будет ввести название группы (в нашем примере это Аналитики)

    • на шаге 9 необходимо выбрать таблицу Локация, ввести DAX-выражение, указанное ниже, и нажать Сохранить DAX:

    'Локация' [Country] = USERATTRIBUTE ("Россия")

    В результате произведенных действий пользователь получит доступ к данным, которые относятся к Санкт-Петербургу и России (посредством своей роли и роли группы, в которой он состоит).

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

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

    На этой странице

    Оглавление
    minLevel1
    maxLevel6
    outlinefalse
    stylenone
    typelist
    printablefalse
    🕑 Время чтения: 4 мин.


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

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