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.
- Dans le portail d’administration Power BI, sélectionnez Paramètres du locataire.
- Faites défiler jusqu’à Paramètres du développeur, puis développez Autoriser les principaux de service à utiliser les API Power BI.
- Sélectionnez Enabled.
- Pour appliquer des autorisations à un groupe de sécurité, sélectionnez Groupes de sécurité spécifiques (recommandés).
- Entrez le nom du groupe.
- Sélectionnez Apply.
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.
Dans le service Power BI pour un espace de travail, sélectionnez Plus>Accès à l’espace de travail.
Recherchez par nom d’application, puis ajoutez le principal de service en tant qu’Administrateur ou Membre à l’espace de travail.
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();