Snabbstart: Distribuera en Bicep-fil som tjänstens huvudnamn
I den här snabbstarten distribuerar du en Bicep-fil som innehåller Microsoft Graph-resurser med endast appautentisering, även kallat icke-interaktiv autentisering. Du kan använda den här mekanismen för zero-touch-distributionsintegrering i CI/CD-pipelines (kontinuerlig integrering och kontinuerlig leverans).
Information om hur du distribuerar med delegerad eller interaktiv autentisering finns i Skapa en Bicep-fil med Microsoft Graph-resurser.
Viktigt!
Microsoft Graph Bicep är för närvarande i förhandsversion. Juridiska villkor för Azure-funktioner i betaversion, förhandsversion eller som av någon annan anledning inte har gjorts allmänt tillgängliga ännu finns i kompletterande användningsvillkor för Microsoft Azure-förhandsversioner.
Förutsättningar
- I den här snabbstarten använder du Bicep-filen som skapades i Skapa en Bicep-fil med Microsoft Graph-resurser.
- Du äger en Azure-prenumeration.
- Du är en privilegierad rolladministratör som gör att du kan tilldela Microsoft Graph-approller till ett huvudnamn för tjänsten.
Skapa ett huvudnamn för tjänsten och tilldela en Azure-roll
När du fortfarande är inloggad på Azure CLI från föregående session skapar du tjänstens huvudnamn som du använder senare för att distribuera Bicep-filen.
I den här snabbstarten skapas tjänstens huvudnamn med ett programlösenord, även kallat en klienthemlighet. Tilldela även tjänstens huvudnamn rollen Hanterad identitetsdeltagare, som är begränsad till en resursgrupp:
Varning
Den här snabbstarten använder ett programlösenord endast i enkelhets- och testsyfte. Använd inte i produktionsmiljöer.
# 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}"
Utdatakonsol:
{
"appId": "myServicePrincipalId",
"displayName": "myServicePrincipalName",
"password": "myServicePrincipalPassword",
"tenant": "myOrganizationTenantId"
}
Utdata innehåller password
nyckeln. Se till att du kopierar det här värdet – det kan inte hämtas.
Tilldela Microsoft Graph-behörigheter till tjänstens huvudnamn
Använd Microsoft Graph PowerShell för att ge behörigheten Group.ReadWrite.All endast för program till tjänstens huvudnamn. Med rollen Privilegierad rolladministratör kan du ge dig själv behörigheten AppRoleAssignment.ReadWrite.All och Application.Read.All för att utföra den här åtgärden.
Varning
Appar som har beviljats behörigheten AppRoleAssignment.ReadWrite.All ska endast nås av lämpliga användare. Mer information finns i 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"
Logga in som tjänstens huvudnamn för att distribuera Bicep-filen
Logga in som tjänstens huvudnamn som skapades tidigare.
# 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
Viktigt!
Om du vill undvika att visa lösenordet i konsolen och använder az login
interaktivt använder du read -s
kommandot i bash
.
read -sp "Azure password: " AZ_PASS && echo && az login --service-principal -u <app-id> -p $AZ_PASS --tenant <tenant>
Distribuera Bicep-filen
Distribuera nu Bicep-filen med resursgruppens omfång.
az deployment group create --resource-group exampleRG --template-file main.bicep
Kommentar
På grund av replikeringsfördröjningar kan det leda till att distributionen misslyckas genom att lägga till den hanterade tjänstidentiteten (MSI) som ägare av Microsoft Entra-gruppen. Vänta lite och distribuera sedan samma Bicep-fil igen.
Rensa resurser
När Azure-resurserna inte längre behövs använder du Azure CLI- eller Azure PowerShell-modulen för att ta bort den resursgrupp som du skapade.
Kommentar
Resursgrupper är ett Azure-koncept och påverkar inte Microsoft Graph-resurser. Microsoft Graph-resurser måste rensas med en ytterligare begäran till Microsoft Graph. För detta kan du använda Azure CLI eller Azure PowerShell, Microsoft Graph CLI eller Microsoft Graph PowerShell.
I följande exempel visas kommandon för att ta bort Azure-resursen först och sedan Microsoft Graph-resurserna med hjälp av Azure CLI och 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