Logga in på Azure PowerShell med tjänstens huvudnamn

Ett huvudnamn för tjänsten i Azure är ett icke-inaktivt konto som tillhandahåller en identitet som används av program, tjänster och automatiseringsverktyg för att få åtkomst till specifika Azure-resurser. Att autentisera med tjänstens huvudnamn är det bästa sättet att skriva säkra skript eftersom de fungerar som en säkerhetsidentitet med tilldelade behörigheter som styr vilka åtgärder som kan utföras och vilka resurser som kan nås. Tjänstens huvudnamn hjälper till att på ett säkert sätt automatisera hanteringsuppgifter utan att använda personliga användarkonton, vilket underlättar säkrare och hanterbar åtkomst till Azure-resurser. Precis som andra användarkonton hanterar du deras behörigheter med Microsoft Entra. Genom att endast bevilja de behörigheter som krävs för tjänstens huvudnamn skyddas dina automatiseringsskript.

Förutsättningar

Logga in med tjänstens huvudnamn

Om du vill logga in med ett huvudnamn för tjänsten använder du parametern ServicePrincipal för cmdleten Connect-AzAccount . Du behöver också följande information för tjänstens huvudnamn:

  • AppId
  • Inloggningsuppgifter eller åtkomst till certifikatet som används för att skapa tjänstens huvudnamn
  • Klientorganisations-ID

Hur du loggar in med ett huvudnamn för tjänsten beror på om det har konfigurerats för lösenordsbaserad eller certifikatbaserad autentisering.

Lösenordsbaserad autentisering

Skapa ett huvudnamn för tjänsten som ska användas med exemplen i det här avsnittet. Läs mer om att skapa tjänsthuvudnamn i Skapa tjänstens huvudnamn för Azure med Azure PowerShell.

$sp = New-AzADServicePrincipal -DisplayName ServicePrincipalName

Varning

Den angivna hemligheten AzureRmContext.json för tjänstens huvudnamn lagras i filen i din användarprofil ($env:USERPROFILE\.Azure). Se till att den här katalogen har rätt skydd.

Använd cmdleten Get-Credential för att hämta autentiseringsuppgifterna för tjänstens huvudnamn som ett objekt. Den här cmdleten frågar efter ett användarnamn och lösenord. Använd tjänsthuvudnamnets AppId som användarnamn och konvertera secret till oformaterad text för lösenordet.

# Retrieve the plain text password for use with Get-Credential in the next command.
$sp.PasswordCredentials.SecretText

$pscredential = Get-Credential -UserName $sp.AppId
Connect-AzAccount -ServicePrincipal -Credential $pscredential -Tenant $tenantId

I automationsscenarier måste du skapa autentiseringsuppgifter från ett tjänsthuvudnamns AppId och SecretText:

$SecureStringPwd = $sp.PasswordCredentials.SecretText | ConvertTo-SecureString -AsPlainText -Force
$pscredential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $sp.AppId, $SecureStringPwd
Connect-AzAccount -ServicePrincipal -Credential $pscredential -Tenant $tenantId

Använd lämpliga metoder för lösenordslagring när du automatiserar anslutningar för tjänstens huvudnamn.

Certifikatbaserad autentisering

Information om hur du skapar ett huvudnamn för tjänsten för Azure PowerShell finns i Skapa ett huvudnamn för Azure-tjänsten med Azure PowerShell.

Certifikatbaserad autentisering kräver att Azure PowerShell hämtar information från ett lokalt certifikatarkiv baserat på ett tumavtryck för certifikatet.

Connect-AzAccount -ApplicationId $appId -Tenant $tenantId -CertificateThumbprint <thumbprint>

När du använder tjänstens huvudnamn i stället för ett registrerat program anger du parametern ServicePrincipal och anger tjänstens huvudnamns AppId som värde för parametern ApplicationId .

Connect-AzAccount -ServicePrincipal -ApplicationId $servicePrincipalId -Tenant $tenantId -CertificateThumbprint <thumbprint>

I Windows PowerShell 5.1 kan certifikatarkivet hanteras och inspekteras med PKI-modulen . För PowerShell 7.x och senare är processen annorlunda. Följande skript visar hur du importerar ett befintligt certifikat till certifikatarkivet som är tillgängligt för PowerShell.

Importera ett certifikat i Windows PowerShell 5.1

# Import a PFX
$credentials = Get-Credential -Message 'Provide PFX private key password'
Import-PfxCertificate -FilePath <path to certificate> -Password $credentials.Password -CertStoreLocation cert:\CurrentUser\My

