サービス プリンシパルによる自動化Automation with service principals

サービス プリンシパルは、リソース/サービス レベルの無人操作を実行する目的でテナント内で作成する Azure Active Directory アプリケーション リソースです。Service principals are an Azure Active Directory application resource you create within your tenant to perform unattended resource and service level operations. アプリケーション ID とパスワードまたは証明書が与えられた、独自のユーザー ID です。They're a unique type of user identity with an application ID and password or certificate. サービス プリンシパルには、割り当てられたロールとアクセス許可によって定義されるタスクを実行するために必要な権限のみが与えられます。A service principal has only those permissions necessary to perform tasks defined by the roles and permissions for which it's assigned.

Analysis Services では、サービス プリンシパルは Azure Automation、PowerShell 無人モード、カスタム クライアント アプリケーション、Web アプリと共に使用し、共通タスクを自動化します。In Analysis Services, service principals are used with Azure Automation, PowerShell unattended mode, custom client applications, and web apps to automate common tasks. たとえば、サーバーのプロビジョニング、モデルのデプロイ、データ更新、拡大縮小、一時停止/再開をすべて、サービス プリンシパルを利用することで自動化できます。For example, provisioning servers, deploying models, data refresh, scale up/down, and pause/resume can all be automated by using service principals. 権限は、通常の Azure AD UPN アカウントとほぼ同じように、ロール メンバーシップを介してサービス プリンシパルに割り当てられます。Permissions are assigned to service principals through role membership, much like regular Azure AD UPN accounts.

Analysis Services では、サービス プリンシパルを使用してマネージド ID によって実行される操作もサポートされます。Analysis Services also supports operations performed by managed identities using service principals. 詳細については、Azure リソースのマネージド ID に関するページAzure AD 認証をサポートする Azure サービスに関するページを参照してください。To learn more, see Managed identities for Azure resources and Azure services that support Azure AD authentication.

サービス プリンシパルの作成Create service principals

サービス プリンシパルは Azure Portal で作成するか、PowerShell を利用して作成できます。Service principals can be created in the Azure portal or by using PowerShell. 詳細については、次を参照してください。To learn more, see:

サービス プリンシパルを作成する - Azure Portal Create service principal - Azure portal
サービス プリンシパルを作成する - PowerShellCreate service principal - PowerShell

Azure Automation に資格情報と証明書資産を保存するStore credential and certificate assets in Azure Automation

Runbook 操作のために、サービス プリンシパルの資格情報と証明書を Azure Automation に安全に格納できます。Service principal credentials and certificates can be stored securely in Azure Automation for runbook operations. 詳細については、次を参照してください。To learn more, see:

Azure Automation の資格情報資産 Credential assets in Azure Automation
Azure Automation の証明書資産Certificate assets in Azure Automation

サービス プリンシパルをサーバー管理者ロールに追加するAdd service principals to server admin role

Analysis Services サーバー管理操作のためにサービス プリンシパルを使用するには、最初にサービス プリンシパルをサーバー管理者ロールに追加する必要があります。Before you can use a service principal for Analysis Services server management operations, you must add it to the server administrators role. 詳細については、「サーバー管理者ロールへのサービス プリンシパルの追加」を参照してください。To learn more, see Add a service principal to the server administrator role.

接続文字列のサービス プリンシパルService principals in connection strings

サービス プリンシパル appID とパスワードまたは証明書は、UPN とほぼ同じように接続文字列で使用できます。Service principal appID and password or certificate can be used in connection strings much the same as a UPN.

PowerShellPowerShell

注意

この記事は、新しい Azure PowerShell Az モジュールを使用するために更新されました。This article has been updated to use the new Azure PowerShell Az module. AzureRM モジュールはまだ使用でき、少なくとも 2020 年 12 月までは引き続きバグ修正が行われます。You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Az モジュールと AzureRM の互換性の詳細については、「Introducing the new Azure PowerShell Az module (新しい Azure PowerShell Az モジュールの概要)」を参照してください。To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Az モジュールのインストール手順については、Azure PowerShell のインストールを参照してください。For Az module installation instructions, see Install Azure PowerShell.

Az.AnalysisServices モジュールの使用Using Az.AnalysisServices module

Az.AnalysisServices モジュールによるリソース管理操作でサービス プリンシパルを使用するときは、Connect-AzAccount コマンドレットを使用します。When using a service principal for resource management operations with the Az.AnalysisServices module, use Connect-AzAccount cmdlet.

次の例では、appID とパスワードを使用してコントロール プレーンの操作を実行し、読み取り専用レプリカおよびスケールアップ/アウトに対する同期を行っています。In the following example, appID and a password are used to perform control plane operations for synchronization to read-only replicas and 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"

# Syncronize 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

SQLServer モジュールの使用Using SQLServer module

次の例では、appID とパスワードを使用し、モデル データベース更新操作を実行します。In the following example, appID and a password are used to perform a model database refresh operation:

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 と ADOMDAMO and ADOMD

クライアント アプリケーションや Web アプリと接続するとき、AMO と ADOMD のクライアント ライブラリ バージョン 15.0.2 以降の、NuGet からインストールできるパッケージでは、接続文字列にサービス プリンシパルを指定できます。構文 app:AppID とパスワードまたは cert:thumbprint を利用します。When connecting with client applications and web apps, AMO and ADOMD client libraries version 15.0.2 and higher installable packages from NuGet support service principals in connection strings using the following syntax: app:AppID and password or cert:thumbprint.

次の例では、appIDpassword を使用し、モデル データベース更新操作を実行します。In the following example, appID and a password are used to perform a model database refresh operation:

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();

次の手順Next steps

Azure PowerShell を使用してサインインする Sign in with Azure PowerShell
サーバー管理者ロールへのサービス プリンシパルの追加Add a service principal to the server administrator role