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


Практическое руководство. Включение безопасности на уровне строк в Power BI на Power Pages

Точно так же как Power Pages является удобным инструментом для быстрой организации доступа широкой публики к вашему развертыванию Microsoft Dataverse в виде веб-сайта, Power BI — удобный инструмент для отрисовки элегантных визуализаций на основе данных. Power Platform, в свою очередь, дает возможность объединить оба эти инструмента. В прошлом для отрисовки отчета Power BI на веб-странице администраторам приходилось публиковать отчет в Интернете и внедрять его в iFrame. Даже при применении разрешений в отношении страниц для блокировки страницы с отчетом, если у человека была ссылка, использовавшаяся для внедрения в отчета, кто угодно мог получить доступ к отчету за пределами веб-сайта.

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

Предупреждение

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

Используя Power BI Embedded, вы можете предоставлять компоненты Power BI пользователям с учетом контекста, проходить автоматические фильтры путем использования параметра фильтра, а также включать функции безопасности на уровне строк для полноценной защиты данных, отображаемых для пользователей, чтобы они видели только то, что должны видеть.

Заметка

Безопасность на уровне строк поддерживается только для Power BI Embedded.

Предварительные условия

Сценарий

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

Инструкторы представлены записями типа Контакт в Dataverse. Осуществляя доступ к веб-сайту Power Pages, они делают это как соответствующие им записи типа Контакт. Данные, которые они должны видеть на веб-сайте, берутся из пользовательской таблицы Занятия. Таблица "Занятия" имеет связь N*:1 с контактом, так как в форме занятий есть поле подстановки с именем Инструктор, которое представляет собой подстановку из таблицы контактов.

Запись занятия в Dataverse.

Чтобы безопасность на уровне строк работала для пользователей Power Pages (контактов), должна быть прямая связь между таблицей Контакт и таблицей, отчет по которой вы делаете. Ниже приведен пример модели данных для этого сценария:

Связь контакта с таблицей занятий.

Настройка отчета или панели мониторинга Power BI

  1. Откройте отчет или панель мониторинга Power BI в Power BI Desktop.

    Отчет Power BI для инструкторов.

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

    Вкладка

  3. Выберите строку, которая связывает вашу таблицу Контакт с таблицей, содержащей данные вашего отчета — в данном примере это vbd_class, поскольку мы делаем отчет по занятиям.

  4. В окне Изменение связи есть два списка выбора. В верхнем выберите таблицу, по которой вы создаете отчет (vbd_class), и выберите столбец, содержащий уникальный идентификатор записи.

  5. В нижнем списке выберите таблицу Контакт и выберите столбец Контакт.

  6. Как видите, кратность — "многие к одному" (*:1). Измените значение в поле Направление кросс-фильтрации на Двунаправленная.

    Редактирование связи между таблицами.

  7. Выберите OK.

  8. Поскольку мы реализуем безопасность на уровне строк (RLS), нам необходимо создать роль. На верхней ленте Главная выберите Управление ролями.

  9. В разделе Роли выберите Создать. Дайте роли имя. В этом сценарии-примере используется pagesuser.

  10. В столбце Таблицы выберите Контакт.

  11. Заполните текстовое поле справа выражением DAX:

    [User Name] = username()

    Заметка

    Поле [Username] находится в таблице контактов и не является реальным именем пользователя. Оно ссылается на таблицу adx_externalidentity, используемую в Power Pages. У него есть GUID, который отправляется функции username() Power BI.

    Управление ролями в Power BI.

  12. Выберите Сохранить и сохраните файл.

  13. На ленте "Главная" выберите Опубликовать.

  14. Выберите рабочую область организации, владельцем которой вы являетесь и которая будет использоваться интеграцией с Power Pages. Выберите Выбрать.

Настройка интеграции с Power BI

О том, как активировать на своем веб-сайте интеграцию с Power BI, см. в статье Настройка интеграции с Power BI.

