Oturum açma ile Azure PowerShell
Azure PowerShell kimlik doğrulama yöntemleri destekler. Başlamanın en kolay yolu, otomatik olarak oturum açtığınız Azure BulutKabuğu'ladır. Yerel bir yükleme ile, tarayıcınız aracılığıyla etkileşimli olarak oturum açın. Otomasyona betikler yazarken, önerilen yaklaşım gerekli izinlere sahip bir hizmet sorumlusu kullanmaktır. Oturum açma izinlerini kullanım durumu için mümkün olduğunca kısıtlarken, Azure kaynaklarınızı güvende tutmanıza yardımcı olur.
İlk başta, birden fazla aboneliğe erişiminiz varsa Azure'ın döndür olduğu ilk abonelikte oturum amış oluruz. Komutlar varsayılan olarak bu abonelikte çalıştır açıktır. Bir oturumda etkin aboneliğinizi değiştirmek için Set-AzContext cmdlet'ini kullanın. Etkin aboneliğinizi değiştirmek ve aynı sistem oturumları arasında kalıcı olmak için Select-AzContext cmdlet'ini kullanın.
Önemli
Oturum açık kalırken kimlik bilgileriniz birden çok PowerShell oturumunda paylaşılır. Daha fazla bilgi için Kalıcı Kimlik Bilgileri ile ilgili makaleye bakın.
Etkileşimli oturum açma
Etkileşimli oturum açması için Bağlan-AzAccount cmdlet'ini kullanın.
Connect-AzAccount
Az PowerShell modülü sürüm 5.0.0'dan başarak, bu cmdlet varsayılan olarak etkileşimli bir tarayıcı tabanlı oturum açma istemi sunar. Daha önce PowerShell sürüm 6 ve üzerinde varsayılan olan bir belirteç dizesi almak UseDeviceAuthentication için parametreyi belirtabilirsiniz.
Önemli
Active Directory yetkilendirme uygulamaları ve güvenlik Azure PowerShell nedeniyle kullanıcı adı/parola kimlik bilgisi yetkilendirmesi bu uygulamada kaldırıldı. Otomasyon amacıyla kimlik bilgisi yetkilendirmesi kullanıyorsanız, bunun yerine bir hizmet sorumlusu oluşturun.
Kiracı kimliğinizi, bu makalenin sonraki iki bölümlerinde kullanılacak bir değişkende depolamak için Get-AzContext cmdlet'ini kullanın.
$tenantId = (Get-AzContext).Tenant.Id
Hizmet sorumlusuyla oturum açma
Hizmet sorumluları etkileşimli olmayan Azure hesaplarıdır. Diğer kullanıcı hesapları gibi izinleri de aynı Azure Active Directory. Hizmet sorumlusuna yalnızca gereken izinleri vererek, otomasyon betikleri güvenli kalır.
Azure PowerShell'de kullanmak üzere hizmet sorumlusu oluşturma hakkında bilgi edinmek için bkz. Azure PowerShell.
Hizmet sorumlusuyla oturum açması ServicePrincipal Connect-AzAccount için, cmdlet'in parametresini kullanın. Ayrıca hizmet sorumlusunun uygulama kimliğine, oturum açma kimlik bilgilerine ve hizmet sorumlusuyla kiracı kimliği ilişkilendirmeniz gerekir. Hizmet sorumlusuyla oturum açma yönteminiz, parola tabanlı mı yoksa sertifika tabanlı kimlik doğrulama için mi yapılandırıldıklarına bağlıdır.
Parola tabanlı kimlik doğrulaması
Bu bölümdeki örneklerde kullanılacak bir hizmet sorumlusu oluşturun. Hizmet sorumlularını oluşturma hakkında daha fazla bilgi için bkz. Kendileriyle Azure hizmet Azure PowerShell.
$sp = New-AzADServicePrincipal -DisplayName ServicePrincipalName
Hizmet sorumlusun kimlik bilgilerini uygun nesne olarak almak için, Get-Credential cmdlet'ini kullanın. Bu cmdlet, bir kullanıcı adı ve parola istemi sunar. Kullanıcı adı için hizmet applicationID sorumlusuna tıklayın ve parolanın secret düz metnine dönüştürebilirsiniz.
# 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
Otomasyon senaryolarında, hizmet sorumlusundan ve : applicationId secret
$pscredential = New-Object -TypeName System.Management.Automation.PSCredential($sp.ApplicationId, $sp.Secret)
Connect-AzAccount -ServicePrincipal -Credential $pscredential -Tenant $tenantId
Hizmet asıl bağlantıları otomatik hale gösterirken iyi parola depolama uygulamaları kullanmaya emin olun.
Sertifika tabanlı kimlik doğrulama
Sertifika tabanlı kimlik doğrulama, Azure PowerShell başparmak basımlarına dayalı olarak yerel bir sertifika mağazasından bilgi alamıyorlarını gerektirir.
Connect-AzAccount -ApplicationId $appId -Tenant $tenantId -CertificateThumbprint <thumbprint>
Kaydedilmiş bir uygulama yerine hizmet sorumlusu kullanıldığında, parametreyi belirtin ve hizmet sorumlusunun ServicePrincipal Uygulama Kimliği'ne -ApplicationId parametrenin değeri olarak sağ tıklayın.
Connect-AzAccount -ServicePrincipal -ApplicationId $servicePrincipalId -Tenant $tenantId -CertificateThumbprint <thumbprint>
PowerShell 5.1'de, sertifika deposu PKI modülüyle yönetilebilir ve denetleniyor. PowerShell 6.x ve sonrakileri için bu işlem daha karmaşıktır. Aşağıdaki betikler, var olan bir sertifikayı PowerShell tarafından erişilebilen sertifika deposuna nasıl aktaracağız?
PowerShell 5.1'de sertifika içeri aktarma
# 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
PowerShell Core 6.x ve sonraki bir x'te sertifika içeri aktarma
# 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()
Yönetilen kimlik kullanarak oturum açma
Yönetilen kimlikler, kimlik yönetiminin bir Azure Active Directory. Yönetilen kimlikler, Azure'da çalıştırdığı kaynaklara atanmış hizmet sorumlularıdır. Oturum açma için yönetilen bir kimlik hizmet sorumlusu kullanabilir ve diğer kaynaklara erişmek için yalnızca uygulama erişim belirteci edinebilirsiniz. Yönetilen kimlikler yalnızca Azure bulutlarında çalışan kaynaklarda kullanılabilir.
Bu örnek, ana ortamın yönetilen kimliğini kullanarak bağlanır. Örneğin, atanmış bir Yönetilen Hizmet Kimliği ile bir VirtualMachine üzerinde yürütülürse, bu kod atanan kimliği kullanarak oturum açmasını sağlar.
Connect-AzAccount -Identity
Bu örnek, Kullanıcıa Atanan Kimliğim'in Yönetilen Hizmet Kimliği kullanılarak bağlanır. Kullanıcı tarafından atanan kimliği sanal makineye ekler, ardından kullanıcının atadığı kimliğin ClientId'sini kullanarak bağlanır. Daha fazla bilgi için bkz. Azure VM'de Azure kaynakları için yönetilen kimlikleri yapılandırma.
$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
Varsayılan olmayan bir kiracıyla veya kiracı (CSP) Bulut Çözümü Sağlayıcısı açma
Hesabınız birden çok kiracıyla ilişkilendirilmişse, oturum açma için bağlanırken Tenant parametrenin belirtilmelidir. Bu parametre herhangi bir oturum açma yöntemiyle çalışır. Oturum ataşken, bu parametre değeri kiracının Azure nesne kimliği (Kiracı Kimliği) veya kiracının tam etki alanı adı olabilir.
Parametre (CSP) Bulut Çözümü Sağlayıcısı,parametrenin değeri Tenant bir kiracı kimliği olmalıdır.
Connect-AzAccount -Tenant '00000000-0000-0000-0000-000000000000'
Başka bir Bulutta oturum açma
Azure bulut hizmetleri, bölgesel veri işleme yasalarına uygun ortamlar sunar. Bölgesel bir bulut hesapları için, parametreyle oturum airken ortamı Environment ayarlayın. Bu parametre herhangi bir oturum açma yöntemiyle çalışır. Örneğin, hesabınız Azure China 21Vianet'te ise:
Connect-AzAccount -Environment AzureChinaCloud
Aşağıdaki komut, kullanılabilir ortamların listesini alır:
Get-AzEnvironment | Select-Object -Property Name