Partager via


Incorporer un rapport dans SQL Server Analysis Services local (SSAS)

S’APPLIQUE À : L’application possède des données L’utilisateur possède des données

Cet article explique comment incorporer du contenu Power BI avec une connexion active de modèle tabulaire Analysis Services local dans une application Power BI standard propriétaire d’une application de données. Cet article s’applique à tous les modèles SSAS de connexion active, qu’ils implémentent ou non la sécurité au niveau des lignes.

Dans ce scénario, la base de données se trouve sur le modèle SSAS (local) et le moteur Power BI s’y connecte par le biais d’une passerelle. Les rôles de sécurité (SNL) et les autorisations, le cas échéant, sont définis dans le modèle SSAS et non dans Power BI Desktop.

À qui s’adresse cet article ?

Cet article s’adresse principalement aux fournisseurs de logiciel indépendants qui disposent déjà d’une configuration de base de données (SSAS) locale (avec ou sans SNL) et souhaitent incorporer du contenu directement à partir de celle-ci.

Configuration spécifique à un fournisseur de logiciel indépendant

La sécurité au niveau des lignes locale n’est disponible qu’avec une connexion active, mais vous pouvez créer une connexion active à n’importe quelle base de données, qu’elle implémente ou non la SNL. Cela comprend :

  • Bases de données sans rôles SNL configurés
  • Bases de données avec des membres qui appartiennent à un ou plusieurs rôles
  • Bases de données avec des rôles de sécurité statiques ou dynamiques

Pour incorporer un rapport à partir d’un modèle SSAS, vous devez effectuer les actions suivantes :

  1. Configurer la passerelle
  2. Créer une connexion active
  3. Générer un jeton d’intégration

Configurer la passerelle

Ajouter une connexion de source de données à la passerelle SSAS

Entrez le nom de la source de données, son type, le serveur, la base de données, un nom d’utilisateur et un mot de passe reconnu par l’annuaire Active Directory.

Pour plus d’informations sur la création et la gestion d’une passerelle, consultez Ajouter ou supprimer une source de données de type passerelle.

Accorder des autorisations d’utilisateur maître ou de principal de service sur la passerelle

L’utilisateur qui génère le jeton intégré a également besoin de l’une des autorisations suivantes :

  • Autorisations d’administrateur de passerelle

  • Autorisation d’emprunt d’identité de source de données (ReadOverrideEffectiveIdentity)

    Une icône de clé figure en regard du nom des utilisateurs disposant d’une autorisation d’emprunt d’identité (remplacement).

    Capture d’écran d’un membre de passerelle avec une icône de clé en regard du nom.

Suivez ces instructions pour accorder des autorisations de passerelle à votre utilisateur maître, principal de service ou profil de principal de service.

Mapper des noms d’utilisateur

Si les noms d’utilisateur ne sont pas les mêmes dans l’annuaire local et l’annuaire Microsoft Entra et que vous souhaitez voir les données dans le portail, vous devez créer une table de mappage d’utilisateur qui mappe chaque utilisateur ou rôle dans Microsoft Entra ID aux utilisateurs de la base de données locale. Pour obtenir des instructions sur le mappage de noms d’utilisateur, consultez Remappage manuel des noms d’utilisateur

Pour plus d’informations, consultez Mapper des noms d’utilisateurs pour les sources de données Analysis Services.

Créer une connexion active

Quand l’environnement est configuré, créez une connexion active entre Power BI Desktop et le serveur SQL et créez votre rapport.

  1. Démarrez Power BI Desktop et sélectionnez Obtenir les données>Base de données.

  2. Dans la liste des sources de données, sélectionnez Base de données SQL Server Analysis Services, puis Connexion.

    Se connecter à la base de données SQL Server Analysis Services.

  3. Renseignez les détails de l’instance tabulaire Analysis Services et sélectionnez Connexion directe. Sélectionnez ensuite OK.

    Capture d’écran des détails de l’instance Analysis Services.

Générer un jeton d’intégration

Pour incorporer votre rapport dans le cadre du scénario d’incorporation pour vos clients, générez un jeton intégré qui transfère l’identité effective à Power BI. Toutes les connexions actives aux moteurs AS ont besoin d’une identité effective même si aucune SNL n’est implémentée.

Si aucune SNL n’est configurée, seul l’administrateur a accès à la base de données. Vous devez donc utiliser l’identité Administrateur comme identité effective.

Les informations nécessaires à la génération d’un jeton intégré dépendent de la façon dont vous êtes connecté à Power BI (en utilisant un principal de service ou un utilisateur maître) et de l’utilisation ou non de la sécurité au niveau des lignes pour la base de données.

Pour générer le jeton intégré, fournissez les informations suivantes :

  • Nom d’utilisateur (facultatif sans SNL ; obligatoire avec la SNL) : nom d’utilisateur valide reconnu par la source SSAS, qui sera utilisé comme identité effective. Si la base de données n’utilise pas la SNL et qu’aucun nom d’utilisateur n’est fourni, les informations d’identification de l’utilisateur maître sont utilisées.
  • Rôle (obligatoire pour la sécurité au niveau des lignes) : le rapport affiche uniquement les données si l’identité effective est membre du rôle.

Exemple :

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;
}

Vous pouvez maintenant incorporer votre rapport à votre application. Votre rapport filtrera les données en fonction des autorisations de l’utilisateur qui accède au rapport.

Considérations et limitations

CustomData n’est pas pris en charge.

Générer un jeton d’intégration