Aracılığıyla paylaş


Azure PowerShell ile Azure hizmet sorumlusu oluşturma

Azure hizmetleri kullanan otomatik araçlar her zaman kısıtlı izinlere sahip olmalıdır. uygulamaların tam ayrıcalıklı bir kullanıcı olarak oturum açması yerine, Azure hizmet ilkeleri sunar.

Azure hizmet sorumlusu, Azure kaynaklara erişmek için uygulamalar, barındırılan hizmetler ve otomatik araçlarla kullanılmak üzere oluşturulmuş bir kimliktir. Bu erişim, hizmet sorumlusuna atanan rollerle kısıtlanır ve hangi kaynaklara ve hangi düzeyde erişilebileceğini denetlemenizi sağlar. Güvenlik nedeniyle, hizmet sorumlularının kullanıcı kimliğiyle oturum açmalarına izin vermek yerine otomatik araçlarla kullanılması her zaman önerilir.

Bu makalede, Azure PowerShell ile hizmet sorumlusu oluşturma, hakkında bilgi alma ve sıfırlama adımları gösterilmektedir.

Dikkat

New-AzADServicePrincipal komutunu kullanarak bir hizmet sorumlusu oluşturduğunuzda çıkış, korumanız gereken kimlik bilgilerini içerir. Alternatif olarak, kimlik bilgilerini kullanma gereksinimini önlemek için yönetilen kimlikleri kullanmayı göz önünde bulundurun.

Önkoşullar

Hizmet sorumlusu oluşturma

New-AzADServicePrincipal cmdlet'i ile bir hizmet sorumlusu oluşturun. Hizmet sorumlusu oluştururken, kullandığı oturum açma kimlik doğrulaması türünü seçersiniz.

Ö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ı.

Uyarı

Hesabınızın hizmet ana hesabı oluşturma izni yoksa, New-AzADServicePrincipal "İşlemi tamamlamak için yetkiler yetersiz" hata mesajını döndürür. Hizmet sorumlusu oluşturmak için Microsoft Entra yöneticinize başvurun.

Microsoft Entra ID dizininde "Users can register applications" kullanıcı ayarı No olarak ayarlandığında, aşağıdaki Microsoft Entra ID yerleşik rollerinden birinin üyesi olmanız gerekir (bu rollerin eylemi: microsoft.directory/applications/createAsOwner veya microsoft.directory/applications/create olan):

Microsoft Entra ID kullanıcı ayarları hakkında daha fazla bilgi için bkz. Uygulama oluşturabilecek kişileri 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ğrulama hizmet sorumlusu için varsayılan rol Katkıda Bulunan'dır. Bu rolün Azure hesabı okuma ve bu hesaba yazma için tam izinleri vardır. Rol atamalarını yönetme hakkında bilgi için bkz. Hizmet sorumlusu rollerini yönetme.

Başka kimlik doğrulama 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ı yapmak 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

döndürülen nesne New-AzADServicePrincipal öğesinden, Id ve DisplayName üyelerini içerir ve bunlardan her biri hizmet ilkesi ile oturum açmak için kullanılabilir.

Önemli

Hizmet sorumlusuyla oturum açmak için hizmet sorumlusunun oluşturulduğu kiracı kimliği gerekir. Hizmet sorumlusu oluşturulduğunda etkin kiracıyı almak için, hizmet sorumlusu oluşturulduktan hemen sonra aşağıdaki komutu çalıştırın:

(Get-AzContext).Tenant.Id

Sertifika tabanlı kimlik doğrulaması

Önemli

Sertifika tabanlı kimlik doğrulama hizmet sorumlusu oluşturulurken varsayılan rol atanmamış. Rol atamalarını yönetme hakkında bilgi için bkz. Hizmet sorumlusu rollerini yönetme.

Sertifika tabanlı kimlik doğrulaması kullanan hizmet sorumluları parametresiyle CertValue oluşturulur. Bu parametre, ortak sertifikanın base64 kodlu ASCII dizesini alır. Bu, PEM dosyası veya metin kodlanmış bir CRT veya CER ile temsil edilir. Ortak sertifikanın ikili kodlamaları desteklenmez. Bu yönergelerde, zaten bir sertifikanız olduğu varsayılır.

