Automatiser les tâches d’espace de travail Premium et de modèle sémantique avec des principaux de service

Les principaux de service sont une inscription d’application Microsoft Entra ID que vous créez à l’intérieur de votre locataire pour effectuer des opérations sans assistance au niveau du service et des ressources. Il s’agit d’un type unique d’identité d’utilisateur avec un nom d’application, un ID d’application, un ID de locataire, et une clé secrète client ou un certificat en guise de mot de passe.

Power BI Premium utilise la même fonctionnalité de principal de service que Power BI Embedded. Pour plus d’informations, consultez Incorporation du contenu Power BI avec le principal de service et un certificat.

Dans Power BI Premium, vous pouvez utiliser des principaux de service avec le point de terminaison XMLA (XML Analysis) pour automatiser des tâches de gestion de modèle sémantique telles que le provisionnement d’espaces de travail, le déploiement de modèles et l’actualisation de modèles sémantiques avec :

  • PowerShell.
  • Azure Automation.
  • Azure Logic Apps.
  • Applications clientes personnalisées.

Seuls les nouveaux espaces de travail prennent en charge les connexions de point de terminaison XMLA à l’aide de principaux de service. Les espaces de travail classiques ne sont pas pris en charge. Un principal de service dispose uniquement des autorisations nécessaires pour effectuer des tâches sur les espaces de travail auxquels il est affecté. Les autorisations sont affectées par le biais de l’Accès à l’espace de travail, comme les comptes UPN (nom d’utilisateur principal) ordinaires.

Pour effectuer des opérations d’écriture, la charge de travail des modèles de données de la capacité doit avoir le point de terminaison XMLA activé pour les opérations de lecture-écriture. Les modèles de données publiés à partir de Power BI Desktop doivent avoir la fonctionnalité format de métadonnées amélioré activée.

Créer un principal du service

Les principaux de service sont créés en tant qu’inscription d’application dans le portail Azure ou à l’aide de PowerShell. Lors de la création de votre principal de service, veillez à copier et à enregistrer séparément le nom de l’application, l’ID d’application (client), l’ID d’annuaire (locataire) et le secret client. Pour découvrir les étapes de création d’un principal de service, consultez :

Créer un groupe de sécurité dans Microsoft Entra ID

Par défaut, les principaux de service ont accès à tous les paramètres de locataire pour lesquels ils sont activés. En fonction de vos paramètres d’administrateur, l’accès peut comprendre des groupes de sécurité spécifiques ou toute l’organisation.

Pour restreindre l’accès du principal de service à des paramètres de locataire spécifiques, vous pouvez autoriser l’accès à des groupes de sécurité spécifiques. Vous pouvez également créer un groupe de sécurité dédié pour les principaux de service et l’exclure des paramètres d’abonné souhaités. Pour créer un groupe de sécurité et ajouter un principal de service, consultez Créer un groupe de base et ajouter des membres avec Microsoft Entra ID.

Activer des principaux de service

Avant de commencer à utiliser des principaux de service dans Power BI, un administrateur doit activer l’accès des principaux de service dans le portail d’administration Power BI.

  1. Dans le portail d’administration Power BI, sélectionnez Paramètres du locataire.
  2. Faites défiler jusqu’à Paramètres du développeur, puis développez Autoriser les principaux de service à utiliser les API Power BI.
  3. Sélectionnez Enabled.
  4. Pour appliquer des autorisations à un groupe de sécurité, sélectionnez Groupes de sécurité spécifiques (recommandés).
  5. Entrez le nom du groupe.
  6. Sélectionnez Appliquer.

Capture d’écran montrant le portail d’administration avec les paramètres de locataire sélectionnés. Autoriser les principaux de service à utiliser les API Power BI est développé avec activé mis en surbrillance.

Accès à l’espace de travail

Pour que votre principal de service dispose des autorisations nécessaires pour effectuer des opérations de modèle sémantique et d’espace de travail Premium, vous devez l’ajouter en tant que membre ou administrateur de l’espace de travail. L’utilisation de l’accès à l’espace de travail dans le service Power BI est décrite ici, mais vous pouvez également utiliser l’API REST Ajouter un groupe d’utilisateurs.

  1. Dans le service Power BI pour un espace de travail, sélectionnez Plus>Accès à l’espace de travail.

    Capture d’écran montrant une liste d’espaces de travail. L’icône Plus et l’accès à l’espace de travail sont en évidence.

  2. Recherchez par nom d’application, puis ajoutez le principal de service en tant qu’Administrateur ou Membre à l’espace de travail.

    Capture d’écran montrant la boîte de dialogue d’accès affichant un nom de principal de service. Administrateur est sélectionné.

Chaînes de connexion pour le point de terminaison XMLA

Une fois que vous avez créé un principal de service, activé les principaux de service pour votre locataire et ajouté le principal de service à l’accès à l’espace de travail, utilisez-le en tant qu’identité d’utilisateur dans les chaînes de connexion avec le point de terminaison XMLA. La différence est qu’au lieu des paramètres user id et password, vous spécifiez l’ID d’application, l’ID de locataire et le secret d’application.

Data Source=powerbi://api.powerbi.com/v1.0/myorg/<workspace name>; Initial Catalog=<dataset name>;User ID=app:<appId>@<tenantId>;Password=<app_secret>;

PowerShell

Ouvrez une session PowerShell pour exécuter l’exemple de code suivant.

Via le module SQLServer

Dans l’exemple suivant, AppId, TenantId, et AppSecret sont utilisés pour authentifier une opération d’actualisation de modèle sémantique :

Param (
        [Parameter(Mandatory=$true)] [String] $AppId,
        [Parameter(Mandatory=$true)] [String] $TenantId,
        [Parameter(Mandatory=$true)] [String] $AppSecret
       )
$PWord = ConvertTo-SecureString -String $AppSecret -AsPlainText -Force

$Credential = New-Object -TypeName "System.Management.Automation.PSCredential" -ArgumentList $AppId, $PWord

Invoke-ProcessTable -Server "powerbi://api.powerbi.com/v1.0/myorg/myworkspace" -TableName "mytable" -DatabaseName "mydataset" -RefreshType "Full" -ServicePrincipal -ApplicationId $AppId -TenantId $TenantId -Credential $Credential

AMO (Analysis Management Objects) et ADOMD.NET

Quand vous vous connectez à des applications clientes ou à des applications web, vous pouvez utiliser les packages installables des bibliothèques de client AMO et ADOMD version 15.1.42.26 (juin 2020) et versions ultérieures, provenant de NuGet pour prendre en charge les principaux de service dans les chaînes de connexion à l’aide de la syntaxe app:AppID et d’une mot de passe ou d’une cert:thumbprint.

Dans l’exemple suivant, des valeurs appID et password sont utilisées pour effectuer une opération d’actualisation de base de données model :

string appId = "xxx";
string authKey = "yyy";
string connString = $"Provider=MSOLAP;Data source=powerbi://api.powerbi.com/v1.0/<tenant>/<workspacename>;Initial catalog=<datasetname>;User ID=app:{appId};Password={authKey};";
Server server = new Server();
server.Connect(connString);
Database db = server.Databases.FindByName("adventureworks");
Table tbl = db.Model.Tables.Find("DimDate");
tbl.RequestRefresh(RefreshType.Full);
db.Model.SaveChanges();