クイック スタート: 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
を対話形式で使用しているときに、コンソールにパスワードが表示されないようにするには、bash
で read -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
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示