Kendileriyle Azure hizmet sorumlusu Azure PowerShell

Azure hizmetlerini kullanan otomatik araçların her zaman kısıtlı izinleri olması gerekir. Azure, uygulamaların tümüyle ayrıcalıklı bir kullanıcı olarak oturum açması yerine hizmet sorumluları sunar.

Azure hizmet sorumlusu, uygulamalar, barındırılan hizmetler ve Azure kaynaklarına erişmek üzere otomatik araçlarla kullanmak üzere oluşturulmuş bir kimliktir. Bu erişim, hizmet sorumlusuna atanan roller tarafından kısıtlanmıştır; böylece hangi kaynaklara ve hangi düzeyde erişilebilir olacağını denetlemeye sahip oluruz. Güvenlik nedenleriyle, hizmet sorumlularını kullanıcı kimliğiyle oturum açmalarına izin yerine otomatik araçlarla birlikte kullanmaları önerilir.

Bu makalede, aynı anda bir hizmet sorumlusu oluşturma, alma ve hizmet sorumlusu bilgilerini Azure PowerShell.

Uyarı

New-AzADServicePrincipal komutunu kullanarak bir hizmet sorumlusu oluşturursanız, çıkışta korumanız gereken kimlik bilgileri yer almaktadır. Alternatif olarak, kimlik bilgileri kullanma ihtiyacını önlemek için yönetilen kimlikler kullanmayı düşünün.

Varsayılan olarak, New-AzADServicePrincipal abonelik kapsamında hizmet sorumlusuna Katkıda Bulunan rolünü atar. Güvenliği tehlikeye atılmış bir hizmet sorumlusuyla ilgili risklerinizi azaltmak için, daha belirli bir rol atarak kapsamı bir kaynak veya kaynak grubuyla daraltabilirsiniz. Daha fazla bilgi için bkz. Rol ataması ekleme adımları.

Hizmet sorumlusu oluşturma

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

Not

Hesabınız bir hizmet sorumlusu oluşturma iznine sahip değilse "İşlemi tamamlamak için yetersiz ayrıcalıklar" ifadesini içeren New-AzADServicePrincipal bir hata iletisi döndürür. Hizmet Azure Active Directory yöneticisine başvurabilirsiniz.

Hizmet sorumluları için iki tür kimlik doğrulama vardır: Parola tabanlı kimlik doğrulaması ve sertifika tabanlı kimlik doğrulaması.

Parola tabanlı kimlik doğrulaması

Önemli

Parola tabanlı kimlik doğrulama hizmeti sorumlusu için varsayılan rol Katkıda Bulunan'dır. Bu rolün Azure hesabına okuma ve yazma için tam izinleri vardır. Rol atamalarını yönetme hakkında daha fazla bilgi için bkz. Hizmet sorumlusu rollerini yönetme.

Başka herhangi bir kimlik doğrulama parametresi olmadan, parola tabanlı kimlik doğrulaması ve sizin için rastgele bir parola oluşturulur. Parola tabanlı kimlik doğrulaması istemiyorsanız, bu yöntem önerilir.

$sp = New-AzADServicePrincipal -DisplayName ServicePrincipalName

Döndürülen nesne, Secret oluşturulan parolayı içeren SecureString üyeyi içerir. Hizmet sorumlusuyla kimlik doğrulaması yapmak için bu değeri güvenli bir yerde depolamış olun. Değeri konsol çıkışında görüntülenmez. Parolayı kaybederseniz, hizmet sorumlusu kimlik bilgilerini sıfırlayın.

Aşağıdaki kod gizlileri dışarı aktarmaya olanak sağlar:

$BSTR = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($sp.Secret)
$UnsecureSecret = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)

Kullanıcı tarafından sağlanan parolalar için, PasswordCredential parametre nesneleri Microsoft.Azure.Commands.ActiveDirectory.PSADPasswordCredential alır. Bu nesnelerin geçerli bir ve StartDate EndDate bir metni olması gerekir. Password Parola oluştururken, parola kurallarını ve kısıtlamalarını Azure Active Directory emin olun. Zayıf bir parola kullanmayın veya parolayı yeniden kullanın.

