Skapa ett huvudnamn och en nyckel för tjänsten
Nu när du förstår begreppet tjänstens huvudnamn kanske du undrar hur det bevisar dess identitet för Microsoft Entra-ID. I den här lektionen får du lära dig mer om autentiseringsprocessen och autentiseringsuppgifterna för tjänstens huvudnamn. Du får också lära dig hur du skapar ett huvudnamn för tjänsten och ger den en nyckel.
Förstå hur tjänstens huvudnamn autentiseras
När ett huvudnamn för tjänsten behöver kommunicera med Azure loggar det in på Microsoft Entra-ID. När Microsoft Entra-ID verifierar tjänstens huvudnamns identitet utfärdar det en token som klientprogrammet lagrar och använder när det gör några förfrågningar till Azure.
I stort sett liknar den här processen hur saker fungerar när du loggar in på Azure själv som användare. Men jämfört med användare har tjänstens huvudnamn en något annorlunda typ av autentiseringsuppgifter för att bevisa sin identitet. Tjänstens huvudnamn använder två huvudautentiseringsuppgifter: nycklar och certifikat.
Kommentar
Kom ihåg att hanterade identiteter är särskilda tjänsthuvudnamn som fungerar i Azure. De har en annan typ av autentiseringsprocess som inte kräver att du känner till eller hanterar autentiseringsuppgifter alls.
Nycklar
Nycklar liknar lösenord. Nycklar är dock mycket längre och mer komplexa. I de flesta fall genererar Microsoft Entra-ID själva nycklarna för att säkerställa att:
- Nycklarna är kryptografiskt slumpmässiga. Det vill säga, de är extremt svåra att gissa.
- Människor använder inte svaga lösenord som nycklar av misstag.
Tjänstens huvudnamn har ofta mycket privilegierade behörigheter, så det är viktigt att de är säkra. Vanligtvis behöver du bara hantera nyckeln kort när du först konfigurerar tjänstens huvudnamn och din pipeline. Så nyckeln behöver inte vara minnesvärd eller lätt att skriva.
Ett enda huvudnamn för tjänsten kan ha flera nycklar samtidigt, men användarna kan inte ha flera lösenord. Precis som lösenord har nycklar ett förfallodatum. Du lär dig mer om det snart.
Kommentar
Tänk på nycklar som mycket viktiga lösenord, ungefär som lagringskontonycklar. Du bör behandla dem med samma säkerhets- och vårdnivå.
Certifikat
Certifikat är ett annat sätt att autentisera tjänstens huvudnamn. De är mycket säkra men kan vara svåra att hantera. Vissa organisationer kräver användning av certifikat för vissa typer av tjänsthuvudnamn.
Vi diskuterar inte certifikat i den här modulen. Men om du arbetar med ett huvudnamn för tjänsten som använder certifikatautentisering fungerar det i princip på samma sätt som andra huvudnamn för tjänsten när det gäller att hantera det och ge det behörighet för din pipeline.
Kommentar
Certifikat är ett bra alternativ när du kan använda dem. De är svårare för angripare att stjäla. Det är också svårare att fånga upp och ändra begäranden som använder certifikat. Certifikat kräver dock mer infrastruktur och har en del löpande underhållskostnader.
Arbeta med nycklar för tjänstens huvudnamn
När du skapar ett huvudnamn för tjänsten ber du vanligtvis Azure att skapa en nyckel samtidigt. Azure genererar vanligtvis en slumpmässig nyckel åt dig.
Kommentar
Kommer du ihåg vår tidigare diskussion om hur tjänstens huvudnamn fungerar? Nycklar lagras som en del av programregistreringsobjektet. Om du öppnar Azure-portalen tittar du i Microsoft Entra-konfigurationen och går sedan till programregistreringarna. Du kan också skapa och ta bort nycklar där.
Azure visar nyckeln när du skapar tjänstens huvudnamn. Det här är den enda gången som Azure någonsin kommer att visa dig nyckeln. Efter det kan du inte hämta den längre. Det är viktigt att du kopierar nyckeln på ett säkert sätt så att du kan använda den när du konfigurerar din pipeline. Dela inte nyckeln via e-post eller något annat icke-säkert sätt. Om du förlorar en nyckel måste du ta bort den och skapa en ny.
Hantera tjänstens huvudnamn för Azure Pipelines
När du skapar en nyckel för en pipelines tjänsthuvudnamn är det en bra idé att omedelbart kopiera nyckeln till pipelinens konfiguration. På så sätt undviker du att lagra eller överföra nyckeln i onödan.
Pipelineverktyg innehåller säkra sätt att ange tjänstens huvudnamns program-ID och nyckel. Lagra aldrig autentiseringsuppgifter av något slag i källkontrollen. Använd i stället tjänstanslutningar när du arbetar med Azure Pipelines. I den här modulen diskuterar vi bara hur du skapar ett huvudnamn och en nyckel för tjänsten. Du får lära dig hur du konfigurerar din pipeline med nyckeln i en senare modul.
Dricks
Azure Pipelines kan skapa tjänstens huvudnamn åt dig automatiskt. I den här modulen skapar och hanterar du tjänstens huvudnamn manuellt för att få en bättre förståelse för vad som händer. I andra moduler använder du metoden för automatisk skapande för enkelhetens skull.
Skapa ett huvudnamn och en nyckel för tjänsten
Du kan använda Azure CLI för att skapa och hantera tjänstens huvudnamn.
Kommentar
Att skapa och ändra tjänstens huvudnamn kräver att du har relaterade behörigheter i Microsoft Entra-ID. I vissa organisationer kan du behöva en administratör för att utföra de här stegen åt dig.
Om du vill skapa ett huvudnamn för tjänsten och en nyckel använder du az ad sp create-for-rbac
kommandot . Det här kommandot accepterar flera argument och kan eventuellt tilldela roller till tjänstens huvudnamn. Du får lära dig mer om det här ämnet senare i den här modulen. Här är ett exempel som visar hur du skapar ett huvudnamn för tjänsten utan några Azure-rolltilldelningar:
az ad sp create-for-rbac --name MyPipeline
När du kör det här kommandot returnerar Azure CLI ett JSON-svar med en password
egenskap. Den här egenskapen är tjänstens huvudnamnsnyckel. Du kan inte hämta den här nyckeln igen, så se till att använda den direkt eller spara den någonstans på ett säkert sätt.
Kommentar
Kommandot az ad sp create-for-rbac
skapar en programregistrering i Microsoft Entra-ID, lägger till ett huvudnamn för tjänsten i din Microsoft Entra-klientorganisation och skapar en nyckel för programregistreringen. Ett annat kommando, az ad sp create
, skapar bara tjänstens huvudnamn i klientorganisationen (inte programregistreringen). När du skapar tjänstens huvudnamn för pipelines az ad sp create-for-rbac
är det vanligtvis det bästa kommandot att använda.
Du kan använda Azure PowerShell-cmdletar för att skapa och hantera tjänstens huvudnamn.
Kommentar
Att skapa och ändra tjänstens huvudnamn kräver att du har relaterade behörigheter i Microsoft Entra-ID. I vissa organisationer kan du behöva en administratör för att utföra de här stegen åt dig.
Om du vill skapa ett huvudnamn för tjänsten och en nyckel använder du cmdleten New-AzADServicePrincipal
. Den här cmdleten accepterar flera argument och kan eventuellt tilldela roller till tjänstens huvudnamn. Du får lära dig mer om det här ämnet senare i den här modulen. Här är ett exempel som visar hur du skapar ett huvudnamn för tjänsten utan några Azure-rolltilldelningar:
$servicePrincipal = New-AzADServicePrincipal -DisplayName MyPipeline
När du kör det här kommandot fyller Azure PowerShell i variabeln servicePrincipal
med information om tjänstens huvudnamn, inklusive nyckeln:
$servicePrincipalKey = $servicePrincipal.PasswordCredentials.SecretText
Du kan inte hämta den här nyckeln igen, så se till att använda den omedelbart eller spara den någonstans säkert.
Kommentar
Cmdleten New-AzADServicePrincipal
skapar en programregistrering i Microsoft Entra-ID, lägger till ett huvudnamn för tjänsten i din Microsoft Entra-klientorganisation och skapar en nyckel för programregistreringen.
Identifiera ett huvudnamn för tjänsten
Tjänstens huvudnamn har flera identifierare och namn som du använder för att identifiera och arbeta med dem. De identifierare som du använder mest är:
- Program-ID: Programregistreringen har en unik identifierare, som ofta kallas program-ID eller ibland ett klient-ID. Du använder det vanligtvis som användarnamn när tjänstens huvudnamn loggar in på Azure.
- Objekt-ID: Programregistreringen och tjänstens huvudnamn har egna separata objekt-ID:n, som är unika identifierare som tilldelats av Microsoft Entra-ID. Ibland måste du använda dessa objekt-ID:er när du hanterar ett huvudnamn för tjänsten.
- Visningsnamn: Det här är ett läsbart namn som beskriver tjänstens huvudnamn.
Dricks
Använd ett tydligt, beskrivande visningsnamn för tjänstens huvudnamn. Det är viktigt att hjälpa ditt team att förstå vad tjänstens huvudnamn är till för, så att ingen oavsiktligt tar bort det eller ändrar dess behörigheter.
Varning
Ett visningsnamn är inte unikt. Flera tjänsthuvudnamn kan ha samma visningsnamn. Var försiktig när du beviljar behörigheter till ett huvudnamn för tjänsten genom att använda dess visningsnamn för att identifiera det. Du kan av misstag ge behörighet till fel huvudnamn för tjänsten. Det är en bra idé att använda program-ID:t i stället.
När du skapar ett huvudnamn för tjänsten anger du vanligtvis bara visningsnamnet. Azure tilldelar de andra namnen och identifierarna automatiskt.
Hantera utgångna nycklar
Tjänstens huvudnamn upphör inte att gälla, men deras nycklar gör det. När du skapar en nyckel kan du konfigurera dess förfallotid. Som standard är förfallotiden inställd på ett år. Efter den här förfallotiden fungerar inte längre nyckeln och pipelinen kan inte logga in på Microsoft Entra-ID. Du måste förnya eller rotera nycklar regelbundet.
Varning
Det kan vara frestande att ange långa förfallotider för dina nycklar, men det bör du inte göra. Tjänstens huvudnamn skyddas endast av sina autentiseringsuppgifter. Om en angripare får en huvudnyckel för tjänstens huvudnamn kan de göra en hel del skada. Den bästa metoden för att minimera den period som en attack kan pågå är att regelbundet ändra dina nycklar. Du bör också ta bort och återskapa nycklar om du misstänker att de har läckt ut.
Om du vill återställa en nyckel för ett huvudnamn för tjänsten använder du az ad sp
kommandot med program-ID:t, som i det här exemplet:
az ad sp credential reset --id "b585b740-942d-44e9-9126-f1181c95d497"
Du kan också ta bort och återskapa tjänstens huvudnamnsnyckel i två separata steg med hjälp az ad sp credential delete
av kommandona och sedan az ad sp credential reset --append
.
Om du vill återställa en nyckel för ett huvudnamn för tjänsten använder du först cmdleten Remove-AzADServicePrincipalCredential
för att ta bort den befintliga autentiseringsuppgiften. Använd sedan cmdleten New-AzADServicePrincipalCredential
för att lägga till en ny autentiseringsuppgift. Dessa cmdletar använder båda tjänstens huvudnamns objekt-ID för att identifiera det. Innan du använder cmdletarna måste du hämta det här ID:t från program-ID:t:
$applicationId = APPLICATION_ID
$servicePrincipalObjectId = (Get-AzADServicePrincipal -ApplicationId $applicationId).Id
Remove-AzADServicePrincipalCredential -ObjectId $servicePrincipalObjectId
$newCredential = New-AzADServicePrincipalCredential -ObjectId $servicePrincipalObjectId
$newKey = $newCredential.SecretText
Dricks
Ett enda huvudnamn för tjänsten kan ha flera nycklar. Du kan uppdatera programmet på ett säkert sätt för att använda en ny nyckel medan den gamla nyckeln fortfarande är giltig och sedan ta bort den gamla nyckeln när den inte längre används. Den här tekniken undviker stilleståndstid från nyckelns förfallotid.
Hantera livscykeln för tjänstens huvudnamn
Det är viktigt att tänka på hela livscykeln för varje huvudnamn för tjänsten som du skapar. Vad händer om pipelinen tas bort eller inte längre används när du skapar ett huvudnamn för en pipeline?
Tjänstens huvudnamn tas inte bort automatiskt, så du måste granska och ta bort gamla tjänsthuvudnamn. Det är viktigt att ta bort gamla tjänsthuvudnamn av samma anledning som du tar bort gamla användarkonton: angripare kan få åtkomst till sina nycklar. Det är bäst att inte ha autentiseringsuppgifter som inte används aktivt.
Det är en bra idé att dokumentera tjänstens huvudnamn på en plats som du och ditt team enkelt kan komma åt. Du bör inkludera följande information för varje huvudnamn för tjänsten:
- Viktig identifieringsinformation, inklusive dess namn och program-ID.
- Syftet med tjänstens huvudnamn.
- Vem skapat den, vem som ansvarar för att hantera den och dess nycklar, och vem som kan ha svar om det finns ett problem.
- De behörigheter som den behöver och en tydlig motivering till varför den behöver dem.
- Vad dess förväntade livslängd är.
Du bör regelbundet granska tjänstens huvudnamn för att säkerställa att de fortfarande används och att de behörigheter som de har tilldelats fortfarande är korrekta.