$cert = <public certificate as base64-encoded string>
$sp = New-AzADServicePrincipal -DisplayName ServicePrincipalName -CertValue $cert

New-AzADServicePrincipal öğesinden döndürülen nesne, hizmet sorumlusuyla oturum açmak için kullanılabilecek Id ve DisplayName özelliklerini içerir; bunlardan herhangi biriyle oturum açılabilir. Hizmet sorumlusuyla oturum açan istemcilerin sertifikanın özel anahtarına da erişmesi gerekir.

Önemli

Hizmet sorumlusuyla oturum açmak için hizmet sorumlusunun oluşturulduğu kiracı kimliği gerekir. Hizmet sorumlusu oluşturulduğunda etkin kiracıyı almak için, hizmet sorumlusu oluşturulduktan hemen sonra aşağıdaki komutu çalıştırın:

(Get-AzContext).Tenant.Id

Mevcut hizmet sorumlusunu alma

Etkin kiracı için hizmet sorumlularının listesi Get-AzADServicePrincipal ile alınabilir. Varsayılan olarak bu komut 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şkenlerinden birini kullanmanız önerilir:

  • DisplayNameBeginsWith sağlanan değerle eşleşen bir ön eki olan hizmet sorumlularını istemektedir. Hizmet ilkesinin görünen adı, oluşturma sırasında DisplayName ile ayarlanan değerdir.
  • DisplayName bir hizmet asıl adının tam eşleşmesini istemektedir.

Hizmet sorumlusu rollerini yönet

Azure PowerShell rol atamalarını yönetmek için aşağıdaki cmdlet'lere sahiptir:

Role-Based Access Control (RBAC) ve roller 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şturulma anında yaratılan ilişkili uygulama kimliğini alırlar. Hizmet sorumlusunun uygulama kimliğini almak için kullanın Get-AzADServicePrincipal.

Uyarı

Hesabınızın rol atama yetkisi yoksa, hesabınızın "Microsoft.Authorization/roleAssignments/write eylemini gerçekleştirme yetkisi yok" hatasını belirten bir ileti görürsünüz. Rolleri yönetmek için Microsoft Entra yöneticinize başvurun.

Rol eklemek, önceden atanmış izinleri kısıtlamaz . 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şkilendirilen değere ve orada oluşturulmuş olduğu kiracıya ihtiyacınız vardır applicationId.

Parola kullanarak hizmet sorumlusuyla 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 sertifika parmak izini temel alarak yerel bir sertifika deposundan bilgi alabilmesini 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

Bir hizmet sorumlusunun kimlik bilgilerini unutursanız New-AzADSpCredential komutunu kullanarak rastgele bir parolayla yeni bir kimlik bilgisi ekleyin. Bu cmdlet, parola sıfırlandığında kullanıcı tanımlı kimlik bilgilerini desteklemez.

Önemli

Yeni kimlik bilgileri atamadan önce, mevcut kimlik bilgilerini kaldırarak oturum açmalarını engellemek isteyebilirsiniz. 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 mevcut.", aynı ada sahip bir hizmet ilkesinin mevcut olmadığını doğrulayın.

Get-AzAdServicePrincipal -DisplayName ServicePrincipalName

Mevcut hizmet sorumlusu artık gerekli değilse, aşağıdaki örneği kullanarak kaldırabilirsiniz.

Remove-AzAdServicePrincipal -DisplayName ServicePrincipalName

Bu hata, daha önce bir Azure Active Directory uygulaması için hizmet sorumlusu oluşturduğunuzda da oluşabilir. Hizmet sorumlusunu kaldırırsanız, uygulama hala kullanılabilir durumda olur. 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 bir uygulama varsa ve artık gerekli değilse, aşağıdaki örnek kullanılarak kaldırılabilir.

Remove-AzADApplication -DisplayName ServicePrincipalName

Aksi takdirde, oluşturmaya çalıştığınız yeni hizmet sorumlusu için alternatif bir ad seçin.