快速入門:將 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 CLI 或 Microsoft 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