Внедрение отчета с базой данных Azure Analysis Services (AAS)
ОБЛАСТЬ ПРИМЕНЕНИЯ: Приложение владеет данными, принадлежащими пользователю данных
В этой статье объясняется, как внедрить отчет Power BI, использующий данные, хранящиеся в Службах Azure Analysis Services (AAS), в внедрении для вашего сценария клиентов . Эта статья предназначена для независимых разработчиков программного обеспечения (ISV), которые хотят внедрить отчет с данными AAS независимо от того, реализует ли база данных безопасность на уровне строк (RLS).
Необходимые компоненты
Вам потребуется отчет с динамическим подключением к базе данных AAS с RLS или без нее.
Динамическая безопасность — RLS
Если вы хотите, чтобы отчет реализовал динамические RLS, используйте функцию customeData
. Так как вы не можете переопределить эффективное удостоверение, рекомендуется создавать новые роли с customData
помощью . Вы также можете использовать роли, имеющие username
или userPrincipalName
функции, при их замене customData
на .
Выполните следующие действия, чтобы создать новую роль и добавить customData
функцию в роль.
Создайте роль на сервере служб Analysis Services.
В параметрах "Общие" укажите имя роли и задайте разрешения базы данных только для чтения.
В параметрах членства добавьте пользователей, которые будут вызывать маркер внедрения — создать API маркеров. Если вы используете субъект-службу, который не является администратором, добавьте это также.
В параметрах фильтров строк задайте запрос DAX с помощью
CUSTOMDATA()
функции.
Субъект-служба
Если вы используете субъект-службу для внедрения отчета, убедитесь, что субъект-служба является администратором сервера или членом роли AAS. Чтобы предоставить администратору AAS разрешения субъекту-службе, см. статью "Добавление субъекта-службы" в роль администратора сервера. Чтобы добавить субъект-службу в качестве члена роли, перейдите к параметрам членства.
Используйте идентификатор объекта субъекта-службы в качестве имени пользователя (действующее удостоверение).
Миграция служб Analysis Service
Вы можете перейти из AAS в Power BI Premium , даже если у вас есть внедренный отчет AAS. Внедренный отчет не прерывается во время миграции, пока субъект, вызывающий маркер внедрения — API создания маркера , является членом или администратором рабочей области.
Примечание.
Если субъект-служба не является администратором, и вы не хотите сделать его администратором рабочей области при миграции, перенесите эту модель в отдельную рабочую область, где вы можете предоставить ему разрешения администратора.
Создание маркера внедрения
Используйте API создания маркеров для создания маркера внедрения, который переопределяет эффективное удостоверение.
Сведения, необходимые для создания маркера внедрения, зависят от того, как вы подключены к Power BI (субъект-служба или главный пользователь), а также, если база данных имеет RLS.
Чтобы создать токен внедрения, укажите следующие сведения:
- Имя пользователя (необязательно, если нет RLS. Требуется для RLS) — имя пользователя должно совпадать с вызывающим пользователем API (в данном случае имя участника-пользователя 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
- безопасность на уровне строк с разбивкой на страницы