Skapa Azure-tjänstens huvudnamn med Azure CLI

Automatiserade verktyg som använder Azure-tjänster bör alltid ha begränsade behörigheter för att säkerställa att Azure-resurser är säkra. I stället för att låta program logga in som en fullständigt privilegierad användare erbjuder Azure därför tjänstens huvudnamn. Ett Huvudnamn för Azure-tjänsten är en identitet som skapats för användning med program, värdbaserade tjänster och automatiserade verktyg. Den här identiteten används för att komma åt resurser.

I den här självstudien lär du dig att:

  • Skapa ett huvudnamn för tjänsten
  • Logga in med tjänstens huvudnamn och lösenord
  • Logga in med tjänstens huvudnamn och certifikat
  • Hantera roller för tjänstens huvudnamn
  • Skapa en Azure-resurs med hjälp av tjänstens huvudnamn
  • Återställa autentiseringsuppgifter för tjänstens huvudnamn

Förutsättningar

  • I en prenumeration måste du ha User Access Administrator eller Role Based Access Control Administrator behörigheter, eller högre, för att skapa ett huvudnamn för tjänsten. En lista över roller som är tillgängliga för rollbaserad åtkomstkontroll i Azure (Azure RBAC) finns i Inbyggda Roller i Azure.

Skapa ett huvudnamn för tjänsten

Använd azure CLI-referenskommandot az ad sp create-for-rbac för att skapa ett huvudnamn för tjänsten. Det här exemplet anger --name ingen parameter, så ett namn som innehåller en tidsstämpel skapas automatiskt.

az ad sp create-for-rbac

Utdatakonsol:

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

Om du inte följer namngivningskonventionerna för resurser och planerar att skapa en roll och omfång för det nya tjänstens az ad sp create-for-rbac huvudnamn senare är kommandot utan parametrar en acceptabel lösning. Men utan roll och omfång har det nya tjänstens huvudnamn inte åtkomst till resurser. Den finns bara.

När du skapar ett huvudnamn för tjänsten utan parametrar utför du även följande steg:

Skapa ett huvudnamn för tjänsten med roll och omfång

Vi rekommenderar att du alltid tilldelar en specifik --role och --scopes när du skapar ett huvudnamn för tjänsten. Följ de här stegen:

  1. Fastställ rätt roll.

    När du bestämmer rollen ska du alltid använda principen om minsta behörighet. Ge till exempel inte tjänstens huvudnamn contributor behörighet till en prenumeration om tjänstens huvudnamn bara behöver komma åt Azure Storage i en resursgrupp. Överväg en specialiserad roll som lagringsblobdatadeltagare. En fullständig lista över tillgängliga roller i Azure RBAC finns i Inbyggda Azure-roller.

  2. Hämta ett värde för parametern scopes.

    Hitta och kopiera resurs-ID: t för Den Azure-resurs som det nya tjänstens huvudnamn behöver åtkomst till. Den här informationen finns vanligtvis på sidan Egenskaper eller slutpunkter i Azure-portalen för varje resurs. Här är vanliga --scopes exempel, men förlitar du dig på ditt resurs-ID för ett faktiskt format och värde.

    Omfång Exempel
    Prenumeration /subscriptions/mySubscriptionID
    Resursgrupp /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName
    Virtuell dator /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName/providers/Microsoft.Compute/virtualMachines/myVMname
    Filtjänst för lagringskonto /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName/providers/Microsoft.Storage/storageAccounts/myStorageAccountName/fileServices/default
    Data Factory /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName/providers/Microsoft.DataFactory/factories/myDataFactoryName

    Fler omfångsexempel finns i Förstå omfång för Azure RBAC.

  3. Skapa tjänstens huvudnamn.

    I det här exemplet skapas ett nytt tjänsthuvudnamn med namnet myServicePrincipalName1 med läsbehörighet till alla resurser i resursgruppen RG1.

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

    Parametern --scopes accepterar en utrymmesavgränsad lista med omfång. I det här exemplet skapas ett nytt huvudnamn för tjänsten myServicePrincipalName2 med läsbehörighet till alla resurser i resursgruppen myRG1. Tjänstens huvudnamn ges också läsbehörighet till myVM som finns i myRG2.

    # 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
    

Om du bestämmer dig för att du har beviljat för få eller för många behörigheter till det nya tjänstens huvudnamn ändrar du behörigheterna genom att hantera tjänstens huvudnamnsroller.

Skapa ett huvudnamn för tjänsten med hjälp av variabler

Du kan också skapa ett huvudnamn för tjänsten med hjälp av variabler:

# 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

En fullständig lista över egenskaper för tjänstens huvudnamn finns i az ad sp list ( Hämta ett befintligt huvudnamn för tjänsten).

Varning

När du skapar ett Huvudnamn för az ad sp create-for-rbac Azure-tjänsten med kommandot innehåller utdata autentiseringsuppgifter som du måste skydda. Se till att du inte inkluderar dessa autentiseringsuppgifter i din kod eller kontrollera autentiseringsuppgifterna i källkontrollen. Alternativt bör du överväga att använda hanterade identiteter om det är tillgängligt för att undvika behovet av att använda autentiseringsuppgifter.

Nästa steg

Nu när du har lärt dig hur du skapar ett Huvudnamn för Azure-tjänsten går du vidare till nästa steg för att lära dig hur du använder tjänstens huvudnamn med lösenordsbaserad autentisering.