Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :✅ Power BI analytique embarquée pour vos clients (App-owns-data)
Cet article explique comment incorporer un rapport Power BI qui utilise des données stockées dans Azure Analysis Services (AAS) dans un scénario Incorporé pour vos clients. Cet article est destiné aux développeurs de logiciels indépendants (ISV), qui souhaitent incorporer un rapport avec des données AAS, que la base de données implémente ou non la sécurité au niveau des lignes (RLS).
Prérequis
Vous avez besoin d’un rapport avec une connexion active à la base de données AAS, avec ou sans RLS.
Sécurité dynamique - RLS
Si vous souhaitez que votre rapport mette en œuvre la sécurité dynamique au niveau des lignes, utilisez la fonction customeData. Étant donné que vous ne pouvez pas remplacer l’identité effective, nous vous recommandons de créer de nouveaux rôles avec customData. Vous pouvez également utiliser des rôles qui ont les fonctions username ou userPrincipalName, si vous les remplacez par customData.
Suivez ces étapes pour créer un rôle et ajouter la fonction customData au rôle.
Créez un rôle dans le serveur Analysis Services.
Dans les paramètres Général, fournissez un Nom de rôle et définissez les autorisations de base de données sur Lecture uniquement.
Dans les paramètres Appartenance, ajoutez les utilisateurs qui vont appeler l’API Jeton d’incorporation - Générer un jeton. Si vous utilisez un principal de service qui n’est pas un administrateur, ajoutez-le également.
Dans les paramètres Filtres de lignes, définissez votre requête DAX à l’aide de la fonction
CUSTOMDATA().
Service Principal
Si vous utilisez un principal de service pour incorporer le rapport, assurez-vous que le principal de service est un administrateur de serveur ou membre du rôle AAS. Pour accorder des autorisations d’administrateur AAS au principal de service, consultez Ajouter un principal de service au rôle d’administrateur de serveur. Pour ajouter le principal de service en tant que membre de rôle, accédez aux Paramètres d’appartenance.
Utilisez l’ID d’objet du principal de service comme nom d’utilisateur (identité effective).
Migration du service d’analyse
Vous pouvez migrer d’AAS vers Power BI Premium même si vous avez un rapport AAS incorporé. Votre rapport incorporé ne cesse pas de fonctionner pendant la migration, à condition que le principal qui appelle l’API Embed Token - Generate Token soit membre de l’espace de travail ou en soit l’administrateur.
Note
Si le principal de service n’est pas administrateur et que vous ne souhaitez pas le rendre administrateur de l’espace de travail lorsque vous migrez, migrez ce modèle vers un espace de travail distinct où vous pouvez lui accorder des autorisations d’administrateur.
Générer un jeton incorporé
Utilisez l’API Générer un jeton pour générer un jeton d’incorporation qui remplace l’identité effective.
Les informations nécessaires pour générer un jeton d’incorporation dépendent de votre mode de connexion à Power BI (principal de service ou utilisateur principal), ainsi que du fait que la base de données utilise ou non la sécurité au niveau des lignes (RLS).
- Jeton d’incorporation pour l’utilisateur principal
- Jeton d’incorporation de principal de service ou de profil de principal de service
Pour générer un jeton incorporé, fournissez les informations suivantes :
- Nom d’utilisateur (Facultatif s’il n’y a pas de RLS. Obligatoire pour le RLS) - Le nom d’utilisateur doit être le même que celui de l’appelant de l’API (dans ce cas, l’UPN de l’utilisateur maître). Si la base de données n’utilise pas la sécurité au niveau des lignes (RLS) et qu’aucun nom d’utilisateur n’est fourni, les identifiants de l’utilisateur maître sont utilisés.
- Rôle (requis pour RLS) : le rapport affiche uniquement les données si l’identité effective est membre du rôle.
Exemple :
Définissez l’identité et les rôles de l’utilisateur pour l’un des trois scénarios suivants :
- Si la sécurité au niveau des lignes n’est pas mise en œuvre :
Vous n’avez pas besoin de définir une identité effective.
Si vous utilisez la sécurité au niveau des lignes statique :
var rlsidentity = new EffectiveIdentity( //If static RLS username: "username@contoso.com", roles: new List<string>{ "MyRole" }, datasets: new List<string>{ datasetId.ToString()} )Si vous utilisez la sécurité au niveau des lignes (RLS) dynamique :
var rlsidentity = new EffectiveIdentity( // If dynamic RLS username: "username@contoso.com", roles: new List<string>{ "MyRoleWithCustomData" }, customData: "SalesPersonA" datasets: new List<string>{ datasetId.ToString()} )Note
customDatadans le jeton d’intégration ne peut pas dépasser 1 024 caractères.
Utilisez l’identité effective pour générer un jeton incorporé :
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;
}
Utilisez le jeton d’incorporation pour incorporer le rapport dans votre application ou site web. Votre rapport filtre les données en fonction des RLS appliquées dans le rapport.