Delen via


Een Azure-service-principal maken met 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 aan zodat toepassingen niet hoeven 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 handleiding leer je hoe je:

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

Vereiste voorwaarden

Een service-principal maken

Gebruik de Azure CLI-referentieopdracht az ad sp create-for-rbac om een service principal aan 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:

Opmerking

Als uw account niet gemachtigd is om een service-principal te maken, retourneert az ad sp create-for-rbac een foutbericht met de melding "Onvoldoende bevoegdheden om de bewerking te voltooien". Neem contact op met uw Microsoft Entra-beheerder om een service-principal te maken.

In een Microsoft Entra ID-directory waarin gebruikersinstelling Gebruikers kunnen toepassingen registreren is ingesteld op Nee, moet u lid zijn van een van de volgende ingebouwde rollen van Microsoft Entra ID (die de actie hebben: microsoft.directory/applications/createAsOwner of microsoft.directory/applications/create):

Zie Beperken wie toepassingen kan maken voor meer informatie over gebruikersinstellingen in Microsoft Entra ID.

Een service-principal maken met rol en bereik

Wijs als beste praktijk altijd een specifieke --role en --scopes toe wanneer 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.

    Omvang Voorbeeld
    Abonnement /subscriptions/mySubscriptionID
    Bronnengroep /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName
    Virtuele machine /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName/providers/Microsoft.Compute/virtualMachines/myVMname
    Bestandsservice voor opslagaccounts /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName/providers/Microsoft.Storage/storageAccounts/myStorageAccountName/fileServices/default
    Gegevensfabriek /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 scopes. 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 inloggegevens niet in uw code opneemt of incheckt in uw versiebeheersysteem. 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.