Внедрение отчета в локальную среду SQL Server Analysis Services (SSAS)

Применимо к:✅ встроенная аналитика Power BI для ваших клиентов (App-owns-data)

В этой статье объясняется, как встраивать содержимое Power BI с подключением в режиме реального времени к локальнойтабличной модели Analysis Services в стандартное приложение Power BI типа «app owns data». Эта статья относится ко всем моделям SSAS динамического подключения независимо от того, реализуют ли они RLS.

В этом сценарии база данных находится в модели SSAS (локальной среде), а подсистема Power BI подключается к ней через шлюз. Роли безопасности (RLS) и разрешения, если есть, определены в модели SSAS, а не в Power BI Desktop.

Кому эта статья предназначена

Эта статья в основном предназначена для независимых поставщиков программного обеспечения, у которых уже есть локально развернутая база данных (SSAS) (с RLS или без него) и которые хотят встраивать контент напрямую оттуда.

Настройка ISV

Безопасность локальной строки доступна только с динамическим подключением, но вы можете создать динамическое подключение к любой базе данных независимо от того, реализует ли она RLS. Сюда входит следующее:

  • Базы данных, в которых не настроены роли RLS
  • Базы данных с участниками, принадлежащими одной или нескольким ролям
  • Базы данных со статическими или динамическими ролями безопасности

Чтобы внедрить отчет из модели SSAS, необходимо выполнить следующие действия:

  1. Настройка шлюза
  2. Создание динамического подключения
  3. Сгенерировать токен внедрения

Настройка шлюза

Добавление подключения источника данных к шлюзу SSAS

Введите имя источника данных, тип источника данных, сервер, базу данных, имя пользователя и пароль, распознаваемые Active Directory.

Дополнительные сведения о создании шлюза и управлении ими см. в статье "Добавление или удаление источника данных шлюза".

Предоставление разрешений субъекта-службы или главного пользователя на шлюзе

Пользователю, создающим маркер внедрения, также требуется одно из следующих разрешений:

  • Разрешения администратора шлюза

  • Разрешение олицетворения источника данных (ReadOverrideEffectiveIdentity)

    У пользователей с правом входа от имени другого пользователя (override) рядом с именем отображается значок ключа.

    Снимок экрана: член шлюза со значком ключа рядом с именем.

Следуйте этим инструкциям, чтобы предоставить основному пользователю, субъекту-службе или профилю субъекта-службы разрешения на доступ к шлюзу.

Сопоставить имена пользователей

Если имена пользователей в локальном каталоге и каталоге Microsoft Entra отличаются и вы хотите просмотреть данные на портале, необходимо создать таблицу сопоставления пользователей, которая сопоставляет каждого пользователя или роль в идентификаторе Microsoft Entra с пользователями из локальной базы данных. Инструкции по сопоставлению имен пользователей см. в разделе "Повторное сопоставление имен пользователей вручную"

Дополнительные сведения см. в разделе Сопоставление имен пользователей для источников данных Analysis Services.

Создание активного подключения

После настройки среды создайте динамическое подключение между Power BI Desktop и SQL Server и создайте отчет.

  1. Запустите Power BI Desktop и выберите "Получить базу данных".>

  2. В списке источников данных выберите базу данных SQL Server Analysis Services и выберите "Подключиться".

    Подключитесь к базе данных служб SQL Server Analysis Services.

  3. Введите сведения о табличном экземпляре Analysis Services и выберите Прямое подключение. Затем выберите OK.

    Снимок экрана со сведениями о службах Analysis Services.

Создать токен внедрения

Чтобы внедрить отчет в сценарии внедрения для клиентов, создайте маркер внедрения, который передает эффективное удостоверение в Power BI. Все подключения в режиме реального времени к движкам AS требуют действительных учетных данных, даже если RLS не реализована.

Если RLS не настроена, доступ к базе данных есть только у администратора, поэтому в качестве фактической учетной записи следует использовать администратора.

Сведения, необходимые для создания токена внедрения, зависят от того, подключены ли вы к Power BI с помощью субъекта-службы или как мастер-пользователь, а также от того, используется ли в базе данных RLS.

Чтобы создать токен внедрения, укажите следующие сведения:

  • Имя пользователя (необязательно, если нет RLS. Требуется для RLS) — допустимое имя пользователя, распознаемое службой SSAS, которая будет использоваться в качестве эффективного удостоверения. Если база данных не использует RLS, а имя пользователя не указано, используются учетные данные главного пользователя.
  • Роль (обязательна для RLS) — отчет будет отображать данные, только если эффективный идентификатор входит в эту роль.

Пример:

public EmbedToken GetEmbedToken(Guid reportId, IList<Guid> datasetIds, [Optional] Guid targetWorkspaceId)
{
    PowerBIClient pbiClient = this.GetPowerBIClient();

    // Define the user identity and roles. Use one of the following:

    var rlsidentity = new EffectiveIdentity(  //If no RLS
       username: "Domain\\Username", // can also be username@contoso.com
       datasets: new List<string>{ datasetId.ToString()}
    )

    var rlsidentity = new EffectiveIdentity(  // If RLS
       username: "username@contoso.com",
       roles: new List<string>{ "MyRole" },
       datasets: new List<string>{ datasetId.ToString()}
    )
    
    // 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 }
    );

    // Generate an embed token
    var embedToken = pbiClient.EmbedToken.GenerateToken(tokenRequest);

    return embedToken;
}

Теперь вы можете внедрить отчет в приложение, и отчет будет фильтровать данные в соответствии с разрешениями пользователя, обращаюющегося к отчету.

Рекомендации и ограничения

CustomData не поддерживается.

Сгенерировать токен внедрения