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

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

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ında DisplayName 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.