Import-Module -Name Az.Resources # Imports the PSADPasswordCredential object
$credentials = New-Object Microsoft.Azure.Commands.ActiveDirectory.PSADPasswordCredential -Property @{StartDate=Get-Date; EndDate=Get-Date -Year 2024; Password=<Choose a strong password>}
$sp = New-AzAdServicePrincipal -DisplayName ServicePrincipalName -PasswordCredential $credentials

Döndürülen nesne ve üyeleri içerir ve bunlardan biri hizmet sorumlusuyla New-AzADServicePrincipal Id oturum DisplayName açmada kullanılabilir.

Önemli

Hizmet sorumlusuyla oturum açma için, hizmet sorumlusu altında oluşturulan 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ğrulama

Önemli

Sertifika tabanlı kimlik doğrulama hizmeti sorumlusu oluştururken atanan varsayılan rol yoktur. Rol atamalarını yönetme hakkında daha fazla bilgi için bkz. Hizmet sorumlusu rollerini yönetme.

Sertifika tabanlı kimlik doğrulaması kullanan hizmet sorumluları parametreyle CertValue oluşturulur. Bu parametre, genel sertifikanın base64 kodlanmış ASCII dizesini alır. Bu, PEM dosyası ya da metinle kodlanmış CRT veya CER ile temsil edilen bir dosyadır. Ortak sertifikanın ikili kodlamaları destek desteklemez. Bu yönergelerde, zaten uygun bir sertifikanız olduğu varsay varsay açıkmektedir.

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

Nesneleri alan parametreyi KeyCredential de PSADKeyCredential kullanabilirsiniz. Bu nesnelerin geçerli bir , ve üyesinin ortak sertifikanın StartDate EndDate CertValue base64 kodlanmış ASCII dizesine ayarlanmış olması gerekir.

$cert = <public certificate as base64-encoded string>
$credentials = New-Object -TypeName Microsoft.Azure.Commands.ActiveDirectory.PSADKeyCredential -Property @{StartDate=Get-Date; EndDate=Get-Date -Year 2024; KeyId=New-Guid; CertValue=$cert}
$sp = New-AzADServicePrincipal -DisplayName ServicePrincipalName -KeyCredential $credentials

Döndürülen nesne ve üyeleri içerir ve bunlardan biri hizmet sorumlusuyla New-AzADServicePrincipal Id oturum DisplayName açmada kullanılabilir. Hizmet sorumlusuyla oturum alan istemcilerin, sertifikanın özel anahtarına da erişimi vardır.

Önemli

Hizmet sorumlusuyla oturum açma için, hizmet sorumlusu altında oluşturulan 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 bir hizmet sorumlusu alın

Etkin kiracının hizmet sorumlularının listesi Get-AzADServicePrincipal ile alınabilirsiniz. Varsayılan olarak, bu komut kiracının tüm hizmet sorumlularını döndürür. Büyük kuruluşlarda sonuçların geri dönmesi çok uzun zaman alsa da. Bunun yerine, isteğe bağlı sunucu tarafı filtreleme bağımsız değişkenlerinden birinin kullanılması önerilir:

  • DisplayNameBeginsWith sağlanan değerle eşleşmesi için ön eki olan hizmet sorumlularını talep ediyor. Hizmet sorumlusu görünen adı, oluşturma sırasında ayarlanmış DisplayName değerdir.
  • DisplayName hizmet asıl adıyla tam eşleşmesi için istekte bulundur.

Hizmet sorumlusu rollerini yönetme

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

