Hizmet sorumlusuyla Azure PowerShell'de oturum açma

Azure'da hizmet sorumlusu, belirli Azure kaynaklarına erişmek için uygulamalar, hizmetler ve otomasyon araçları tarafından kullanılan bir kimlik sağlayan, etkileşimsiz bir hesaptır. Hangi eylemlerin gerçekleştirilebileceğini ve hangi kaynaklara erişilebileceğini yöneten atanmış izinlere sahip bir güvenlik kimliği görevi gördüklerinden, güvenli betikler yazmanın en iyi yolu hizmet sorumlusuyla kimlik doğrulaması yapmaktır. Hizmet sorumluları, kişisel kullanıcı hesaplarını kullanmadan yönetim görevlerini güvenli bir şekilde otomatikleştirmeye yardımcı olur ve Azure kaynaklarına daha güvenli ve yönetilebilir erişim sağlar. Diğer kullanıcı hesapları gibi, microsoft entra ile izinlerini yönetirsiniz. Otomasyon betikleriniz hizmet sorumlusuna yalnızca ihtiyacı olan izinleri vererek güvenliğini korur.

Önkoşullar

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 sorumlusu ile nasıl oturum açacağınız, parola tabanlı veya sertifika tabanlı kimlik doğrulaması yöntemlerinden hangisini kullandığına bağlıdır.

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 ($env:USERPROFILE\.Azure) dosyada depolanırAzureRmContext.json. 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. Kullanıcı adı için hizmet sorumlusunun AppId kimliğini kullanın ve parola için secret gizli dizisini 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, hizmet sorumlusunun AppId kimliğinden ve SecretText gizli dizisinden kimlik bilgileri 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.

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'in sertifika parmak izini temel alan bir yerel 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.

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

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()

Yönetilen kimlikle oturum açma

Yönetilen kimlikler, Azure hizmetlerine otomatik olarak yönetilen bir kimlik 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.

İki tür yönetilen kimlik 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çlerini 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'da 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, azure hizmet örneği (Azure VM, App Service veya Azure İşlevleri gibi) için otomatik olarak sistem tarafından atanan bir yönetilen kimlik 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'da 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 parametresini ve Identity parametresini belirtmeniz gerekir.

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

Aşağıdaki komutlar yönetilen kimliğini myUserAssignedIdentitykullanarak 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'sinde Azure kaynakları için yönetilen kimlikleri yapılandırma.

Ayrıca bkz.