Skapa ett huvudnamn för Azure-tjänsten 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
ellerRole 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.
Använd Bash-miljön i Azure Cloud Shell. Mer information finns i Snabbstart för Bash i Azure Cloud Shell.
Om du föredrar att köra CLI-referenskommandon lokalt installerar du Azure CLI. Om du kör i Windows eller macOS kan du köra Azure CLI i en Docker-container. Mer information finns i Så här kör du Azure CLI i en Docker-container.
Om du använder en lokal installation loggar du in på Azure CLI med hjälp av kommandot az login. Slutför autentiseringsprocessen genom att följa stegen som visas i terminalen. Andra inloggningsalternativ finns i Logga in med Azure CLI.
När du uppmanas att installera Azure CLI-tillägget vid första användningen. Mer information om tillägg finns i Använda tillägg med Azure CLI.
Kör az version om du vill hitta versionen och de beroende bibliotek som är installerade. Om du vill uppgradera till den senaste versionen kör du az upgrade.
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:
- Registrera ditt systemtilldelade lösenord eftersom du inte kan hämta det igen. Om du förlorar lösenordet återställer du det med az ad sp-återställning av autentiseringsuppgifter enligt beskrivningen i Återställ autentiseringsuppgifter för tjänstens huvudnamn.
- Ange rolltilldelningen för det nya tjänstens huvudnamn med hjälp av az role assignment create enligt beskrivningen i Hantera roller för tjänstens huvudnamn.
Kommentar
Om ditt konto inte har behörighet att skapa ett huvudnamn az ad sp create-for-rbac
för tjänsten returnerar ett felmeddelande som innehåller "Otillräckliga behörigheter för att slutföra åtgärden". Kontakta microsoft Entra-administratören för att skapa ett huvudnamn för tjänsten.
I en Microsoft Entra-ID-katalog där användarinställningen Användare kan registrera program har angetts till Nej, måste du vara medlem i någon av följande inbyggda Microsoft Entra-ID-roller (som har åtgärden: microsoft.directory/applications/createAsOwner
eller microsoft.directory/applications/create
):
- Programutvecklare
- Programadministratör
- Molnprogramadministratör
- Global administratör för
- Hybrididentitetsadministratör
Mer information om användarinställningar i Microsoft Entra-ID finns i Begränsa vem som kan skapa program.
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:
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.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.Omfattning Exempel Prenumeration /subscriptions/mySubscriptionID
Resursgrupp /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName
Virtuell maskin /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.
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.