Parola tabanlı kimlik doğrulama hizmeti sorumlusu için varsayılan rol Katkıda Bulunan'dır. Bu rolün Azure hesabına okuma ve yazma için tam izinleri vardır. Okuyucu rolü salt okunur erişimle daha kısıtlayıcıdır. Erişim Denetimi (RBAC) Role-Based hakkında daha fazla bilgi için bkz. RBAC: Yerleşik roller.

Bu ö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 asıl nesne kimliğini almaz. Oluşturma sırasında oluşturulan ilişkili uygulama kimliğini alırlar. Hizmet sorumlusuna uygulama kimliğini almak için, Get-AzADServicePrincipal kullanın.

Not

Hesabınız rol atama iznine sahip değilse, "'Microsoft.Authorization/roleAssignments/write'" eylemini gerçekleştirmek için yetkilendirmeye sahip olmadığını ifade eden bir hata iletisi görüyorsunuz. Rolleri yönetmek Azure Active Directory yöneticinize ulaşın.

Rol ekleme, daha önce atanmış olan izinleri kısıtlamaz. Hizmet sorumlusun izinlerini kısıtlarken, Katkıda Bulunan rolü kaldırılmalıdır.

Atanan roller liste kullanarak değişiklikler doğrulanabilir:

Get-AzRoleAssignment -ServicePrincipalName ServicePrincipalName

Hizmet sorumlusu kullanarak oturum açma

Oturumarak yeni hizmet sorumlusun kimlik bilgilerini ve izinlerini test etmek için. Hizmet sorumlusuyla oturum a imzalamak için, ilgili değerle ilişkilendirilmiş olan değere ve onun applicationId altında oluşturulmuş kiracıya ihtiyacınız vardır.

Parola kullanarak hizmet sorumlusuyla oturum açma:

# 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 başparmak basımlarına dayalı olarak yerel bir sertifika mağazasından bilgi alamıyor.

Connect-AzAccount -ServicePrincipal -Tenant <TenantId> -CertificateThumbprint <Thumbprint> -ApplicationId <ApplicationId>

PowerShell tarafından erişilebilir bir kimlik bilgileri deposuna sertifika aktarma yönergeleri için bkz. Azure PowerShell

Kimlik bilgilerini sıfırlama

Hizmet sorumlusu için kimlik bilgilerini unutursanız, rastgele parolayla yeni bir kimlik bilgisi eklemek için New-AzADSpCredential'i kullanın. Bu cmdlet, parolayı sıfırlarken kullanıcı tanımlı kimlik bilgilerini desteklemez.

Önemli

Yeni kimlik bilgilerini atamadan önce, bu kimlik bilgileriyle oturum açmalarını engellemek için var olan kimlik bilgilerini kaldırmak iyi olabilir. 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: Özellik tanımlayıcısıUris için aynı değere sahip başka bir nesne zaten var." Aynı adı alan bir hizmet sorumlusunın zaten mevcut olmadığını doğrulayın.

Get-AzAdServicePrincipal -DisplayName ServicePrincipalName

Var olan hizmet sorumlusu artık gerekli yoksa, aşağıdaki örneği kullanarak bunu kaldırabilirsiniz.

Remove-AzAdServicePrincipal -DisplayName ServicePrincipalName

Bu hata, daha önce bir Azure Active Directory uygulaması için hizmet sorumlusu oluşturulduğunda de oluşabilir. Hizmet sorumlularını kaldırırsanız uygulama yine kullanılabilir. Bu uygulama, aynı adla başka bir hizmet sorumlusu oluşturmasını engellemez.

Aynı adı kullanan bir Azure Active Directory uygulamasının var olmadığını doğrulamak için aşağıdaki örneği kullanabilirsiniz:

Get-AzADApplication -DisplayName ServicePrincipalName

Aynı adı kullanan bir uygulama varsa ve artık gerekli yoksa, aşağıdaki örnek kullanılarak kaldırılabilir.

Remove-AzADApplication -DisplayName ServicePrincipalName

Aksi takdirde, oluşturmak istediğiniz yeni hizmet sorumlusu için alternatif bir ad seçin.