Otomasyon senaryoları için etkileşimli olmayan Azure PowerShell oturum açma

Azure'da yönetilen kimlik, uygulamaların, hizmetlerin ve otomasyon araçlarının kimlik bilgilerini kodda veya yapılandırmada depolamadan Azure kaynaklara erişmesi için güvenli ve sorunsuz bir yol sağlar. Hizmet ilkeleri manuel kimlik bilgisi yönetimi gerektirirken, Azure yönetilen kimlikleri otomatik olarak işler ve hassas sırları kullanıma sunmaz. Kimlik doğrulamasını basitleştirdiğinden ve kimlik bilgisi sızıntısı riskini en aza indirdiğinden, yönetilen kimlik kullanmak güvenli otomasyon betikleri yazmak için en iyi yöntemdir. Yönetilen kimlikler, kullanıcı kimliklerine güvenmeden yönetim görevlerini güvenli bir şekilde otomatikleştirmeye de yardımcı olur. Yönetilen kimlikler için izinler Microsoft Entra aracılığıyla yönetilir ve kaynaklara yalnızca gerekli erişime sahip olduklarından emin olur ve hem güvenlik hem de bakım sağlar.

Önemli

Eylül 2025'te Azure PowerShell, Microsoft Entra ID kullanıcı kimliğiyle oturum açarken çok faktörlü kimlik doğrulaması (MFA) gerektirir. Bu değişiklik güvenliği artırır, ancak kullanıcı adı ve parola kimlik doğrulaması kullanan otomasyon iş akışlarını etkileyebilir. Daha fazla bilgi için bkz. Otomasyon senaryolarında çok faktörlü kimlik doğrulamasının Azure PowerShell üzerindeki etkisi.

Önkoşullar

Yönetilen kimlikle oturum açma

Yönetilen kimlikler, otomatik olarak yönetilen bir kimlikle Azure hizmetler sağlayan özel bir hizmet sorumlusu türüdür. Bu kimlik türünün kullanılması, yönetilen kimlikleri destekleyen herhangi bir Azure hizmetinde kimlik doğrulaması yapmak için kimlik bilgilerinin yapılandırmada veya kodda depolanmasını gerektirmez.

Yönetilen kimliklerin iki türü vardır:

  • Sistem tarafından atanan yönetilen kimlik
  • Kullanıcı tarafından atanan yönetilen kimlik

Yönetilen kimlikler, geliştiricilerin kimlik bilgilerini yönetmesine gerek kalmadan diğer Azure hizmetleriyle iletişim kurmak için güvenli bir yol sağlar. Ayrıca kimlik bilgisi sızıntısı riskini azaltmaya da yardımcı olur.

Yönetilen kimlikler gerçek dünya senaryolarında şu şekilde çalışır:

  • Azure, yönetilen kimlik tarafından kullanılan kimlik bilgilerinin oluşturulmasını ve silinmesini otomatik olarak yönetir.
  • Yönetilen kimlikle etkinleştirilmiş bir Azure hizmeti Microsoft Entra belirteçleri kullanarak Azure Key Vault, Azure SQL Veritabanı, Azure Blob Depolama vb. gibi diğer hizmetlere güvenli bir şekilde erişebilir.
  • Bu kimlik, ek sağlama gerekmeden doğrudan Azure içinde yönetilir.

Yönetilen kimlikler, kimlik bilgilerini depolama ve yönetme gereksinimini ortadan kaldırarak güvenlik modelini basitleştirir ve gizli dizileri işlemeyle ilişkili riski azaltarak güvenli bulut işlemlerinde önemli bir rol oynar.

Sistem tarafından atanan yönetilen kimlik

Azure bir Azure hizmet örneği (Azure VM, App Service veya Azure İşlevleri gibi) için sistem tarafından atanan yönetilen kimliği otomatik olarak oluşturur. Hizmet örneği silindiğinde, Azure hizmetle ilişkili kimlik bilgilerini ve kimliği otomatik olarak temizler.

Aşağıdaki örnek, konak ortamının sistem tarafından atanan yönetilen kimliğini kullanarak bağlanır. Atanmış yönetilen kimliğe sahip bir sanal makinede yürütülürse, kodun atanan kimliği kullanarak oturum açmasına izin verir.

 Connect-AzAccount -Identity

