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
- Az PowerShell modülünün en son sürümünü yükleyin.
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 myUserAssignedIdentity
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'sinde Azure kaynakları için yönetilen kimlikleri yapılandırma.
Ayrıca bkz.
Azure PowerShell
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin