Поделиться через


Row-level security (RLS) with Power BI (Безопасность на уровне строк (RLS) в Power BI)

Безопасность на уровне строк (RLS) с Помощью Power BI можно использовать для ограничения доступа к данным для заданных пользователей. Фильтры ограничивают доступ к данным на уровне строк, и вы можете определять фильтры в рамках ролей. В службе Power BI пользователи с доступом к рабочей области имеют доступ к семантическим моделям в этой рабочей области. RLS ограничивает доступ только к данным для пользователей с разрешениями средства просмотра . Он не применяется к администраторам, членам или участникам.

Вы можете настроить RLS для моделей данных, импортированных в Power BI с помощью Power BI. Вы также можете настроить RLS на семантических моделях, использующих DirectQuery, например SQL Server. Для динамических подключений служб Analysis Services или Azure Analysis Services вы настраиваете безопасность на уровне строк в модели, а не в Power BI. Параметр безопасности не отображается для семантических моделей динамического подключения.

Определение ролей и правил в Power BI Desktop

Роли и правила можно определить в Power BI Desktop. С помощью этого редактора можно переключаться между интерфейсом раскрывающегося списка по умолчанию и интерфейсом DAX. При публикации в Power BI вы также публикуете определения ролей.

Определение ролей безопасности:

  1. Импортируйте данные в отчет Power BI Desktop или настройте подключение DirectQuery.

    Примечание.

    Нельзя определить роли в Power BI Desktop для подключений служб Analysis Services в режиме реального времени. Это необходимо сделать в модели служб Analysis Services.

  2. На вкладке "Моделирование " выберите "Управление ролями".

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

  4. В разделе "Роли" введите имя роли и нажмите Enter.

    Примечание.

    Вы не можете определить роль с запятой, например, London,ParisRole.

  5. В разделе Выбор таблиц выберите таблицу, к которой вы хотите применить фильтр безопасности на уровне строки.

  6. Под Фильтрация данных используйте редактор по умолчанию, чтобы определить свои роли. Созданные выражения возвращают значение true или false.

    Примечание.

    Не все фильтры безопасности на уровне строк, поддерживаемые в Power BI, можно определить с помощью редактора по умолчанию. Ограничения включают выражения, которые сегодня можно определить только с помощью DAX, включая динамические правила, такие как username() или userprincipalname(). Чтобы определить роли с помощью этих фильтров, переключитесь на использование редактора DAX.

  7. При необходимости выберите Перейти в редактор DAX чтобы использовать редактор DAX для определения вашей роли. Выражения DAX возвращают значение true или false. Например: [Entity ID] = “Value”. Редактор DAX оснащен функцией автозавершения для формул (интеллисенс). Установите флажок над полем выражения, чтобы проверить выражение и кнопку X над полем выражения, чтобы вернуть изменения.

    Примечание.

    В этом выражении можно использовать имя пользователя( ). Помните, что имя пользователя() имеет формат DOMAIN\username в Power BI Desktop. В службе Power BI и сервере отчетов Power BI это представлено в формате универсального имени пользователя (UPN). Кроме того, в этом поле выражения используйте запятые для разделения аргументов функции DAX, даже если используется языковой стандарт, который обычно использует разделители с запятой, например французский или немецкий.

  8. Вы можете вернуться к редактору по умолчанию, выбрав Перейти к редактору по умолчанию. Все изменения, сделанные в любом интерфейсе редактора, сохраняются при переключении между интерфейсами, если это возможно. При определении роли с помощью редактора DAX, который не может быть определен в редакторе по умолчанию, при попытке переключиться в редактор по умолчанию появится предупреждение о том, что переключение редакторов может привести к потере некоторых сведений. Чтобы сохранить эти сведения, выберите Отмена и продолжайте изменять эту роль только в редакторе DAX.

    Примечание.

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

  9. Выберите Сохранить.

Вы не можете назначать пользователей на роль в Power BI Desktop. Вы назначаете их в службе Power BI. Вы можете включить динамическую безопасность в Power BI Desktop, используя функции DAX username() или userprincipalname() и правильно настроив соответствующие связи.

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

Дополнительные сведения см. в статье "Двунаправленная перекрестная фильтрация с помощью DirectQuery в Power BI " и технической статье "Защита семантической модели табличной бизнес-аналитики ".