Kullanıcı tarafından atanan yönetilen kimlik

Kullanıcı tarafından atanan yönetilen kimlik, Microsoft Entra oluşturduğunuz ve yönettiğiniz bir kimliktir. Bir veya daha fazla Azure hizmet örneğine atanabilir. Kullanıcı tarafından atanan yönetilen kimliğin yaşam döngüsü, atandığı hizmet örneklerinden ayrı olarak yönetilir.

Kullanıcı tarafından atanan yönetilen kimlik kullanırken, aşağıdaki örnekte gösterildiği gibi AccountId ve Identity parametrelerini belirtmeniz gerekir.

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

Aşağıdaki komutlar myUserAssignedIdentity yönetilen kimliğini kullanarak bağlanır. Kullanıcı tarafından atanan kimliği sanal makineye ekler ve ardından kullanıcı tarafından atanan kimliğin ClientId değerini kullanarak bağlanır.

$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

Daha fazla bilgi için bkz. Azure VM'de Azure kaynakları için yönetilen kimlikleri yapılandırma.

Hizmet sorumlusuyla oturum açma

Hizmet sorumlusuyla oturum açmak için cmdlet'in ServicePrincipal parametresini Connect-AzAccount kullanın. Hizmet sorumlusu için aşağıdaki bilgilere de ihtiyacınız olacaktır:

  • AppId
  • Oturum açma kimlik bilgileri veya hizmet sorumlusunu oluşturmak için kullanılan sertifikaya erişim
  • Kiracı Kimliği

Hizmet sorumlusuyla nasıl oturum açabileceğiniz, sertifika tabanlı mı yoksa parola tabanlı kimlik doğrulaması için mi yapılandırıldığına bağlıdır.

Sertifika tabanlı kimlik doğrulaması

Azure PowerShell için hizmet sorumlusu oluşturmayı öğrenmek için bkz. Azure PowerShell ile Azure hizmet sorumlusu oluşturma.

Sertifika tabanlı kimlik doğrulaması, Azure PowerShell sertifika parmak izini temel alarak yerel bir sertifika deposundan bilgi almasını gerektirir.

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

Kayıtlı uygulama yerine hizmet sorumlusu kullanırken ServicePrincipal parametresini belirtin ve ApplicationId parametresinin değeri olarak hizmet sorumlusunun AppId değerini sağlayın.

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

Windows PowerShell 5.1'de sertifika deposu PKI modülüyle yönetilebilir ve incelenebilir. PowerShell 7.x ve üzeri sürümlerde işlem farklıdır. Aşağıdaki betikler, var olan bir sertifikanın PowerShell tarafından erişilebilen sertifika deposuna nasıl aktarılacağını gösterir.

PowerShell 7.x ve sonraki sürümlerde sertifikayı 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()

Windows PowerShell 5.1'de sertifikayı 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

Parola tabanlı kimlik doğrulaması

Bu bölümdeki örneklerle kullanmak için bir hizmet sorumlusu oluşturun. Hizmet sorumluları oluşturma hakkında daha fazla bilgi için bkz. Azure PowerShell ile Azure hizmet sorumlusu oluşturma.

$sp = New-AzADServicePrincipal -DisplayName ServicePrincipalName

Dikkat

Sağlanan hizmet sorumlusu gizli anahtarı, kullanıcı profilinizdeki (AzureRmContext.json) $env:USERPROFILE\.Azure dosyasında depolanır. Bu dizinin uygun korumalara sahip olduğundan emin olun.

Hizmet sorumlusunun kimlik bilgilerini bir nesne olarak almak için cmdlet'ini Get-Credential kullanın. Bu cmdlet bir kullanıcı adı ve parola ister. Hizmet sorumlusunun AppId kullanıcı adı olarak kullanın ve secret düz metne dönüştürün.

# 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

Otomasyon senaryoları için, bir hizmet sorumlusunun AppId ve SecretText kimlik bilgilerini oluşturmanız gerekir.

$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

Hizmet sorumlusu bağlantılarını otomatikleştirmek için uygun parola depolama uygulamalarını kullanın.

Ayrıca bakınız