Automatisation à l’aide de principaux de service

Les principaux de service sont une ressource d’application Microsoft Entra que vous créez au sein de votre locataire pour effectuer des opérations de niveau de service et de ressources sans assistance. Il s’agit d’un type unique d’identité utilisateur, qui est constitué d’un ID d’application, et d’un mot de passe ou d’un certificat. Un principal de service dispose uniquement des autorisations nécessaires pour effectuer des tâches définies par les rôles et les autorisations pour lesquels il est attribué.

Dans Analysis Services, les principaux de service sont utilisés avec Azure Automation, avec le mode sans assistance de PowerShell, avec des applications clientes personnalisées et avec des applications web, dans le but d’automatiser les tâches courantes. Par exemple, le provisionnement des serveurs, le déploiement des modèles, l’actualisation des données, la mise à l’échelle et les opérations de suspension/reprise peuvent être automatisés à l’aide de principaux de service. Les autorisations sont attribuées aux principaux de service par le biais de l’appartenance au rôle, comme les comptes UPN Microsoft Entra standard.

Analysis Services ne prend pas en charge les opérations effectuées par des identités gérées à l’aide de principaux du service. Pour en savoir plus, consultez Identités managées pour ressources Azure et Services Azure prenant en charge l’authentification Microsoft Entra.

Créer des principaux de service

Vous pouvez créer des principaux de service dans le portail Azure ou avec PowerShell. Pour plus d'informations, consultez les rubriques suivantes :

Créer un principal de service - Portail Azure
Créer un principal de service - PowerShell

Stocker des ressources d’informations d’identification et de certificats dans Azure Automation

Les informations d’identification et les certificats des principaux de service peuvent être stockés de manière sécurisée dans Azure Automation pour les opérations de runbook. Pour plus d'informations, consultez les rubriques suivantes :

Ressources d’informations d’identification dans Azure Automation
Ressources de certificats dans Azure Automation

Ajouter des principaux de service au rôle d’administrateur de serveur

Avant de pouvoir utiliser un principal de service pour les opérations de gestion d’un serveur Analysis Services, vous devez l’ajouter au rôle Administrateurs de serveur. Vous devez ajouter les principaux de service directement au rôle d’administrateur de serveur. L’ajout d’un principal de service à un groupe de sécurité, puis l’ajout de ce groupe de sécurité au rôle d’administrateur de serveur n’est pas pris en charge. Pour plus d’informations, consultez Ajouter un principal de service au rôle d’administrateur du serveur

Principaux de service dans les chaînes de connexion

Vous pouvez utiliser l’ID d’application et le mot de passe ou le certificat d’un principal de service dans les chaînes de connexion, de la même manière que pour un compte UPN.

PowerShell

Notes

Nous vous recommandons d’utiliser le module Azure Az PowerShell pour interagir avec Azure. Pour commencer, consultez Installer Azure PowerShell. Pour savoir comment migrer vers le module Az PowerShell, consultez Migrer Azure PowerShell depuis AzureRM vers Az.

Via le module Az.AnalysisServices

Quand vous utilisez un principal de service pour des opérations de gestion de ressources avec le module Az.AnalysisServices, utilisez l’applet de commande Connect-AzAccount.

Dans l’exemple suivant, la valeur appID et un mot de passe sont utilisés pour effectuer des opérations de plan de contrôle pour la synchronisation des réplicas en lecture seule et des opérations scale up/out :

Param (
        [Parameter(Mandatory=$true)] [String] $AppId,
        [Parameter(Mandatory=$true)] [String] $PlainPWord,
        [Parameter(Mandatory=$true)] [String] $TenantId
       )
$PWord = ConvertTo-SecureString -String $PlainPWord -AsPlainText -Force
$Credential = New-Object -TypeName "System.Management.Automation.PSCredential" -ArgumentList $AppId, $PWord

# Connect using Az module
Connect-AzAccount -Credential $Credential -SubscriptionId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx"

# Synchronize a database for query scale out
Sync-AzAnalysisServicesInstance -Instance "asazure://westus.asazure.windows.net/testsvr" -Database "testdb"

# Scale up the server to an S1, set 2 read-only replicas, and remove the primary from the query pool. The new replicas will hydrate from the synchronized data.
Set-AzAnalysisServicesServer -Name "testsvr" -ResourceGroupName "testRG" -Sku "S1" -ReadonlyReplicaCount 2 -DefaultConnectionMode Readonly

Via le module SQLServer

Dans l’exemple suivant, un ID d’application et un mot de passe sont utilisés pour effectuer une opération d’actualisation d’une base de données model :

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

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

Invoke-ProcessTable -Server "asazure://westcentralus.asazure.windows.net/myserver" -TableName "MyTable" -Database "MyDb" -RefreshType "Full" -ServicePrincipal -ApplicationId $AppId -TenantId $TenantId -Credential $Credential

AMO et ADOMD

Lorsque vous vous connectez à une application cliente ou à une application web, les packages installables des bibliothèques clientes AMO et ADOMD version 15.0.2 (et ultérieures) issus de NuGet prennent en charge l’utilisation des principaux de service dans les chaînes de connexion à l’aide de la syntaxe suivante : app:AppID, puis le mot de passe ou cert:thumbprint.

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

string appId = "xxx";
string authKey = "yyy";
string connString = $"Provider=MSOLAP;Data Source=asazure://westus.asazure.windows.net/<servername>;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();

Étapes suivantes

Se connecter avec Azure PowerShell
Actualiser avec Logic Apps
Actualiser avec Azure Automation
Ajouter un principal de service au rôle d’administrateur du serveur
Automatiser des tâches d’espace de travail et de jeu de données Power BI Premium avec des principaux de service