Azure PowerShell ile bir Azure hizmet sorumlusu oluşturma
Azure hizmetlerini kullanan otomatikleştirilmiş araçlar her zaman kısıtlı erişime sahip olmalıdır. Azure, uygulamalarda tamamen ayrıcalıklı bir kullanıcı olarak oturum açma olması yerine hizmet sorumluları sağlar.
Azure hizmet sorumlusu, Azure kaynaklarına erişen uygulamalar, barındırılan hizmetler ve otomatikleştirilmiş araçlar ile kullanılmak için oluşturulan bir kimliktir. Bu erişim, hizmet sorumlusuna atanan roller tarafından kısıtlanır ve hangi kaynaklara hangi düzeyde erişilebileceğini kontrol edebilirsiniz. Güvenlik nedeniyle, otomatikleştirilmiş araçların kullanıcı kimliği ile oturum açmalarına izin vermek yerine her zaman hizmet sorumlularını kullanmanız önerilir.
Bu makale, Azure PowerShell ile hizmet sorumlusu oluşturma, sıfırlama ve hakkında bilgi alma adımlarını gösterir.
Dikkat
New-AzADServicePrincipal komutunu kullanarak hizmet sorumlusu oluşturduğunuzda, çıkışta korumanız gereken kimlik bilgileri yer alır. Alternatif olarak, kimlik bilgilerini kullanma gereksinimini ortadan kaldırmak için yönetilen kimlikleri kullanabilirsiniz.
Önkoşullar
- Azure PowerShell'i yerel olarak kullanmayı seçerseniz:
- Az PowerShell modülünü yükleyin.
- Connect-AzAccount cmdlet'ini kullanarak Azure hesabınıza bağlanın.
- Azure Cloud Shell'i kullanmayı seçerseniz:
- Daha fazla bilgi için bkz . Azure Cloud Shell'e genel bakış.
Hizmet sorumlusu oluşturma
New-AzADServicePrincipal cmdlet’i ile hizmet sorumlusu oluşturun. Hizmet sorumlusu oluştururken, kullanacağınız oturum açma kimlik doğrulaması türünü seçebilirsiniz.
Önemli
Az PowerShell modülünün 7.x sürümünden başlayarak, New-AzADServicePrincipal artık hizmet sorumlusuna varsayılan olarak Katkıda Bulunan rolünü atamaz. Hizmet sorumlusuna belirli bir rol atamak için bkz . Rol ataması ekleme adımları.
Not
Hesabınızın hizmet sorumlusu oluşturma izni yoksa , New-AzADServicePrincipal
"İşlemi tamamlamak için ayrıcalık yetersiz" hata iletisini döndürür. Hizmet sorumlusu oluşturmak için Microsoft Entra yöneticinize başvurun.
Kullanıcılar uygulamaları kaydedebilir kullanıcı ayarının Hayır olarak ayarlandığı bir Microsoft Entra ID dizininde, aşağıdaki Microsoft Entra Id yerleşik rollerinden birinin üyesi olmanız gerekir (şu eyleme sahip olmanız gerekir: microsoft.directory/applications/createAsOwner
veya microsoft.directory/applications/create
):
- Uygulama Geliştirici
- Uygulama Yöneticisi
- Bulut Uygulaması Yöneticisi
- Genel Yönetici
- Karma Kimlik Yöneticisi
Microsoft Entra Id'deki kullanıcı ayarları hakkında daha fazla bilgi için bkz . Kimlerin uygulama oluşturabileceğini kısıtlama.
Hizmet sorumluları için iki tür kimlik doğrulaması sağlanır: Parola tabanlı kimlik doğrulaması ve sertifika tabanlı kimlik doğrulaması.
Parola tabanlı kimlik doğrulaması
Önemli
Parola tabanlı kimlik doğrulaması hizmet sorumlusu için varsayılan rol Katkıda Bulunan’dır. Bu rol, bir Azure hesabında okuma ve yazma için tam izne sahiptir. Rol atamalarını yönetme hakkında bilgi için bkz. Hizmet sorumlusu rollerini yönetme.
Diğer kimlik doğrulaması parametreleri olmadan parola tabanlı kimlik doğrulaması kullanılır ve sizin için rastgele bir parola oluşturulur. Parola tabanlı kimlik doğrulaması istiyorsanız bu yöntem önerilir.
$sp = New-AzADServicePrincipal -DisplayName ServicePrincipalName
Döndürülen nesne, oluşturulan parolayı PasswordCredentials.SecretText
içeren özelliğini içerir. Hizmet sorumlusuyla kimlik doğrulaması yapabilmek için bu değeri güvenli bir yerde depoladığınızdan emin olun. Değeri, konsol çıkışında görüntülenmez. Parolayı kaybederseniz hizmet sorumlusu kimlik bilgilerini sıfırlayın.
Aşağıdaki kod gizli diziyi dışarı aktarmanıza olanak tanır:
$sp.PasswordCredentials.SecretText
New-AzADServicePrincipal
cmdlet’inden döndürülen nesne Id
ve DisplayName
üyelerini içerir. Hizmet sorumlusuyla oturum açmak için bunların herhangi birini kullanabilirsiniz.
Önemli
Hizmet sorumlusuyla oturum açmak için hizmet sorumlusunun altında oluşturulduğu kiracı kimliği gerekir. Hizmet sorumlusu oluşturulduğunda etkin olan kiracıyı almak için hizmet sorumlusu oluşturulduktan hemen sonra şu komutu çalıştırın:
(Get-AzContext).Tenant.Id
Sertifika tabanlı kimlik doğrulaması
Önemli
Sertifika tabanlı kimlik doğrulaması hizmet sorumlusu oluşturulurken atanan varsayılan bir rol yoktur. Rol atamalarını yönetme hakkında bilgi için bkz. Hizmet sorumlusu rollerini yönetme.
Sertifika tabanlı kimlik doğrulaması kullanan hizmet sorumluları CertValue
parametresiyle oluşturulur. Bu parametre, ortak sertifikanın base64 biçiminde kodlanmış ASCII dizesini alır. Bu, PEM dosyası ya da metin biçiminde kodlanmış CRT veya CER olarak temsil edilir. Ortak sertifikanın ikili kodlamaları desteklenmez. Bu yönergeler, mevcut bir sertifikanızın olduğunu varsayar.
$cert = <public certificate as base64-encoded string>
$sp = New-AzADServicePrincipal -DisplayName ServicePrincipalName -CertValue $cert
öğesinden New-AzADServicePrincipal
döndürülen nesne, hizmet sorumlusuyla oturum açmak için kullanılabilecek ve DisplayName
özelliklerini içerirId
. Hizmet sorumlusuyla oturum açan kullanıcıların sertifikanın özel anahtarına da erişim sağlamaları gerekir.
Önemli
Hizmet sorumlusuyla oturum açmak için hizmet sorumlusunun altında oluşturulduğu kiracı kimliği gerekir. Hizmet sorumlusu oluşturulduğunda etkin olan kiracıyı almak için hizmet sorumlusu oluşturulduktan hemen sonra şu komutu çalıştırın:
(Get-AzContext).Tenant.Id
Mevcut bir hizmet sorumlusunu alma
Etkin kiracı için hizmet sorumlularının listesini Get-AzADServicePrincipal ile alabilirsiniz. Bu komut, varsayılan olarak bir kiracıdaki tüm hizmet sorumlularını döndürür. Büyük kuruluşlarda sonuçların döndürülmesi uzun sürebilir. Bunun yerine, isteğe bağlı sunucu tarafı filtreleme bağımsız değişkenlerinin birini kullanmanız önerilir:
DisplayNameBeginsWith
, sağlanan değer ile eşleşen ön eke sahip hizmet sorumlularını ister. Hizmet sorumlusunun görünen adı, oluşturma sırasındaDisplayName
ile ayarlanan değerdir.DisplayName
, bir hizmet sorumlusu adının tam eşleşmesini ister.
Hizmet sorumlusu rollerini yönetme
Azure PowerShell, rol atamalarını yönetmek için aşağıdaki cmdlet’leri içerir:
Rol Tabanlı Erişim Denetimi (RBAC) ve rolleri hakkında daha fazla bilgi için bkz. RBAC: Yerleşik roller.
Aşağıdaki örnek Okuyucu rolünü ekler ve Katkıda Bulunan rolünü kaldırır:
New-AzRoleAssignment -ApplicationId <service principal application ID> -RoleDefinitionName 'Reader'
Remove-AzRoleAssignment -ObjectId <service principal object ID> -RoleDefinitionName 'Contributor'
Önemli
Rol atama cmdlet'leri, hizmet sorumlusu nesne kimliğini almaz. Oluşturma zamanında üretilen ilişkili uygulama kimliğini alırlar. Hizmet sorumlusuna uygulama kimliği almak için Get-AzADServicePrincipal
kullanın.
Not
Hesabınızın rol atama izni yoksa, hesabınızın "'Microsoft.Authorization/roleAssignments/write' eylemini gerçekleştirmek için yetkilendirmesi olmadığını" belirten bir hata iletisi görürsünüz. Rolleri yönetmek için Microsoft Entra yöneticinize başvurun.
Bir rol eklendiğinde, önceden atanmış izinler kısıtlanmaz. Bir hizmet sorumlusunun izinlerini kısıtlarken Katkıda Bulunan rolü kaldırılmalıdır.
Atanan roller listelenerek değişiklikler doğrulanabilir:
Get-AzRoleAssignment -ServicePrincipalName ServicePrincipalName
Hizmet sorumlusu kullanarak oturum açma
Oturum açarak yeni hizmet sorumlusunun kimlik bilgilerini ve izinlerini test edin. Hizmet sorumlusuyla oturum açmak için, kendisiyle ilişkilendirilmiş değere ve altında oluşturulduğu kiracıya ihtiyacınız vardır applicationId
.
Hizmet sorumlusunda parola kullanarak oturum açmak için:
# Use the application ID as the username, and the secret as password
$credentials = Get-Credential
Connect-AzAccount -ServicePrincipal -Credential $credentials -Tenant <tenant ID>
Sertifika tabanlı kimlik doğrulaması, Azure PowerShell’in sertifika parmak izini temel alarak bir yerel sertifika deposundan bilgi alabilir olmasını gerektirir.
Connect-AzAccount -ServicePrincipal -Tenant <TenantId> -CertificateThumbprint <Thumbprint> -ApplicationId <ApplicationId>
PowerShell tarafından erişilebilen bir kimlik bilgisi deposuna sertifika aktarma yönergeleri için bkz . Sertifika tabanlı kimlik doğrulaması
Kimlik bilgilerini sıfırlama
Hizmet sorumlusunun kimlik bilgilerini unutursanız rastgele bir parola ile yeni kimlik bilgileri eklemek için New-AzADSpCredential kullanın. Bu cmdlet, parola sıfırlandığında kullanıcı tanımlı kimlik bilgilerini desteklemez.
Önemli
Yeni kimlik bilgileri atamadan önce, mevcut kimlik bilgileri kullanılarak oturum açılmasını önlemek için bunları silebilirsiniz. Bunu yapmak için, Remove-AzADSpCredential cmdlet’ini kullanın:
Remove-AzADSpCredential -DisplayName ServicePrincipalName
$newCredential = New-AzADSpCredential -ServicePrincipalName ServicePrincipalName
Sorun giderme
Şu hatayı alırsanız: "New-AzADServicePrincipal: IdentifierUris için aynı değere sahip başka bir nesne zaten var." aynı ada sahip bir hizmet sorumlusunun mevcut olmadığını doğrulayın.
Get-AzAdServicePrincipal -DisplayName ServicePrincipalName
Mevcut hizmet sorumlusu artık gerekmiyorsa bunu aşağıdaki örneği kullanarak kaldırabilirsiniz.
Remove-AzAdServicePrincipal -DisplayName ServicePrincipalName
Ayrıca, önceden Azure Active Directory uygulaması için bir hizmet sorumlusu oluşturduysanız bu hatayla karşılaşabilirsiniz. Hizmet sorumlusunu kaldırsanız da uygulama kullanılabilir. Bu uygulama, aynı ada sahip başka bir hizmet sorumlusu oluşturmanızı engeller.
Aynı ada sahip bir Microsoft Entra uygulamasının mevcut olmadığını doğrulamak için aşağıdaki örneği kullanabilirsiniz:
Get-AzADApplication -DisplayName ServicePrincipalName
Aynı ada sahip başka bir uygulama varsa ve artık bu uygulamaya ihtiyaç duymuyorsanız aşağıdaki örneği kullanarak bunu kaldırabilirsiniz.
Remove-AzADApplication -DisplayName ServicePrincipalName
Bu uygulamaya ihtiyaç duyuyorsanız oluşturmayı denediğiniz yeni hizmet sorumlusu için alternatif bir ad seçin.