クイック スタート: Bicep ファイルをサービス プリンシパルとしてデプロイする

このクイック スタートでは、アプリ専用認証 (非対話型認証とも呼ばれます) を使用して、Microsoft Graph リソースを含む Bicep ファイルをデプロイします。 このメカニズムは、継続的インテグレーションおよび継続的デリバリー (CI/CD) パイプラインへのゼロタッチデプロイ統合に使用できます。

委任された認証または対話型認証を使用してデプロイするには、「Microsoft Graph リソースを使用して Bicep ファイルを作成する」を参照してください

重要

Microsoft Graph Bicep は現在プレビュー段階です。 ベータ版、プレビュー版、または一般提供としてまだリリースされていない Azure の機能に適用される法律条項については、「Microsoft Azure プレビューの追加使用条件」を参照してください。

前提条件

  • このクイック スタートでは、「Microsoft Graph リソースで Bicep ファイルを作成する」で 作成した Bicep ファイルを使用します
  • あなたは Azure サブスクリプションの所有者です。
  • Entra Privileged Role 管理を使用すると、Microsoft Graph アプリロールをサービス プリンシパルに割り当てることができます。

サービス プリンシパルを作成し、Azure ロールを割り当てる

後で Bicep ファイルをデプロイするために使用するサービス プリンシパルを作成します。 このクイック スタートでは、サービス プリンシパルはアプリケーション パスワード (クライアント シークレットとも呼ばれます) を使用して作成されます。 また、サービス プリンシパルに、リソース グループを スコープとしたマネージド ID 共同作成者ロールを割り当てます。

注意事項

このクイック スタートでは、アプリケーション パスワードを使用してわかりやすくし、テストのみを行います。 運用環境では使用しないでください。

az group create --name exampleRG --location eastus

az ad sp create-for-rbac --name myServicePrincipalName --role "Managed Identity Contributor" --scopes "/subscriptions/mySubscriptionId/resourceGroups/myResourceGroupName"

出力コンソール:

{
  "appId": "myServicePrincipalId",
  "displayName": "myServicePrincipalName",
  "password": "myServicePrincipalPassword",
  "tenant": "myOrganizationTenantId"
}

出力にはキーが password 含まれます。 この値は必ずコピーしてください。 取得することはできません。

Microsoft Graph のアクセス許可をサービス プリンシパルに割り当てる

Microsoft Graph PowerShell を使用してGroup.ReadWrite.All アプリケーションのみのアクセス許可をサービス プリンシパルに付与します。

Connect-MgGraph -Scopes "AppRoleAssignment.ReadWrite.All","Application.Read.All"

# Find the service principal created to run the deployment
$mySP = Get-MgServicePrincipalByAppId -AppId "myServicePrincipalId"

# Find the service principal for Microsoft Graph
$graphSP = Get-MgServicePrincipalByAppId -AppId "00000003-0000-0000-c000-000000000000"

# Assign Group.ReadWrite.All app-only permission (id = 62a82d76-70ea-41e2-9197-370581804d09)
New-MgServicePrincipalAppRoleAssignedTo -ResourceId $graphSP.Id -ServicePrincipalId $graphSP.Id -PrincipalId $mySP.Id -AppRoleId "62a82d76-70ea-41e2-9197-370581804d09" 

ヒント

Microsoft Graph のアクセス許可参照使用して、アクセス許可名 (User.Read.All など) でアクセス許可 ID を検索します。

サービス プリンシパルとしてサインインして Bicep ファイルをデプロイする

Azure CLI または Azure PowerShell を使用して、先ほど作成したサービス プリンシパルとしてサインインします。


spID=$(az ad sp list --display-name myServicePrincipalName --query "[].{spID:appId}" --output tsv)
tenantID=$(az ad sp list --display-name myServicePrincipalName --query "[].{tenantID:appOwnerOrganizationId}" --output tsv)
echo "Using appId $spID in tenant $tenantID"

az login --service-principal --username $spID --password {paste your SP password here} --tenant $tenantID

重要

az login を対話形式で使用しているときに、コンソールにパスワードが表示されないようにするには、bashread -s コマンドを使います。

read -sp "Azure password: " AZ_PASS && echo && az login --service-principal -u <app-id> -p $AZ_PASS --tenant <tenant>

Bicep ファイルをデプロイする

次に、リソース グループのスコープを使用して Bicep ファイルをデプロイします。

az deployment group create --resource-group exampleRG --template-file main.bicep

Note

レプリケーションの遅延により、Microsoft Entra グループの所有者としてマネージド サービス ID (MSI) を追加すると、デプロイが失敗する可能性があります。 少し待ってから、同じ Bicep ファイルをもう一度デプロイします。

リソースをクリーンアップする

Azure リソースが不要になったら、Azure CLI か Azure PowerShell のどちらかのモジュールを使用してクイックスタート リソース グループを削除します。

Note

リソース グループは Azure の概念であり、Microsoft Graph リソースには影響しません。 Microsoft Graph リソースは、Microsoft Graph への追加要求と共にクリーンする必要があります。 このためには、Azure CLI、Azure PowerShell、 Microsoft Graph CLI、または Microsoft Graph PowerShell を使用できます。

次の例では、Azure CLI と Azure PowerShell を使用して、最初に Azure リソースを削除し、次に Microsoft Graph リソースを削除するコマンドを示します。

az group delete --name exampleRG

az rest --method delete --url https://graph.microsoft.com/v1.0/groups(uniqueName=%27myExampleGroup%27)

spID=$(az ad sp list --display-name myServicePrincipalName --query "[].{spID:id}" --output tsv)
az ad sp delete --id $spID