Logga in med Azure PowerShell

Azure PowerShell flera autentiseringsmetoder. Det enklaste sättet att komma igång är med Azure Cloud Shell,som loggar in dig automatiskt. Med en lokal installation kan du logga in interaktivt via webbläsaren. När du skriver skript för automation är det rekommenderade sättet att använda ett tjänsthuvudnamn med nödvändiga behörigheter. När du begränsar inloggningsbehörigheter så mycket som möjligt för ditt användningsfall kan du skydda dina Azure-resurser.

Först när du är inloggad på den första prenumerationen returnerar Azure om du har tillgång till fler än en prenumeration. Kommandon körs mot den här prenumerationen som standard. Om du vill ändra din aktiva prenumeration för en session använder du cmdleten Set-AzContext. Om du vill ändra din aktiva prenumeration och ha den kvar mellan sessioner i samma system använder du cmdleten Select-AzContext.

Viktigt

Dina autentiseringsuppgifter delas mellan flera PowerShell-sessioner så länge du är inloggad. Mer information finns i artikeln om beständiga autentiseringsuppgifter.

Logga in interaktivt

Om du vill logga in interaktivt använder du Anslut-AzAccount-cmdleten.

Connect-AzAccount

Från och med Az PowerShell-modul version 5.0.0 visar denna cmdlet en interaktiv webbläsarbaserad inloggningsfråga som standard. Du kan ange UseDeviceAuthentication parametern för att ta emot en tokensträng som tidigare var standard för PowerShell version 6 och senare.

Viktigt

Autentiseringsuppgifter för användarnamn och lösenord har tagits bort i Azure PowerShell på grund av ändringar i Active Directory-auktoriseringsimplementeringar och säkerhetsproblem. Om du använder autentiseringsuppgifter för automatisering ska du i stället skapa ett huvudnamn för tjänsten.

Använd cmdlet:en Get-AzContext för att lagra ditt klient-ID i en variabel som ska användas i följande två avsnitt i den här artikeln.

$tenantId = (Get-AzContext).Tenant.Id

Logga in med ett huvudnamn för tjänsten

Tjänsthuvudnamn är icke-interaktiva Azure-konton. Precis som andra användarkonton hanteras deras behörigheter med Azure Active Directory. Genom att bevilja en tjänsts huvudnamn endast de behörigheter den behöver, förblir dina automatiseringsskript säkra.

Mer information om hur du skapar en tjänsts huvudnamn för Azure PowerShell finns i Skapa en Azure-tjänsts huvudnamn med Azure PowerShell.

Om du vill logga in med en tjänsts huvudnamn använder ServicePrincipal du parametern för Connect-AzAccount cmdleten. Du behöver också tjänsthuvudorganisationens program-ID, inloggningsuppgifter och klientorganisations-ID:t som är associerat med tjänstens huvudnamn. Hur du loggar in med en tjänsts huvudnamn beror på om det är konfigurerat för lösenordsbaserad eller certifikatbaserad autentisering.

Lösenordsbaserad autentisering

Skapa ett huvudnamn för tjänsten som ska användas i exemplen i det här avsnittet. Mer information om hur du skapar tjänsthuvudnamn finns i Skapa en Azure-tjänsts huvudnamn med Azure PowerShell.

$sp = New-AzADServicePrincipal -DisplayName ServicePrincipalName

Om du vill hämta tjänstens huvudnamn som lämpligt objekt använder du cmdleten Get-Credential. Den här cmdleten visar en uppmaning om ett användarnamn och lösenord. Använd tjänstens huvudnamn applicationID som användarnamn och konvertera det till secret oformaterad text för lösenordet.

# Retrieve the plain text password for use with `Get-Credential` in the next command.
$sp.secret | ConvertFrom-SecureString -AsPlainText

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

För automatiseringsscenarier måste du skapa autentiseringsuppgifter från ett tjänsthuvudnamn applicationId och secret :

$pscredential = New-Object -TypeName System.Management.Automation.PSCredential($sp.ApplicationId, $sp.Secret)
Connect-AzAccount -ServicePrincipal -Credential $pscredential -Tenant $tenantId

Se till att du använder bra metoder för lösenordslagring när du automatiserar tjänstens huvudanslutningar.

Certifikatbaserad autentisering

Certifikatbaserad autentisering kräver att Azure PowerShell kan hämta information från ett lokalt certifikatarkiv baserat på ett tumuttryck för certifikat.

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

När du använder ett tjänsthuvudnamn i stället för ett registrerat program anger du parametern och anger tjänstens huvudnamn Program-ID som ServicePrincipal -ApplicationId parameterns värde.

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

I PowerShell 5.1 kan certifikatarkivet hanteras och kontrolleras med PKI-modulen. För PowerShell 6.x och senare är processen mer komplicerad. Följande skript visar hur du importerar ett befintligt certifikat till certifikatarkivet som kan nås via PowerShell.

Importera ett certifikat i 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 Core 6.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 funktion i Azure Active Directory. Hanterade identiteter är tjänsthuvudnamn som tilldelas till resurser som körs i Azure. Du kan använda en hanterad identitetstjänsts huvudnamn för inloggning och skaffa ett åtkomsttoken för endast program för att komma åt andra resurser. Hanterade identiteter är bara tillgängliga på resurser som körs i ett Azure-moln.

Det här exemplet ansluter med den hanterade identiteten i värdmiljön. Om den till exempel körs på en VirtualMachine med en tilldelad hanterad tjänstidentitet kan koden logga in med den tilldelade identiteten.

 Connect-AzAccount -Identity

Det här exemplet ansluter med hjälp av identiteten för den hanterade tjänsten MyUserAssignedIdentity. Det lägger till den användar tilldelade identiteten till den virtuella datorn och ansluter sedan med klient-ID:t för den användar tilldelade identiteten. Mer information finns i Konfigurera hanterade identiteter för Azure-resurser på en Azure VM.

$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
-------                ---------------- --------                -----------
yyyy-yyyy-yyyy-yyyy    Subscription1    xxxx-xxxx-xxxx-xxxx     AzureCloud

Logga in med en icke-standardklientorganisation eller en Molnlösningsleverantör (CSP)

Om ditt konto är kopplat till fler än en klientorganisation måste Tenant parametern anges vid anslutning. Den här parametern fungerar med valfri inloggningsmetod. När du loggar in kan det här parametervärdet antingen vara Azure-objekt-ID:t för klientorganisationens (klientorganisations-ID) eller klientorganisationens fullständiga domännamn.

Om du är en Molnlösningsleverantör (CSP)måste värdet för Tenant parametern vara ett klientorganisations-ID.

Connect-AzAccount -Tenant '00000000-0000-0000-0000-000000000000'

Logga in på ett annat moln

Azure-molntjänster erbjuder miljöer som följer de regionala lagar om datahantering. För konton i ett regionalt moln anger du miljön när du loggar in med Environment parametern. Den här parametern fungerar med valfri inloggningsmetod. Om ditt konto till exempel finns i Azure China 21Vianet:

Connect-AzAccount -Environment AzureChinaCloud

Följande kommando hämtar en lista över tillgängliga miljöer:

Get-AzEnvironment | Select-Object -Property Name