Logga in med Azure PowerShell

Azure PowerShell har stöd för flera autentiseringsmetoder. Det enklaste sättet att komma igång är med Azure Cloud Shell, som automatiskt loggar in dig. Med en lokal installation kan du logga in interaktivt via webbläsaren. När du skriver skript för automatisering är den rekommenderade metoden att använda ett tjänsthuvudnamn med de nödvändiga behörigheterna. Du kan skydda dina Azure-resurser genom att begränsa behörigheterna för inloggning så mycket som möjligt.

Inledningsvis är du inloggad på den första prenumerationen Azure returnerar om du har åtkomst till fler än en prenumeration. Kommandon körs mot den här prenumerationen som standard. Använd cmdleten Set-AzContext för att ändra din aktiva prenumeration för en session. Använd Select-AzContext-cmdleten för att ändra din aktiva prenumeration och låta den vara permanent mellan sessioner på samma system.

Viktigt

Dina autentiseringsuppgifter delas mellan flera PowerShell-sessioner så länge du är inloggad. Mer information finns i Azure PowerShell kontextobjekt.

Logga in interaktivt

Använd cmdleten Connect-AzAccount för att logga in interaktivt.

Connect-AzAccount

Den här cmdleten presenterar en interaktiv webbläsarbaserad inloggningsprompt som standard.

Använd cmdleten Get-AzContext för att lagra din klientorganisations ID i en variabel som ska användas i de följande två avsnitten i den här artikeln.

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

Autentisering av enhetskod

Du kan ange parametern UseDeviceAuthentication för att använda enhetskodautentisering i stället för en webbläsarkontroll.

Connect-AzAccount -UseDeviceAuthentication

Logga in med ett huvudnamn för tjänsten

Tjänstens huvudnamn är icke-interaktiva Azure-konton. Precis som med andra användarkonton hanteras deras behörigheter med Azure Active Directory. Genom att endast bevilja de behörigheter som krävs för tjänstens huvudnamn skyddas dina automatiseringsskript.

I Skapa tjänstens huvudnamn för Azure med Azure PowerShell finns information om hur du skapar ett huvudnamn för tjänsten som ska användas med Azure PowerShell.

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 även program-ID:t för tjänstens huvudnamn, inloggningsuppgifter och det klient-ID som är associerat med tjänstens huvudnamn. 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 i 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

Använd cmdleten Get-Credential för att hämta autentiseringsuppgifterna för tjänstens huvudnamn. Cmdleten visar en uppmaning om att ange användarnamn och lösenord. Använd tjänsthuvudnamnets applicationID 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

Se till att du använder metoder för säker lagring av lösenord vid automatisering av anslutningar med tjänstens huvudnamn.

Certifikatbaserad autentisering

För certifikatbaserad autentisering måste Azure PowerShell kunna hämta information från ett lokalt certifikatarkiv baserat på ett tumavtryck för certifikat.

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

När du använder ett huvudnamn för tjänsten i stället för ett registrerat program anger du parametern ServicePrincipal och anger tjänstens huvudnamns program-ID som -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 det certifikatarkiv som är tillgängligt för 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 tilldelats till resurser som körs i Azure. Du kan använda en hanterad identitet som tjänstens huvudnamn för att logga in och få en app-begränsad åtkomsttoken för att komma åt andra resurser. Hanterade identiteter är endast tillgängliga på resurser som körs i ett Azure-moln.

Det här exemplet ansluts med hjälp av den hanterade identiteten för värdmiljön. Om kommandot till exempel körs på en virtuell dator med en tilldelad hanterad tjänstidentitet kan koden logga in med hjälp av den tilldelade identiteten.

 Connect-AzAccount -Identity

Det här exemplet ansluter med hjälp av den hanterade tjänstidentiteten för 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. Mer information finns i Konfigurera hanterade identiteter för Azure-resurser på en virtuell Azure-dator.

$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 klientorganisation som inte är standard eller som molnlösningsleverantör (CSP)

Om ditt konto är associerat med fler än en klientorganisation måste parametern Tenant specificeras när du ansluter för att logga in. Den här parametern fungerar med alla inloggningsmetoder. När du loggar in kan det här parametervärdet antingen vara klientorganisationens objekt-ID för Azure (klient-ID) eller det fullständigt kvalificerade domännamnet för klientorganisationen.

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

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

Logga in på ett annat moln

Azures molntjänster erbjuder miljöer som följer regionala lagar för datahantering. För konton i ett regionalt moln anger du miljön när du loggar in med parametern Environment . Den här parametern fungerar med alla inloggningsmetoder. 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