Aracılığıyla paylaş


Azure PowerShell ile Azure hizmet sorumlusu oluşturma

Azure hizmetlerini kullanan otomatik araçlar her zaman kısıtlı izinlere 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ş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. Microsoft Entra yöneticinizle iletişime geçerek bir hizmet sorumlusu oluşturun.

Microsoft Entra ID dizininde "Kullanıcılar uygulama kaydedebilir" ayarının Hayır olarak ayarlandığı bir durumda, aşağıdaki Microsoft Entra ID yerleşik rollerinden birinin üyesi olmalısınız (şu eylemi içermelidir: veya microsoft.directory/applications/createAsOwner):

Daha fazla bilgi için, Microsoft Entra ID'deki kullanıcı ayarları hakkında Uygulamaları kimlerin oluşturabileceğini kısıtla'ya bakın.

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 Bir Azure hesabını 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

öğesinden New-AzADServicePrincipal döndürülen nesne, hizmet sorumlusuyla oturum açmak için kullanılabilecek ve Id üyelerini içerirDisplayName.

Ö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

öğesinden New-AzADServicePrincipal döndürülen nesne, hizmet sorumlusuyla oturum açmak için kullanılabilecek ve Id özelliklerini içerirDisplayName. 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 sorumlusunun görünen adı, oluşturma sırasında ile DisplayName 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 Erişim Denetimi (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şturma zamanında oluşturulan ilişkili uygulama kimliğini alır. Hizmet sorumlusunun uygulama kimliğini almak için kullanın Get-AzADServicePrincipal.

Uyarı

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.

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şkilendirilmiş değere ve altında oluşturulduğ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'in 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 var." aynı ada sahip bir hizmet sorumlusunun 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.