Безопасность на уровне строк (RLS) на сервере отчетов Power BI

Настройка безопасности на уровне строк (RLS) с сервером отчетов Power BI может ограничить доступ к данным для определенных пользователей. Фильтры ограничивают доступ к данным на уровне строк; определить их можно в ролях. Если вы используете разрешения по умолчанию на сервере отчетов Power BI, любой пользователь с разрешениями "Издатель" или "Диспетчер содержимого" для отчета Power BI сможет назначать участников для ролей этого отчета.

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

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

В приложении Power BI Desktop можно задавать роли и правила. При публикации в Power BI публикуются и определения ролей.

Чтобы задать роли безопасности, выполните следующие действия.

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

    Примечание

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

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

    Select Manage Roles

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

    Select Create

  4. В поле Роли укажите имя роли.

    Примечание

    Нельзя определить роль с помощью запятой, например London,ParisRole.

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

  6. В поле Выражение DAX фильтра таблицы введите выражение DAX. Это выражение возвращает истину (true) или ложь (false). Например: [Entity ID] = “Value”.

    Manage roles window

    Примечание

    В этом выражении можно использовать функцию username() . Помните о том, что в Power BI Desktop функция username() возвращает значения в формате ДОМЕН\имя_пользователя. В службе Power BI и сервере отчетов Power BI оно задается в формате имени участника-пользователя (UPN). Кроме того, можно использовать функцию userprincipalname(), которая всегда возвращает пользователя в формате имени участника-пользователя, username@contoso.com.

  7. Чтобы проверить созданное выражение DAX, установите флажок над полем выражения.

    Validate DAX expression

    Примечание

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

  8. Нажмите кнопку Сохранить.

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

Двунаправленная перекрестная фильтрация

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

  • Выберите связь и установите флажок Применить фильтр безопасности в обоих направлениях.

    Apply security filter

Установите этот флажок при реализации динамической безопасности на уровне строк на основе имени пользователя или имени для входа.

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

Проверка ролей в Power BI Desktop

Создав роли, вы можете проверить их действие в приложении Power BI Desktop.

  1. На вкладке Моделирование выберите Просмотреть как.

    Select View as Roles

    В появившемся окне Просмотреть как роли показаны роли, которые вы создали.

    View as roles window

  2. Выберите созданную роль и нажмите кнопку ОК, чтобы применить ее.

    В отчет будут включены данные, которые относятся к этой роли.

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

    Select Other user

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

    В Power BI Desktop результаты при выборе варианта Другой пользователь меняются только при использовании динамической системы безопасности на основе выражений DAX.

  4. Выберите ОК.

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

    Примечание

    Функция "Представление как роль" не работает для моделей DirectQuery с включенным единым Sign-On (SSO).

Добавление участников в роли

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

Если отчет не содержит необходимые роли, вы должны открыть его в Power BI Desktop, добавить или изменить роли, а затем сохранить на сервере отчетов Power BI.

  1. В Power BI Desktop сохраните отчет на сервере отчетов Power BI. Необходимо использовать версию Power BI Desktop для Сервера отчетов Power BI.

  2. В службе отчетов Power BI нажмите кнопку с многоточием ( ) рядом с отчетом.

  3. Выберите Управление>Безопасность на уровне строк.

    Manage row-level security

    На странице Безопасность на уровне строк можно добавлять участников в роль, созданную в Power BI Desktop.

  4. Чтобы добавить участника, выберите Добавить участника.

  5. Укажите в текстовом поле пользователя или группу в формате имени пользователя "ДОМЕН\пользователь" и выберите роли, которые вы хотите им назначить. Этот участник должен быть в пределах вашей организации.

    Add member to role

    В зависимости от настройки службы Active Directory можно также ввести имя участника-пользователя. В этом случае сервер отчетов отображает соответствующее имя пользователя в списке.

  6. Нажмите кнопку ОК, чтобы применить выбранный вариант.

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

    Delete members

username() и userprincipalname()

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

В Power BI Desktop функция username() возвращает имя пользователя в формате "ДОМЕН\пользователь", а функция userprincipalname() возвращает имя пользователя в формате user@contoso.com.

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

При использовании нестандартной проверки подлинности на сервере отчетов Power BI он возвращает формат имени пользователя, который вы настроили для пользователей.

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

Ниже приведены текущие ограничения для безопасности на уровне строк в моделях Power BI.

Пользователи, получающие доступ к отчетам с помощью функции DAX username(), заметят новое поведение, когда имя участника-пользователя (UPN) возвращается, ЗА ИСКЛЮЧЕНИЕМ случаев использования DirectQuery со встроенной безопасностью. Так как безопасность на уровне строк не учитывается в этом сценарии, в этом случае поведение не изменяется.

Безопасность на уровне строк (RLS) можно определять только для наборов данных, созданных в Power BI Desktop. Чтобы включить RLS для наборов данных, созданных в Excel, нужно сначала преобразовать файлы в формат Power BI Desktop (PBIX). Дополнительные сведения о преобразовании файлов Excel.

Поддерживаются только подключения Extract, Transform, Load (ETL) и DirectQuery с использованием сохраненных учетных данных. Динамические подключения к службам Analysis Services и подключения DirectQuery с помощью встроенной проверки подлинности обрабатываются в базовом источнике данных.

Если вы используете встроенную систему безопасности с DirectQuery, ваши пользователи могут заметить следующее:

  • RLS отключена и возвращаются все данные;
  • пользователи не могут изменять свои назначения ролей и получают сообщение об ошибке на странице управления RLS;
  • для функции DAX username можно по-прежнему получать имя пользователя в формате "ДОМЕН\ПОЛЬЗОВАТЕЛЬ".

Авторы отчетов не могут просматривать данные отчета на сервере отчетов Power BI, пока не назначат себе соответствующие роли после отправки отчета.

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

Часто задаваемые вопросы

Можно ли создавать роли для источников данных служб Analysis Services?

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

Могу ли я использовать RLS для ограничения столбцов или мер, доступных для моих пользователей?

Нет. Если у пользователя есть доступ к конкретной строке данных, они могут видеть все столбцы данных для этой строки.

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

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

Можно ли добавлять новые роли в Power BI Desktop, если у меня уже есть существующие назначенные роли и участники?

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

Дальнейшие действия

Что такое Сервер отчетов Power BI?Руководство для администратора

Остались вопросы? Попробуйте задать вопрос в сообществе Power BI.