Снимок экрана настройки отношений модели для применения фильтра безопасности в обоих направлениях.

Управление безопасностью модели

Чтобы управлять безопасностью в семантической модели, откройте рабочую область, в которой сохранена семантическая модель в Fabric, и выполните следующие действия:

  1. В Fabric выберите меню "Дополнительные параметры " для семантической модели. Это меню отображается при наведении указателя мыши на имя семантической модели.

    Снимок экрана: меню

  2. Выберите Безопасность.

    Снимок экрана: меню

Безопасность перенаправляет вас на страницу "Безопасность на уровне ролей", где вы добавляете пользователей в созданную роль. Участники (и пользователи с более высокими ролями в рабочей области) увидят Безопасность и могут назначать пользователей на роли.

Примечание.

Вы можете управлять безопасностью только в моделях с ролями безопасности на уровне строк, уже определенными в Power BI Desktop или при редактировании модели данных в службе Power BI. Если у вашей модели еще нет ролей, вы не можете управлять безопасностью в службе Power BI.

Работа с членами

Добавить участников

В служба Power BI можно добавить участника в роль, введя адрес электронной почты или имя пользователя или группы безопасности. Невозможно добавить группы, созданные в Power BI. Вы можете добавлять участников из вне вашей организации.

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

Обратите внимание, что группы Microsoft 365 не поддерживаются и их невозможно добавить в какие-либо роли.

Снимок экрана, показывающий, как добавить участника.

Вы также можете увидеть, сколько участников принадлежат к роли, по числу, указанному в скобках рядом с именем роли или рядом с Участниками.

Снимок экрана, на котором показаны члены в роли.

Удаление членов

Вы можете удалить участников, выбрав X рядом с их именем.

Снимок экрана, на котором показано, как удалить участника.

Проверка роли в службе Power BI

Вы можете убедиться, что определенная роль работает правильно в службе Power BI, протестировав ее.

  1. Выберите дополнительные параметры (...) рядом с ролью.
  2. Выберите "Тест в качестве роли".

Снимок экрана: параметр

Вы перенаправляетесь в отчет, опубликованный из Power BI Desktop с этой семантической моделью, если она существует. Панели мониторинга недоступны для тестирования с помощью параметра Test as role.

В заголовке страницы отображается роль, применяемая. Проверьте другие роли, сочетание ролей или конкретного человека, выбрав сейчас просматривается как. Здесь вы увидите важные сведения о разрешениях, относящихся к тестируемой личности или роли. Дополнительные сведения о том, как разрешения взаимодействуют с RLS, см. в статье о пользовательском интерфейсе RLS.

Снимок экрана: текущий просмотр в режиме раскрывающегося списка для конкретного пользователя.

Проверьте другие отчеты, подключенные к семантической модели, выбрав "Просмотр " в заголовке страницы. Отчеты можно тестировать только в той же рабочей области, что и семантическая модель.

Снимок экрана: выбираем другой отчет для тестирования.

Чтобы вернуться к обычному просмотру, нажмите кнопку "Вернуться к безопасности на уровне строк".

Примечание.

Функция "Тест как роль" не работает для моделей DirectQuery с включенной функцией Единый вход (SSO). Кроме того, не все аспекты отчета можно проверить с помощью функции "Тестирование как роли," включая визуализации Q&A, визуализации быстрых аналитических сведений и Copilot.

Использование функции DAX username() или userprincipalname()

Вы можете воспользоваться функциями DAX username() или userprincipalname() в наборе данных. Их можно использовать в выражениях в Power BI Desktop. При публикации модели она будет использоваться в службе Power BI.

В Power BI Desktop имя пользователя () возвращает пользователя в формате DOMAIN\User и userprincipalname() в форматеuser@contoso.com.

В службе Power BI username() и userprincipalname() возвращают учетное имя пользователя (UPN). Это выглядит примерно так, как адрес электронной почты.

Использование RLS с рабочими областями в Power BI

