共用方式為


快速入門:將 Bicep 檔案部署為服務主體

在本快速入門中,您會部署 Bicep 檔案,其中包含使用僅限應用程式驗證的 Microsoft Graph 資源,也稱為非互動式驗證。 您可以使用此機制將零接觸部署整合至持續整合和持續傳遞 (CI/CD) 管線。

若要使用委派或互動式驗證進行部署,請參閱 使用 Microsoft Graph 資源建立 Bicep 檔案。

重要

Microsoft Graph Bicep 目前處於預覽狀態。 請參閱 Microsoft Azure 預覽版增補使用規定,以了解適用於 Azure 功能 (搶鮮版 (Beta)、預覽版,或尚未正式發行的版本) 的法律條款。

必要條件

  • 在本快速入門中,請使用使用 Microsoft Graph 資源建立 Bicep 檔案中建立的 Bicep 檔案。
  • 您是 Azure 訂用帳戶的擁有者。
  • 您是特殊 許可權角色管理員,可讓您將Microsoft Graph 應用程式角色指派給服務主體。

建立服務主體並指派 Azure 角色

雖然仍從上一個會話登入 Azure CLI,但請建立您稍後用來部署 Bicep 檔案的服務主體。

在本快速入門中,服務主體會以應用程式密碼建立,也稱為客戶端密碼。 此外,將受控識別參與者角色指派給範圍設定為資源群組的服務主體

警告

本快速入門僅針對簡單和測試目的使用應用程式密碼。 請勿在生產環境中使用。

# Create a resource group
az group create --name exampleRG --location eastus

# Create a service principal with the Managed Identity Contributor role. Replace {myServicePrincipalName}, {mySubscriptionId}, and {myResourceGroupName} with your values.
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 應用程式許可權授與服務主體。 特殊許可權角色管理員角色可讓您授與 AppRoleAssignment.ReadWrite.All Application.Read.All 許可權,以執行這項作業。

警告

已授與 AppRoleAssignment.ReadWrite.All 許可權的應用程式,只能由適當的使用者存取。 如需詳細資訊,請參閱 AppRoleAssignment.ReadWrite.All

# Authenticate to Microsoft Graph
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" 

以服務主體身分登入以部署 Bicep 檔案

以稍早建立的服務主體身分登入。

# Sign in with the service principal created earlier. This sample uses the Bash console.
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 ,請使用 read -s 中的 bash命令。

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

注意

由於復寫延遲,將受控服務識別 (MSI) 新增為 Microsoft Entra 群組的擁有者,可能會導致部署失敗。 稍候一下,然後再部署相同的 Bicep 檔案。

清除資源

不再需要 Azure 資源時,請使用 Azure CLI 或 Azure PowerShell 模組來刪除您所建立的資源群組。

注意

資源群組是 Azure 概念,不會影響 Microsoft Graph 資源。 Microsoft Graph 資源需要以額外的要求來清除 Microsoft Graph。 為此,您可以使用 Azure CLI 或 Azure PowerShell、 Microsoft Graph CLIMicrosoft Graph PowerShell

下列範例示範先刪除 Azure 資源的命令,然後使用 Azure CLI 和 Azure PowerShell 來刪除 Microsoft Graph 資源。

# Delete the resource group
az group delete --name exampleRG

# Delete the Microsoft Graph group
az rest --method delete --url 'https://graph.microsoft.com/v1.0/groups%28uniqueName=%27myExampleGroup%27%29'

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