Вы можете использовать RLS во встроенных отчетах, реализованных со сценарием данных, принадлежащих приложению (одна главная учетная запись для аутентификации), передавая информацию EffectiveIdentity при создании токена доступа для этого отчета с помощью GenerateTokenInGroup .
Чтобы реализовать RLS в самом отчете, вам необходимо: использовать USERPRINCIPALNAME()
функцию DAX для фильтрации данных или определить роли и фильтровать данные на их основе. Если вы реализуете его с ролями, после публикации отчета go в настройках безопасности набора данных и добавления пользователей к ролям.
Чтобы сгенерировать токен, предоставив действующий идентификатор и членство в ролях, используйте следующий код:
var credentials = new TokenCredentials(accessToken, "Bearer");
using (var client = new PowerBIClient(new Uri("https://api.powerbi.com"), credentials))
{
var datasets = new List<string>() { datasetId }; // Dataset's GUID as a string
var roles = new List<string>();
roles.Add('ROLE1');
roles.Add('ROLE2');
roles.Add('ROLE3');
var effectiveIdentity = new EffectiveIdentity('user@example.com', datasets, roles);
var r = new GenerateTokenRequest("view", effectiveIdentity);
var token = client.Reports.GenerateTokenInGroup(groupId, reportId, r).Token;
}