Udostępnij za pośrednictwem


Szybki start: wdrażanie pliku Bicep jako jednostki usługi

Ten przewodnik Szybki start przeprowadzi Cię do wdrożenia pliku Bicep z zasobami programu Microsoft Graph przy użyciu uwierzytelniania tylko aplikacji (uwierzytelnianie nieinteraktywne). Takie podejście umożliwia bezproblemową integrację z potokami ciągłej integracji/ciągłego wdrażania dla wdrożeń bezobsługowych.

Aby uzyskać informacje na temat delegowanego lub interakcyjnego uwierzytelniania, zobacz Tworzenie pliku Bicep z zasobami programu Microsoft Graph.

Prerequisites

Utwórz jednostkę usługi i przypisz rolę platformy Azure

Zaloguj się do interfejsu wiersza polecenia platformy Azure i utwórz jednostkę usługi na potrzeby wdrażania pliku Bicep.

W tym przykładzie użyto hasła aplikacji (klucza tajnego klienta) tylko do uproszczenia i testowania. Przypisz jednostkę usługi rolę Współautor tożsamości zarządzanej o zakresie do grupy zasobów.

Caution

Unikaj używania haseł aplikacji w środowiskach produkcyjnych.

# 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}"

Output:

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

password Skopiuj wartość — nie można jej pobrać później.

Przypisz uprawnienia Microsoft Graph do głównej usługi

Przyznaj jednostce usługi uprawnienie Group.ReadWrite.All tylko do aplikacji przy użyciu programu Microsoft Graph PowerShell. Rola Administrator ról uprzywilejowanych umożliwia przypisanie wymaganych uprawnień AppRoleAssignment.ReadWrite.All i Application.Read.All .

Caution

Ogranicz dostęp do aplikacji, którym udzielono uprawnień AppRoleAssignment.ReadWrite.All . Aby uzyskać szczegółowe informacje, zobacz AppRoleAssignment.ReadWrite.All .

# Authenticate to Microsoft Graph
Connect-MgGraph -Scopes "AppRoleAssignment.ReadWrite.All","Application.Read.All"

# Find the service principal created earlier
$mySP = Get-MgServicePrincipalByAppId -AppId "myServicePrincipalId"

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

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

Zaloguj się jako jednostka usługi, aby wdrożyć plik Bicep

Zaloguj się przy użyciu utworzonej wcześniej jednostki usługi.

# Sign in with the service principal. 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

Important

Aby uniknąć wyświetlania hasła w konsoli podczas korzystania az login interakcyjnego read -s , użyj polecenia w pliku bash.

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

Wdróż plik Bicep

Wdróż plik Bicep przy użyciu zakresu grupy zasobów.

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

Note

Wdrożenie może zakończyć się niepowodzeniem z powodu opóźnień replikacji podczas dodawania tożsamości usługi zarządzanej (MSI) jako właściciela grupy firmy Microsoft Entra. Poczekaj i ponów próbę wdrożenia.

Czyszczenie zasobów

Użyj interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell, aby usunąć zasoby platformy Azure i zasoby programu Microsoft Graph, gdy nie będą już potrzebne.

Note

Grupy zasobów są koncepcją platformy Azure i nie mają wpływu na zasoby programu Microsoft Graph. Zasoby programu Microsoft Graph muszą zostać wyczyszczone przy użyciu innego żądania do programu Microsoft Graph. W tym celu możesz użyć interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell albo programu Microsoft Graph PowerShell.

W poniższych przykładach pokazano polecenia umożliwiające najpierw usunięcie zasobu platformy Azure, a następnie zasobów programu Microsoft Graph przy użyciu interfejsu wiersza polecenia platformy Azure i programu Azure PowerShell.

# 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