Реализация безопасности на уровне строк в внедренных отчетах с разбивкой на страницы
ОБЛАСТЬ ПРИМЕНЕНИЯ: Приложение владеет данными, принадлежащими пользователю данных
В этой статье объясняется, как внедрить отчет с разбивкой на страницы, использующий RLS (безопасность на уровне строк) в приложение данных.
Примечание.
Эта статья относится только к клиентам данных приложения.
Чтобы использовать RLS для отчетов с разбивкой на страницы:
- Настройка среды для фильтрации отчета
- Фильтрация данных на уровне отчета или запроса
- Передача настроенного параметра с помощью маркера внедрения
Необходимые компоненты
В этой статье предполагается, что вы знаете, как внедрить отчет с разбивкой на страницы Power BI. В нем объясняется, как создать маркер внедрения, чтобы отчет отображал только то, что у пользователя есть разрешение на доступ.
Отчеты с разбивкой на страницы создаются с помощью подсистемы СЛУЖБ SQL Server Reporting Services, а не подсистемы Power BI (Analysis Services), поэтому фильтрация RLS настраивается в Power BI построитель отчетов.
Настройка среды
Чтобы применить безопасность на уровне строк к отчету Power BI с разбивкой на страницы, используйте встроенное поле UserID для назначения параметра. Этот параметр используется для фильтрации или запроса данных.
Затем передайте идентификаторпользователя в токен внедрения— создайте API маркера для получения маркера внедрения.
Использование UserID в качестве фильтра на уровне отчета или запроса
UserId можно использовать в качестве фильтра или запроса к источнику данных.
Фильтрация данных
В окне "Свойства семантической модели" в левой области выберите "Фильтр".
В раскрывающемся меню выражения выберите параметр, который вы хотите использовать для фильтрации данных.
Нажмите кнопку "Значение ".
В окне выражения в списке категорий выберите встроенные поля.
В списке элементов выберите UserID и нажмите кнопку "ОК".
В окне свойств семантической модели убедитесь, что выражение является выбранным параметром = UserID, и нажмите кнопку "ОК".
Использование запроса
В окне "Свойства семантической модели" в области навигации слева выберите "Параметры" и нажмите кнопку "Добавить".
В поле "Имя параметра" введите @UserID и в добавлении значения параметра [&UserID].
В левой области выберите "Запрос", в поле "Запрос" добавьте параметр UserID в рамках запроса и нажмите кнопку "ОК".
Примечание.
На снимке экрана ниже параметр цвета используется в качестве примера (WHERE FinalTable.Color = @UserID). При необходимости можно создать более сложный запрос.
Создание маркера внедрения
При внедрении отчета с разбивкой на страницы для клиентов используйте API GenerateTokenInGroup для получения маркера внедрения. Этот маркер также можно использовать для фильтрации некоторых данных из отчета с разбивкой на страницы.
Маркер можно создать только с помощью субъекта-службы. Невозможно создать маркер в качестве главного пользователя. Субъект-служба должен иметь по крайней мере разрешения на члены рабочей области в служба Power BI. (Если субъект-служба является участником или средством просмотра, он не может создать токен).
Чтобы создать маркер, назначьте username
поле со сведениями, которые необходимо отобразить. Например, в отчете с разбивкой на страницы с параметром цвета, если вы вводите зеленый цвет в username
поле, маркер внедрения ограничивает внедренные данные только данными, которые имеют зеленый цвет в качестве значения в столбце цвета.
{
"reports": [
{
"id": "8d57615e-cfed-4d60-bd21-7dc05727193c"
}
],
"identities": [
{
"username": "green",
"reports": [
"8d57615e-cfed-4d60-bd21-7dc05727193c"
]
}
]
}
Примечание.
Если вы создаете маркер внедрения без указания идентификатора пользователя, будет использоваться объект субъекта-службы .
Рекомендации и ограничения
- Главный пользователь не поддерживается с отчетами с разбивкой на страницы для внедрения для клиентов. Главный пользователь поддерживает внедрение для вашей организации.
- Субъект-служба должен иметь разрешения рабочей области по крайней мере члена или (не средства просмотра или участника).