Een Azure-service-principal maken met de Azure CLI

Geautomatiseerde hulpprogramma's die gebruikmaken van Azure-services moeten altijd beperkte machtigingen hebben om ervoor te zorgen dat Azure-resources veilig zijn. Daarom biedt Azure service-principals in plaats van toepassingen aan te melden als een volledig bevoegde gebruiker. Een Azure-service-principal is een identiteit die is gemaakt voor gebruik met toepassingen, gehoste services en geautomatiseerde hulpprogramma's. Deze identiteit wordt gebruikt voor toegang tot resources.

In deze zelfstudie leert u het volgende:

  • Een service-principal maken
  • Aanmelden met een service-principal en wachtwoord
  • Aanmelden met een service-principal en certificaat
  • Service-principalrollen beheren
  • Een Azure-resource maken met behulp van een service-principal
  • Referenties voor service-principal opnieuw instellen

Vereisten

Een service-principal maken

Gebruik de naslagopdracht az ad sp create-for-rbac Azure CLI om een service-principal te maken. In dit voorbeeld wordt geen parameter opgegeven --name , dus er wordt automatisch een naam met een tijdstempel gemaakt.

az ad sp create-for-rbac

Uitvoerconsole:

{
  "appId": "myAppId",
  "displayName": "myServicePrincipalName",
  "password": "myServicePrincipalPassword",
  "tenant": "myTentantId"
}

Als u niet aan resourcenaamconventies houdt en later een rol en bereik voor uw nieuwe service-principal wilt maken, is de az ad sp create-for-rbac opdracht zonder parameters een acceptabele oplossing. Zonder een rol en bereik heeft de nieuwe service-principal echter geen toegang tot resources. Het bestaat gewoon.

Wanneer u een service-principal zonder parameters maakt, voert u ook de volgende stappen uit:

Een service-principal maken met rol en bereik

Wijs altijd een specifieke --role service-principal toe wanneer --scopes u een service-principal maakt. Volg deze stappen:

  1. Bepaal de juiste rol.

    Gebruik bij het bepalen van de rol altijd het principe van minimale bevoegdheden. Geef uw service-principal contributor bijvoorbeeld geen machtigingen voor een abonnement als de service-principal alleen toegang nodig heeft tot Azure Storage binnen een resourcegroep. Overweeg een specialiseerde rol, zoals inzender voor opslagblobgegevens. Zie ingebouwde Azure-rollen voor een volledige lijst met beschikbare rollen in Azure RBAC.

  2. Haal een waarde op voor de bereikparameter.

    Zoek en kopieer de resource-id van de Azure-resource die de nieuwe service-principal nodig heeft voor toegang. Deze informatie vindt u meestal op de pagina Eigenschappen of Eindpunten van de Azure-portal van elke resource. Hier volgen veelvoorkomende --scopes voorbeelden, maar vertrouw op uw resource-id voor een werkelijke indeling en waarde.

    Bereik voorbeeld
    Abonnement /subscriptions/mySubscriptionID
    Resourcegroep /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName
    Virtuele machine /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName/providers/Microsoft.Compute/virtualMachines/myVMname
    Opslagaccountbestandsservice /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName/providers/Microsoft.Storage/storageAccounts/myStorageAccountName/fileServices/default
    Data factory /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName/providers/Microsoft.DataFactory/factories/myDataFactoryName

    Zie Inzicht in het bereik voor Azure RBAC voor meer bereikvoorbeelden.

  3. Maak de service-principal.

    In dit voorbeeld wordt een nieuwe service-principal met de naam myServicePrincipalName1 gemaakt met lezermachtigingen voor alle resources in resourcegroep RG1.

    # Bash script
    az ad sp create-for-rbac --name myServicePrincipalName1 \
                             --role reader \
                             --scopes /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG1
    

    De --scopes parameter accepteert een door spaties gescheiden lijst met bereiken. In dit voorbeeld wordt een nieuwe service-principal met de naam myServicePrincipalName2 gemaakt met lezermachtigingen voor alle resources in resourcegroep myRG1. Deze service-principal krijgt ook leesmachtigingen voor myVM die zich in myRG2 bevindt.

    # Bash script
    az ad sp create-for-rbac --name myServicePrincipalName2 \
                             --role reader \
                             --scopes /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG1 /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG2/providers/Microsoft.Compute/virtualMachines/myVM
    

Als u besluit dat u te weinig of te veel machtigingen hebt verleend voor uw nieuwe service-principal, wijzigt u de machtigingen door de rollen van de service-principal te beheren.

Een service-principal maken met behulp van variabelen

U kunt ook een service-principal maken met behulp van variabelen:

# Bash script
let "randomIdentifier=$RANDOM*$RANDOM"
servicePrincipalName="msdocs-sp-$randomIdentifier"
roleName="azureRoleName"
subscriptionID=$(az account show --query id --output tsv)
# Verify the ID of the active subscription
echo "Using subscription ID $subscriptionID"
resourceGroup="myResourceGroupName"

echo "Creating SP for RBAC with name $servicePrincipalName, with role $roleName and in scopes /subscriptions/$subscriptionID/resourceGroups/$resourceGroup"
az ad sp create-for-rbac --name $servicePrincipalName \
                         --role $roleName \
                         --scopes /subscriptions/$subscriptionID/resourceGroups/$resourceGroup

Gebruik az ad sp list voor een volledige lijst met eigenschappen van de service-principal en zie Een bestaande service-principal ophalen.

Waarschuwing

Wanneer u een Azure-service-principal maakt met behulp van de az ad sp create-for-rbac opdracht, bevat de uitvoer referenties die u moet beveiligen. Zorg ervoor dat u deze referenties niet in uw code opneemt of incheckt bij uw broncodebeheer. Als alternatief kunt u overwegen beheerde identiteiten te gebruiken, indien beschikbaar om te voorkomen dat u referenties hoeft te gebruiken.

Volgende stappen 

Nu u hebt geleerd hoe u een Azure-service-principal maakt, gaat u verder met de volgende stap om te leren hoe u service-principals gebruikt met verificatie op basis van wachtwoorden.