Quickstart: Een Bicep-bestand implementeren als een service-principal
In deze quickstart implementeert u een Bicep-bestand dat Microsoft Graph-resources bevat met behulp van alleen-app-verificatie, ook wel niet-interactieve verificatie genoemd. U kunt dit mechanisme gebruiken voor zero-touch-implementatieintegratie in CI/CD-pijplijnen (continue integratie en continue levering).
Zie Een Bicep-bestand maken met Microsoft Graph-resources als u wilt implementeren met behulp van gedelegeerde of interactieve verificatie.
Belangrijk
Microsoft Graph Bicep is momenteel in PREVIEW. Raadpleeg de Aanvullende voorwaarden voor Microsoft Azure-previews voor juridische voorwaarden die van toepassing zijn op Azure-functies die in bèta of preview zijn of die anders nog niet algemeen beschikbaar zijn.
Vereisten
- Gebruik voor deze quickstart het Bicep-bestand dat is gemaakt in Een Bicep-bestand maken met Microsoft Graph-resources.
- U bent eigenaar van een Azure-abonnement.
- U bent een beheerder van bevoorrechte rollen, waarmee u Microsoft Graph-app-rollen kunt toewijzen aan een service-principal.
Een service-principal maken en een Azure-rol toewijzen
Terwijl u nog steeds bent aangemeld bij Azure CLI uit de vorige sessie, maakt u de service-principal die u later gebruikt om het Bicep-bestand te implementeren.
In deze quickstart wordt de service-principal gemaakt met een toepassingswachtwoord, ook wel een clientgeheim genoemd. Wijs ook de service-principal de rol Inzender voor beheerde identiteit toe, die is gericht op een resourcegroep:
Let op
In deze quickstart wordt alleen een toepassingswachtwoord gebruikt voor eenvoud en testdoeleinden. Niet gebruiken in productieomgevingen.
# 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}"
Uitvoerconsole:
{
"appId": "myServicePrincipalId",
"displayName": "myServicePrincipalName",
"password": "myServicePrincipalPassword",
"tenant": "myOrganizationTenantId"
}
De uitvoer bevat de password
sleutel. Zorg ervoor dat u deze waarde kopieert. Deze kan niet worden opgehaald.
Microsoft Graph-machtigingen toewijzen aan de service-principal
Gebruik Microsoft Graph PowerShell om de machtiging Group.ReadWrite.All application-only te verlenen aan de service-principal. Met de rol Beheerder van bevoorrechte rol kunt u uzelf de machtigingen AppRoleAssignment.ReadWrite.All en Application.Read.All verlenen om deze bewerking uit te voeren.
Let op
Apps waaraan de machtiging AppRoleAssignment.ReadWrite.All is verleend, mogen alleen worden geopend door de juiste gebruikers. Zie AppRoleAssignment.ReadWrite.All voor meer informatie.
# 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"
Meld u aan als service-principal om het Bicep-bestand te implementeren
Meld u aan als de service-principal die u eerder hebt gemaakt.
# 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
Belangrijk
Als u wilt voorkomen dat uw wachtwoord op de console wordt weergegeven en interactief wordt gebruikt az login
, gebruikt u de read -s
opdracht in bash
.
read -sp "Azure password: " AZ_PASS && echo && az login --service-principal -u <app-id> -p $AZ_PASS --tenant <tenant>
Het Bicep-bestand implementeren
Implementeer nu het Bicep-bestand met behulp van het bereik van uw resourcegroep.
az deployment group create --resource-group exampleRG --template-file main.bicep
Notitie
Vanwege replicatievertragingen kan het toevoegen van de managed service identity (MSI) als eigenaar van de Microsoft Entra-groep ertoe leiden dat de implementatie mislukt. Wacht even en implementeer vervolgens hetzelfde Bicep-bestand opnieuw.
Resources opschonen
Wanneer de Azure-resources niet meer nodig zijn, gebruikt u de Azure CLI- of Azure PowerShell-module om de resourcegroep te verwijderen die u hebt gemaakt.
Notitie
Resourcegroepen zijn een Azure-concept en hebben geen invloed op Microsoft Graph-resources. Microsoft Graph-resources moeten worden opgeschoond met een extra aanvraag voor Microsoft Graph. Hiervoor kunt u Azure CLI of Azure PowerShell, Microsoft Graph CLI of Microsoft Graph PowerShell gebruiken.
In de volgende voorbeelden ziet u opdrachten voor het verwijderen van de Azure-resource en vervolgens de Microsoft Graph-resources met behulp van Azure CLI en 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