Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к:✅ встроенная аналитика Power BI для ваших клиентов (App-owns-data)
В этой статье объясняется, как встроить отчет Power BI, использующий данные, хранящиеся в Azure Analysis Services (AAS), в сценарии «внедрение для ваших клиентов». Эта статья предназначена для независимых разработчиков программного обеспечения (ISV), которые хотят внедрить отчет с данными AAS независимо от того, реализует ли база данных безопасность на уровне строк (RLS).
Предварительные требования
Вам нужен отчет с динамическим подключением к базе данных AAS, с RLS или без нее.
Динамическая безопасность — RLS
Если вы хотите, чтобы отчет реализовал динамические RLS, используйте функцию customeData . Поскольку вы не можете переопределить фактически используемый идентификатор, мы рекомендуем создать новые роли с помощью customData. Вы также можете использовать роли с функциями username или userPrincipalName, если заменить их на customData.
Выполните следующие действия, чтобы создать новую роль и добавить customData функцию в роль.
Создайте роль на сервере служб Analysis Services.
В параметрах "Общие" укажите имя роли и задайте разрешения базы данных только для чтения.
В настройках Membership добавьте пользователей, которые будут вызывать API Embed Token - Generate Token. Если вы используете субъект-службу, который не является администратором, добавьте это также.
В параметрах фильтров строк задайте запрос DAX с помощью
CUSTOMDATA()функции.
Субъект-служба
Если вы используете субъект-службу для встраивания отчета, убедитесь, что эта субъект-служба является администратором сервера или участником роли AAS. Чтобы предоставить субъекту-службе права администратора AAS, см. статью Добавление субъекта-службы в роль администратора сервера. Чтобы добавить субъект-службу в качестве члена роли, перейдите к параметрам членства.
Используйте идентификатор объекта субъекта-службы в качестве имени пользователя (действующее удостоверение).
Миграция служб Analysis Service
Вы можете перейти из AAS в Power BI Premium , даже если у вас есть внедренный отчет AAS. Ваш встроенный отчет не перестанет работать во время миграции, если учетная запись, вызывающая API Embed Token - Generate Token, является участником или администратором рабочей области.
Примечание.
Если субъект-служба не является администратором и вы не хотите назначать субъект-службу администратором рабочей области при миграции, перенесите эту модель в отдельную рабочую область, где можно предоставить субъекту-службе права администратора.
Создать токен внедрения
Используйте API Generate Token для создания токена внедрения, который переопределяет эффективную идентификацию.
Сведения, необходимые для создания токена внедрения, зависят от того, как вы подключены к Power BI (субъект-служба или основная учетная запись), а также от того, применяется ли к базе данных RLS.
- Токен внедрения для основного пользователя
- Токен внедрения для субъекта-службы или профиля субъекта-службы
Чтобы создать токен внедрения, укажите следующие сведения:
- Имя пользователя (необязательно, если RLS не используется. Обязательно при использовании RLS) — имя пользователя должно совпадать с именем пользователя инициатора вызова API (в данном случае — UPN пользователя Master). Если база данных не использует RLS, а имя пользователя не указано, используются учетные данные главного пользователя.
- Роль (требуется для RLS) — отчет отображает данные только в том случае, если фактический идентификатор входит в роль.
Пример:
Определите удостоверение пользователя и роли для одного из следующих трех сценариев:
- Если RLS не реализована:
Вам не нужно указывать действующий идентификатор.
Если используется статический RLS:
var rlsidentity = new EffectiveIdentity( //If static RLS username: "username@contoso.com", roles: new List<string>{ "MyRole" }, datasets: new List<string>{ datasetId.ToString()} )При использовании динамической RLS:
var rlsidentity = new EffectiveIdentity( // If dynamic RLS username: "username@contoso.com", roles: new List<string>{ "MyRoleWithCustomData" }, customData: "SalesPersonA" datasets: new List<string>{ datasetId.ToString()} )Примечание.
customDataВ токене внедрения не может быть больше 1024 символов.
Используйте фактические учетные данные для создания токена внедрения:
public EmbedToken GetEmbedToken(Guid reportId, IList<Guid> datasetIds, [Optional] Guid targetWorkspaceId)
{
PowerBIClient pbiClient = this.GetPowerBIClient();
// Create a request for getting an embed token for the rls identity defined above
var tokenRequest = new GenerateTokenRequestV2(
reports: new List<GenerateTokenRequestV2Report>() { new GenerateTokenRequestV2Report(reportId) },
datasets: datasetIds.Select(datasetId => new GenerateTokenRequestV2Dataset(datasetId.ToString())).ToList(),
targetWorkspaces: targetWorkspaceId != Guid.Empty ? new List<GenerateTokenRequestV2TargetWorkspace>() { new GenerateTokenRequestV2TargetWorkspace(targetWorkspaceId) } : null,
identities: new List<EffectiveIdentity> { rlsIdentity } // Only in cases of RLS
);
// Generate an embed token
var embedToken = pbiClient.EmbedToken.GenerateToken(tokenRequest);
return embedToken;
}
Используйте маркер внедрения для внедрения отчета в приложение или веб-сайт. Данные в отчете фильтруются в соответствии с RLS, примененной в этом отчете.
Связанный контент
- Row-level security with Power BI Embedded (Безопасность на уровне строк в Power BI Embedded)
- Внедрение отчета с помощью облачной службы RLS
- отчеты-с-разбивкой-на-страницы-безопасность-на-уровне-строк