Udostępnij za pośrednictwem


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

W tym przewodniku szybkiego startu wdrożysz plik Bicep zawierający zasoby Microsoft Graph z użyciem uwierzytelniania tylko dla aplikacji, znanego również jako uwierzytelnianie nieinterakcyjne. Ten mechanizm umożliwia integrację wdrożenia bezobsługowego z procesami ciągłej integracji i ciągłego dostarczania (CI/CD).

Aby wdrożyć przy użyciu uwierzytelniania delegowanego lub interakcyjnego, zobacz Tworzenie pliku Bicep z zasobami programu Microsoft Graph.

Ważne

Program Microsoft Graph Bicep jest obecnie w wersji zapoznawczej. Zobacz Dodatkowe warunki użytkowania wersji zapoznawczych platformy Microsoft Azure, aby zapoznać się z postanowieniami prawnymi dotyczącymi funkcji platformy Azure, które są w wersji beta lub wersji zapoznawczej albo w inny sposób nie zostały jeszcze wydane jako ogólnie dostępne.

Wymagania wstępne

  • W tym szybkim starcie użyj pliku Bicep utworzonego w Tworzenie pliku Bicep z zasobami programu Microsoft Graph.
  • Jesteś właścicielem subskrypcji platformy Azure.
  • Jesteś administratorem ról uprzywilejowanych, który umożliwia przypisywanie ról aplikacji programu Microsoft Graph do jednostki usługi.

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

Pozostając zalogowanym do interfejsu wiersza polecenia platformy Azure z poprzedniej sesji, utwórz głównego użytkownika usługi, którego użyjesz później do wdrożenia pliku Bicep.

W tym przewodniku szybkiego startu główna jednostka usługi jest tworzona przy użyciu hasła aplikacji, nazywanego również tajnym klienta. Ponadto przypisz podmiotowi usługi rolę Współautora tożsamości zarządzanej, w zakresie grupy zasobów.

Uwaga

Ten Szybki start używa hasła aplikacji dla uproszczenia i do celów testowych. Nie należy używać 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}"

Konsola wyjściowa:

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

Wynik zawiera klucz password. Upewnij się, że skopiujesz tę wartość — nie można jej pobrać.

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

Użyj programu Microsoft Graph PowerShell , aby przyznać uprawnienie Group.ReadWrite.All tylko do jednostki usługi. Rola Administrator ról uprzywilejowanych umożliwia przyznanie sobie uprawnień AppRoleAssignment.ReadWrite.All i Application.Read.All w celu wykonania tej operacji.

Uwaga

Aplikacje, którym przyznano uprawnienie AppRoleAssignment.ReadWrite.All , powinny być dostępne tylko dla odpowiednich użytkowników. Aby uzyskać więcej informacji, zobacz 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" 

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

Zaloguj się za pomocą wcześniej utworzonego konta usługi.

# 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

Ważne

Jeśli chcesz uniknąć wyświetlania hasła w konsoli i używasz az login interaktywnie, użyj polecenia read -s w bash.

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

Wdróż plik Bicep

Teraz wdróż plik Bicep w obrębie zakresu grupy zasobów.

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

Uwaga

Ze względu na opóźnienia replikacji dodanie tożsamości usługi zarządzanej (MSI) jako właściciela grupy Firmy Microsoft Entra może spowodować niepowodzenie wdrożenia. Zaczekaj trochę, a następnie ponownie wdróż ten sam plik Bicep.

Czyszczenie zasobów

Gdy zasoby platformy Azure nie są już potrzebne, użyj interfejsu wiersza polecenia platformy Azure lub modułu Azure PowerShell, aby usunąć utworzoną grupę zasobów.

Uwaga

Grupy zasobów są koncepcją platformy Azure i nie mają wpływu na zasoby programu Microsoft Graph. Zasoby programu Microsoft Graph należy wyczyścić przy użyciu dodatkowego żądania do programu Microsoft Graph. W tym celu możesz użyć interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell, interfejsu wiersza polecenia programu Microsoft Graph lub 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