Настройка безопасности на уровне строк в Power BI Desktop
Другим аспектом совместного использования является безопасность набора данных. Включение разных ролей и предоставление пользователям доступа к разным уровням данных называется Row Level Security. В этом посте объясняются подробности этого метода безопасности и его настройки в Power BI Desktop. Безопасность на уровне строк позволяет применять защиту к ролям и добавлять пользователей к каждой роли. Пример полезен, когда вы хотите, чтобы люди из одного филиала, города, отдела или магазина могли видеть только свою часть данных, а не весь набор данных. Power BI применяет это через конфигурацию безопасности на уровне строк в самой модели Power BI. Поэтому независимо от того, из какого источника вы импортируете свои данные, вы можете применить к ним защиту на уровне строк.
Что хорошего в безопасности на уровне строк в Power BI Desktop?
Безопасность на уровне строк - это применение безопасности на уровне строк данных. Например, менеджер по продажам в США должен видеть данные только по США, а не по Европе. Менеджер по продажам в Европе не сможет увидеть продажи в Австралии или США. А кто-то из совета директоров может видеть все. Ранее защита на уровне строк не была частью модели Power BI. Теперь в новой версии Power BI Desktop конфигурация безопасности является частью модели и будет развернута вместе с моделью.
Необходимое условие
Для этого примера мы будем использовать пример источника данных AdventureWorksDW excel. Вы можете скачать его здесь.
Создадим образец отчета
Начнем с создания примера отчета в Power BI Desktop из файла AdventureWorks Excel. Мы выбираем только DimSalesTerritory и FactResellerSales для этого примера:
Давайте загрузим это в отчет и создадим простую столбчатую диаграмму с продажами - Sales Amount (из FactResellerSales) и страной - Country (из DimSalesTerritory) без каких-либо изменений в редакторе Power Query.
На диаграмме показан объем продаж по странам, который можно легко использовать для обеспечения безопасности на уровне строк для информации о географическом местоположении. Теперь давайте добавим одну визуализацию карты для общей суммы продаж. И два слайсера (один для группы территорий продаж, а другой для региона территорий продаж). Ниже скриншот - макет этого примера отчета:
Наша общая сумма продаж Receller в этом представлении составляет 80 миллионов долларов США, и мы имеем значения продаж для Австралии, Канады, Франции, Германии, Великобритании и США. Теперь давайте создадим роли.
Создание ролей
Теперь давайте создадим для этого роли. Наша цель - построить роли менеджера по продажам в США и Европе. Каждый из них должен видеть только свою группу или страну в наборе данных. Для создания ролей перейдите на вкладку Modeling в Power BI Desktop. Вы увидите раздел под названием Security:
Нажмите на Manage Roles, чтобы создать новую роль. Вы увидите окно управления ролями, которое имеет три панели, как показано ниже
Вы можете создавать или удалять роли в пронумерованной одной панели. Вы можете видеть таблицы в своей модели в пронумерованных двух панелях (для этого примера вы увидите только две таблицы, но не сейчас, после создания первой роли), а затем вы можете написать свою DAX фильтрация выражений в пронумерованных трех панелях. Да, вы должны написать код DAX для фильтрации данных для каждой роли, но это могут быть очень простые выражения DAX.
Теперь создайте роль и назовите ее “USA Sales Manager”. В разделе Tables вы увидите две таблицы: FactResellerSales и DimSalesTerritory. Нажав кнопку с многоточием на каждой таблице, вы можете создать фильтры DAX для каждого столбца. Из DimSalesTerritory создайте фильтр для страны.
Теперь в выражении DAX Filter вы увидите выражение, созданное автоматически как [SalesTerritoryCountry] = «Value», измените значение на “United States” и примените.
Теперь создайте другую роль, назовите ее Europe Sales Manager, на этот раз добавьте фильтр в SelesTerritoryGroup и измените значение на “Europe”, как показано ниже:
Тестирование ролей в Desktop
Отлично, мы создали две наши типовые роли. Теперь давайте проверим их здесь. Да, мы можем протестировать их в Power BI Desktop с параметром меню View As Role. Эта опция позволяет нам просматривать отчет именно так, как его увидит пользователь с этой ролью. Мы даже можем объединить несколько ролей, чтобы увидеть консолидированное представление о человеке, который имеет несколько ролей. Перейдите на вкладку Modeling и выберите View As Role.
Выберите Europe Sales Manager и нажмите «ОК». Вы увидите, что продажи в Европе показывают только на общую сумму 11 миллионов долларов США и показывают только страны Германия, Великобритания и Франция.
Вы также можете увидеть в верхней части отчета выделенную информационную строку, показывающую, что представлением является менеджер по продажам в Европе. Если вы нажмете «Остановить просмотр», вы увидите отчет как обычный вид (общий вид).
Настройка службы Power BI
Роли должны быть назначены пользователям Power BI (или учетным записям, другими словами), и эта часть должна выполняться в Power BI Service. Сохраните и опубликуйте отчет в Power BI. Мы назвали этот отчет как RLS PBI Desktop. Вы можете назвать это как хотите. После публикации отчета нажмите Security для набора данных.
Здесь вы можете просмотреть роли и назначить их учетным записям Power BI в вашей организации.
Вы можете назначить каждому пользователю более одной роли, и тогда у пользователя будет консолидированное представление обеих ролей. Например, пользователь с обеими ролями менеджера по продажам в США и Европе увидит данные из всей Европы и США.
Проверка ролей в службе Power BI
Вы также можете проверить каждую роль здесь, просто нажмите кнопку с многоточием рядом с каждой ролью и нажмите Test as Role.
Test As Role покажет вам отчет в режиме просмотра для этой роли. Как видите, синяя полоса показывает, что в отчете показана роль Europe Sales Manager. Вы можете изменить ее там, если хотите.
С настройкой пользователей для каждой роли, теперь ваша безопасность на уровне ролей готова к работе. Если пользователь войдет в систему под своей учетной записью, он увидит данные только для своих ролей.
Повторная публикация не повредит
Как мы уже упоминали в самом первом абзаце этой главы, отличительной особенностью этой новой функции является то, что RLS является частью модели Power BI. И если вы снова и снова публикуете свою модель Power BI с изменениями, вы не потеряете конфигурацию в Интернете. Вы также не потеряете пользователей, назначенных для каждой роли, если вы оставите имена ролей без изменений.
Резюме
Row Level Security предоставляет пользователям различные представления данных из одного и того же содержимого Power BI. Как вы узнали из этой главы, реализовать безопасность на уровне строк очень просто. Причина, по которой этот метод называется безопасностью на уровне ROW, заключается в том, что фильтр DAX применяется на уровне строк данных.
В этой главе вы узнали о конкретном типе защиты на уровне строк, который называется “Статическая защита на уровне строк”. Защита называется статической, потому что значения фильтра статически определяются в выражениях DAX. Если вы хотите применить такой фильтр для тысяч ролей, то затраты на обслуживание очень высоки. В идеальном мире вы хотите иметь возможность применять безопасность автоматически на основе логина пользователей. В следующей главе вы узнаете о динамической защите на уровне строк, которая является следующим шагом применения защиты в более сложных сценариях.