Importera ett certifikat i PowerShell 7.x och senare

# Import a PFX
$storeName = [System.Security.Cryptography.X509Certificates.StoreName]::My
$storeLocation = [System.Security.Cryptography.X509Certificates.StoreLocation]::CurrentUser
$store = [System.Security.Cryptography.X509Certificates.X509Store]::new($storeName, $storeLocation)
$certPath = <path to certificate>
$credentials = Get-Credential -Message "Provide PFX private key password"
$flag = [System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::Exportable
$certificate = [System.Security.Cryptography.X509Certificates.X509Certificate2]::new($certPath, $credentials.Password, $flag)
$store.Open([System.Security.Cryptography.X509Certificates.OpenFlags]::ReadWrite)
$store.Add($Certificate)
$store.Close()

Logga in med en hanterad identitet

Hanterade identiteter är en särskild typ av tjänsthuvudnamn som tillhandahåller Azure-tjänster med en automatiskt hanterad identitet. Att använda den här typen av identitet kräver inte lagring av autentiseringsuppgifter i konfiguration eller kod för att autentisera till någon Azure-tjänst som stöder hanterade identiteter.

Det finns två typer av hanterade identiteter:

  • Systemtilldelad hanterad identitet
  • Användartilldelad hanterad identitet

Hanterade identiteter är ett säkert sätt att kommunicera med andra Azure-tjänster utan att utvecklare behöver hantera autentiseringsuppgifter. De hjälper också till att minska risken för läckage av autentiseringsuppgifter.

Så här fungerar hanterade identiteter i verkliga scenarier:

  • Azure hanterar automatiskt skapandet och borttagningen av de autentiseringsuppgifter som används av den hanterade identiteten.
  • En Azure-tjänst som är aktiverad med en hanterad identitet kan komma åt andra tjänster på ett säkert sätt, till exempel Azure Key Vault, Azure SQL Database, Azure Blob Storage osv. med hjälp av Microsoft Entra-token.
  • Den här identiteten hanteras direkt i Azure utan ytterligare etablering.

Hanterade identiteter förenklar säkerhetsmodellen genom att undvika behovet av att lagra och hantera autentiseringsuppgifter, och de spelar en avgörande roll i säkra molnåtgärder genom att minska risken för hantering av hemligheter.

Systemtilldelad hanterad identitet

Azure skapar automatiskt en systemtilldelad hanterad identitet för en Azure-tjänstinstans (till exempel en virtuell Azure-dator, App Service eller Azure Functions). När tjänstinstansen tas bort rensar Azure automatiskt autentiseringsuppgifterna och identiteten som är associerad med tjänsten.

Följande exempel ansluter med hjälp av en systemtilldelad hanterad identitet i värdmiljön. Om den körs på en virtuell dator med en tilldelad hanterad identitet kan koden logga in med den tilldelade identiteten.

 Connect-AzAccount -Identity

Användartilldelad hanterad identitet

En användartilldelad hanterad identitet är en identitet som du skapar och hanterar i Microsoft Entra. Den kan tilldelas till en eller flera Azure-tjänstinstanser. Livscykeln för en användartilldelad hanterad identitet hanteras separat från de tjänstinstanser som den har tilldelats.

När du använder en användartilldelad hanterad identitet måste du ange parametern AccountId och identitetsparametern enligt följande exempel.

 Connect-AzAccount -Identity -AccountId <user-assigned-identity-clientId-or-resourceId>

Följande kommandon ansluter med den hanterade identiteten myUserAssignedIdentity. Den lägger till den användartilldelade identiteten till den virtuella datorn och ansluter sedan med hjälp av ClientId för den användartilldelade identiteten.

$identity = Get-AzUserAssignedIdentity -ResourceGroupName myResourceGroup -Name myUserAssignedIdentity
Get-AzVM -ResourceGroupName contoso -Name testvm | Update-AzVM -IdentityType UserAssigned -IdentityId $identity.Id
Connect-AzAccount -Identity -AccountId $identity.ClientId # Run on the virtual machine
Account                              SubscriptionName TenantId                             Environment
-------                              ---------------- --------                             -----------
00000000-0000-0000-0000-000000000000 My Subscription  00000000-0000-0000-0000-000000000000 AzureCloud

Mer information finns i Konfigurera hanterade identiteter för Azure-resurser på en virtuell Azure-dator.

Se även