При публикации отчета Power BI Desktop в рабочей области в службе Power BI роли RLS применяются к участникам, назначенным на роль Просмотрщик в этой рабочей области. Даже если просмотрщики получают разрешения на сборку для семантической модели, RLS по-прежнему применяется. Например, если пользователи с разрешением на создание используют Анализ в Excel, их представление данных ограничено RLS. Члены рабочей области, назначенные администратором, участником или участником, имеют разрешение на изменение семантической модели и, следовательно, RLS не применяется к ним. Если вы хотите, чтобы RLS применялся к людям в рабочей области, им можно назначить только роль наблюдателя. Узнайте больше о ролях в рабочих областях.

Рекомендации и ограничения

Здесь можно увидеть текущие ограничения безопасности на уровне строк в облачных моделях:

  • Если вы ранее определили роли и правила в служба Power BI, необходимо повторно создать их в Power BI Desktop.
  • Вы можете определить RLS только в семантических моделях, созданных с помощью Power BI Desktop. Если вы хотите включить RLS для семантических моделей, созданных с помощью Excel, сначала необходимо преобразовать файлы в файлы Power BI Desktop (PBIX). Подробнее.
  • Основные учетные записи службы не могут быть добавлены в роль RLS. Соответственно, RLS не применяется для приложений, использующих учетную запись службы в качестве окончательного эффективного удостоверения.
  • Поддерживаются только подключения типа Import и DirectQuery. Динамические подключения к службам Analysis Services обрабатываются в локальной модели.
  • С включенной функцией RLS использование функции USERELATIONSHIP() в запросах и мерах DAX может привести к непредвиденным ошибкам. Чтобы обойти эту проблему, измените выражения DAX, чтобы избежать USERELATIONSHIP() и использовать связи уровня модели или другие шаблоны DAX.
  • Функция Test as role/View as role не работает для моделей DirectQuery с включенным единым входом (Single Sign-On, SSO).
  • Тест в качестве роли или представления в качестве функции роли отображает только отчеты из рабочей области семантических моделей.
  • Функция test as role/View as role не работает для отчетов с разбивкой на страницы.

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

Вопросы и ответы

Вопрос. Что делать, если ранее я создал роли и правила для набора данных в служба Power BI? Они по-прежнему работают, если я ничего не делаю?
Ответ. Нет, визуальные элементы не будут правильно отображаться. Необходимо повторно создать роли и правила в Power BI Desktop, а затем опубликовать в службу Power BI.

Вопрос. Можно ли создать эти роли для источников данных служб Analysis Services?
Ответ. Да, если вы импортировали данные в Power BI Desktop. Если вы используете динамическое подключение, вы не можете настроить RLS в службе Power BI. Вы определяете RLS в локальной модели служб Analysis Services.

Вопрос. Можно ли использовать RLS для ограничения столбцов или мер, доступных моими пользователями?
Ответ. Нет, если у пользователя есть доступ к определенной строке данных, они могут видеть все столбцы данных для этой строки. Чтобы ограничить доступ к столбцам и метаданным столбцов, рекомендуется использовать безопасность на уровне объекта.

Вопрос. Позволяет ли RLS скрывать подробные данные, но предоставлять доступ к данным, обобщенным в визуальных элементах?
Ответ. Нет, вы защищаете отдельные строки данных, но пользователи всегда могут видеть сведения или суммированные данные.

Вопрос. Мой источник данных уже имеет определенные роли безопасности (например, роли SQL Server или роли SAP BW). Что такое связь между этими ролями и RLS?
Ответ. Ответ зависит от того, импортируете ли вы данные или используете DirectQuery. Если вы импортируете данные в набор данных Power BI, роли безопасности в источнике данных не используются. В этом случае необходимо определить RLS для применения правил безопасности для пользователей, которые подключаются в Power BI. Если вы используете DirectQuery, используются роли безопасности в источнике данных. Когда пользователь открывает отчет, Power BI отправляет запрос в базовый источник данных, который применяет правила безопасности к данным на основе учетных данных пользователя.

Вопрос. Может ли пользователь принадлежать более одной роли?
Ответ. Пользователь может принадлежать нескольким ролям, а роли являются аддитивными. Например, если пользователь принадлежит к ролям "Продажи" и "Маркетинг", они могут просматривать данные для обеих этих ролей.

Вопросы? Попробуйте обратиться к сообществу Power BI с вопросами? Участие в разработке идей по улучшению Power BI