Внедрение отчета Power BI

  1. Перейдите по адресу Power Pages. Найдите веб-сайт Power Pages, на который вы собираетесь внедрять отчет, а затем выберите Изменить , чтобы открыть студию дизайна Power Pages.

  2. В рабочей области Страницы выберите веб-страницу, на которую вы хотите внедрить отчет.

  3. Добавьте раздел в основную часть веб-страницы.

  4. Когда система предложит выбрать, какой компонент вы добавляете в раздел, выберите значок Power BI.

    Добавление раздела на веб-страницу.

  5. Когда компонент появится в разделе, выберите в верхнем левом углу Изменить Power BI.

  6. Выберите Тип доступа. Доступные параметры:

    1. Внедрить для клиентов: позволяет предоставлять доступ к Power BI внешним пользователям без лицензии на Power BI или удостоверения Microsoft Entra.

    2. Внедрить для организации — предполагает использование проверки подлинности Microsoft Entra для предоставления доступа к отчету из Power BI, чтобы его могли видеть внутренние пользователи.

    3. Опубликовать в Интернете — позволяет опубликовать отчет так, чтобы доступ к отчету и данным был у любого пользователя Интернета.

    Внимание

    Убедитесь, что это не конфиденциальная информация!

    Дополнительная информация: Публикация в Интернете

    Выберите Внедрить для клиентов.

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

    Выберите отчет.

  8. Чтобы просмотреть код, используемый для внедрения отчета или панели мониторинга, выберите Изменить код в правом верхнем углу студии.

    Редактирование кода.

  9. При появлении запроса выберите Открыть Visual Studio Code. Слева, в разделеPowerPages (рабочая область), у имени веб-сайта Power Pages есть раскрывающийся список веб-страниц. В этом разделе вы видите файл CSS, файл JS и копию HTML. Убедитесь, что вы находитесь в файле копии HTML.

    VS Code.

  10. Выберите CTRL + F и выполните поиск по сочетанию символов {%, чтобы быстро найти код, содержащий ссылку на нашу панель мониторинга или отчет Power BI. {% указывает на открытие тега, который создает логику для языка Liquid. Liquid — это мост между Dataverse и тем, с чем пользователи взаимодействуют на веб-сайте. Когда мы используем редактор студии для внедрения компонентов, в исходном коде веб-страницы автоматически создается фрагмент кода на Liquid. Дополнительную информацию о теге Liquid Power BI можно найти здесь: Теги Liquid Dataverse и здесь: Добавление отчета Power BI.

  11. Полностью строка кода на Liquid, которую вы увидите, будет выглядеть примерно так:

    {% powerbi authentication_type:"powerbiembedded" path:"https://app.powerbi.com/groups/00000000-0000-0000-0000-000000000000/reports/00000000-0000-0000-0000-000000000000/ReportSection" %}
    
  12. Закройте вкладку Visual Studio Code for the Web.

  13. В студии дизайна Power Pages выберите внедренный компонент Power BI и выберите Изменить Power BI.

  14. Прокрутите вниз, чтобы изменить значение параметра Применить роли на true/да.

  15. В текстовом поле Роли введите имя роли, которую вы создали в Power BI Desktop.

    Добавление ролей в компонент Power BI.

  16. Чтобы увидеть изменения, внесенные в результате этого в код, используемый для внедрения отчета или панели мониторинга, снова выберите Изменить код в правом верхнем углу студии.

  17. Полностью строка кода на Liquid, которую вы увидите, теперь будет выглядеть примерно так:

    {% powerbi authentication_type:"powerbiembedded" path:"https://app.powerbi.com/groups/00000000-0000-0000-0000-000000000000/reports/00000000-0000-0000-0000-000000000001/ReportSection" roles:"pagesuser" %}
    
  18. Закройте вкладку Visual Studio Code, чтобы вернуться в студию дизайна.

  19. Просмотрите полученный внедренный отчет или панель мониторинга в браузере, выбрав Синхронизировать в правом верхнем углу, а затем выбрав Предварительный просмотр > Рабочий стол.

  20. В рамках тестирования отчета без вошедшего в систему пользователя вы можете видеть, что RLS применена, поскольку при переходе на веб-сайт Power Pages никакие записи не возвращаются:

    Пустой отчет.

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

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

    Отчет по занятиям на веб-странице.

Сводка.

Итак, вы внедрили отчет или панель мониторинга Power BI с защитой на уровне строк на свой веб-сайт Power Pages!

Панель фильтров присутствует по умолчанию. Для скрытия панели фильтров нужно использовать JavaScript. Соответствующие инструкции приведены здесь: Добавление отчета или панели мониторинга Power BI на веб-страницу на портале.