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


Внедрение отчета с базой данных Azure Analysis Services (AAS)

ОБЛАСТЬ ПРИМЕНЕНИЯ: Приложение владеет данными, принадлежащими пользователю данных

В этой статье объясняется, как внедрить отчет Power BI, использующий данные, хранящиеся в Службах Azure Analysis Services (AAS), в внедрении для вашего сценария клиентов . Эта статья предназначена для независимых разработчиков программного обеспечения (ISV), которые хотят внедрить отчет с данными AAS независимо от того, реализует ли база данных безопасность на уровне строк (RLS).

Необходимые компоненты

Вам потребуется отчет с динамическим подключением к базе данных AAS с RLS или без нее.

Динамическая безопасность — RLS

Если вы хотите, чтобы отчет реализовал динамические RLS, используйте функцию customeData . Так как вы не можете переопределить эффективное удостоверение, рекомендуется создавать новые роли с customDataпомощью . Вы также можете использовать роли, имеющие username или userPrincipalName функции, при их замене customDataна .

Выполните следующие действия, чтобы создать новую роль и добавить customData функцию в роль.

  1. Создайте роль на сервере служб Analysis Services.

    A screenshot of creating a new role in Analysis Services server.

  2. В параметрах "Общие" укажите имя роли и задайте разрешения базы данных только для чтения.

    A screenshot of giving a new role a new name and setting it to read only, in the general settings in Analysis Services server.

  1. В параметрах членства добавьте пользователей, которые будут вызывать маркер внедрения — создать API маркеров. Если вы используете субъект-службу, который не является администратором, добавьте это также.

    A screenshot of adding users to a new role in Analysis Services server.

  2. В параметрах фильтров строк задайте запрос DAX с помощью CUSTOMDATA() функции.

    A screenshot showing how to add the function customData to the DAX query in a new role in Analysis Services server.

Субъект-служба

Если вы используете субъект-службу для внедрения отчета, убедитесь, что субъект-служба является администратором сервера или членом роли 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 в отчете.