В настоящее время у меня следующий сценарий. У меня есть отчет в Power BI, который читает из набора данных, в котором есть данные всех компаний. В моем приложении ASP .NET MVC пользователь выберет компанию, для которой будет отображаться отчет, а с Power BI Embedded приложение фильтрует отчет по идентификатору компании с помощью встроенной конфигурации, определенной в JS (параметры фильтра, передаваемые с сервера).
Я использую подход с использованием данных, принадлежащих приложению, где у меня есть основная учетная запись, а для основной учетной записи создается встроенный токен. Пользователь, обращающийся к отчету, не имеет прав доступа ко всем компаниям, и это обрабатывается на стороне сервера. Однако при таком подходе пользователь может легко изменить конфигурацию встраивания в JS и отобразить отчет для компании, к которой у него нет прав доступа.
Я изучил безопасность на уровне строк и нашел следующий подход https://community.powerbi.com/t5/Developer/PowerBi-Embedded-API-Works-with-RLS/td-p/231064, где для каждой компании есть роль. и встраиваемый токен создается для этой конкретной компании. Это был бы идеальный подход, но в моем сценарии компании не определены заранее и могут быть созданы в любое время. Следовательно, мне нужно будет создать роль для каждой компании. Однако этого нельзя достичь программно, поскольку Power BI не предоставляет средств для автоматизации создания ролей.
Единственный подход, который я могу придумать, - это клонировать отчет для каждой новой компании и создать набор данных, специфичный для этого отчета, который будет содержать данные только для этой конкретной компании. Тогда сгенерированный встроенный токен будет действителен только для этого конкретного отчета.
Кто-нибудь тоже испытывал эту дилемму? Есть предложения, что мне делать в таком сценарии?