Udostępnij za pomocą


Tworzenie jednostki usługi platformy Azure przy użyciu programu Azure PowerShell

Zautomatyzowane narzędzia korzystające z usług platformy Azure powinny zawsze mieć ograniczone uprawnienia. Zamiast logowania się do aplikacji jako w pełni uprzywilejowany użytkownik, platforma Azure oferuje nazwy głównej usługi.

Jednostka usługi platformy Azure to tożsamość utworzona do użycia z aplikacjami, hostowanymi usługami i zautomatyzowanymi narzędziami w celu uzyskania dostępu do zasobów platformy Azure. Ten dostęp jest ograniczony przez role przypisane do jednostki usługi, zapewniając kontrolę nad tym, do których zasobów można uzyskiwać dostęp i na jakim poziomie. Ze względów bezpieczeństwa zawsze zaleca się używanie jednostek usługi z zautomatyzowanymi narzędziami, a nie zezwalanie im na logowanie się przy użyciu tożsamości użytkownika.

W tym artykule przedstawiono kroki tworzenia, uzyskiwania informacji i resetowania jednostki usługi za pomocą programu Azure PowerShell.

Ostrzeżenie

Podczas tworzenia jednostki usługi przy użyciu polecenia New-AzADServicePrincipal dane wyjściowe zawierają poświadczenia, które należy chronić. Alternatywnie rozważ użycie tożsamości zarządzanych , aby uniknąć konieczności używania poświadczeń.

Wymagania wstępne

Utwórz kierownika usługi

Utwórz jednostkę usługi za pomocą polecenia cmdlet New-AzADServicePrincipal . Podczas tworzenia jednostki usługi należy wybrać typ używanego uwierzytelniania logowania.

Ważne

Począwszy od modułu Az programu PowerShell w wersji 7.x, polecenie New-AzADServicePrincipal nie przypisuje już roli Współautor do jednostki usługi. Aby przypisać określoną rolę do jednostki usługi, zobacz Kroki dodawania przypisania roli.

Uwaga / Notatka

Jeśli Twoje konto nie ma uprawnień do tworzenia głównego użytkownika usługi, New-AzADServicePrincipal zwraca komunikat o błędzie zawierający "Niewystarczające uprawnienia do ukończenia operacji". Skontaktuj się z administratorem Microsoft Entra, aby utworzyć główny element usługi.

W katalogu Microsoft Entra ID, w którym ustawienie użytkownika Użytkownicy mogą rejestrować aplikacje zostało ustawione na Nie, musisz być członkiem jednej z następujących wbudowanych ról microsoft Entra ID (które mają akcję: microsoft.directory/applications/createAsOwner lub microsoft.directory/applications/create):

Aby uzyskać więcej informacji na temat ustawień użytkownika w usłudze Microsoft Entra ID, zobacz Ograniczanie, kto może tworzyć aplikacje.

Istnieją dwa typy uwierzytelniania dostępne dla jednostek usługi: uwierzytelnianie oparte na hasłach i uwierzytelnianie oparte na certyfikatach.

Uwierzytelnianie oparte na hasłach

Ważne

Domyślną rolą jednostki usługi uwierzytelniania opartej na hasłach jest Współautor. Ta rola ma pełne uprawnienia do odczytu i zapisu na koncie platformy Azure. Aby uzyskać informacje na temat zarządzania przypisaniami ról, zobacz Zarządzanie rolami jednostki usługi.

Bez żadnych innych parametrów uwierzytelniania używane jest uwierzytelnianie oparte na hasłach i tworzone jest losowe hasło. Jeśli chcesz użyć uwierzytelniania opartego na hasłach, zalecana jest ta metoda.

$sp = New-AzADServicePrincipal -DisplayName ServicePrincipalName

Zwrócony obiekt zawiera PasswordCredentials.SecretText właściwość zawierającą wygenerowane hasło. Upewnij się, że ta wartość jest przechowywana w bezpiecznym miejscu w celu uwierzytelnienia za pomocą jednostki usługi. Jego wartość nie będzie wyświetlana w danych wyjściowych konsoli. Jeśli utracisz hasło, zresetuj poświadczenia jednostki usługi.

Poniższy kod umożliwia wyeksportowanie wpisu tajnego:

$sp.PasswordCredentials.SecretText

Obiekt zwrócony z New-AzADServicePrincipal elementu zawiera Id elementy członkowskie i DisplayName , których można użyć do logowania się przy użyciu jednostki usługi.

Ważne

Zalogowanie się przy użyciu jednostki usługi wymaga identyfikatora dzierżawy, w ramach którego została utworzona jednostka usługi. Aby uzyskać aktywną dzierżawę po utworzeniu jednostki usługi, uruchom następujące polecenie natychmiast po utworzeniu jednostki usługi:

(Get-AzContext).Tenant.Id

Uwierzytelnianie oparte na certyfikatach

Ważne

Podczas tworzenia jednostki usługi uwierzytelniania opartej na certyfikatach nie ma przypisanej roli domyślnej. Aby uzyskać informacje na temat zarządzania przypisaniami ról, zobacz Zarządzanie rolami jednostki usługi.

Jednostki usługi korzystające z uwierzytelniania opartego na certyfikatach są tworzone za pomocą parametru CertValue . Ten parametr przyjmuje ciąg ASCII zakodowany w formacie base64 certyfikatu publicznego. Jest to reprezentowane przez plik PEM lub kodowany tekstowo CRT lub CER. Kodowanie binarne certyfikatu publicznego nie jest obsługiwane. W tych instrukcjach założono, że masz już dostępny certyfikat.

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

Obiekt zwrócony z New-AzADServicePrincipal zawiera Id właściwości i DisplayName , których można użyć do logowania się przy użyciu jednostki usługi. Klienci, którzy logowali się przy użyciu jednostki usługi, również potrzebują dostępu do klucza prywatnego certyfikatu.

Ważne

Zalogowanie się przy użyciu jednostki usługi wymaga identyfikatora dzierżawy, w ramach którego została utworzona jednostka usługi. Aby uzyskać aktywną dzierżawę po utworzeniu jednostki usługi, uruchom następujące polecenie natychmiast po utworzeniu jednostki usługi:

(Get-AzContext).Tenant.Id

Pobieranie istniejącej jednostki usługi

Listę jednostek usługi dla aktywnej dzierżawy można pobrać za pomocą polecenia Get-AzADServicePrincipal. Domyślnie to polecenie zwraca wszystkie jednostki usługi w dzierżawie. W przypadku dużych organizacji zwracanie wyników może zająć dużo czasu. Zamiast tego zaleca się użycie jednego z opcjonalnych argumentów filtrowania po stronie serwera:

  • DisplayNameBeginsWith żąda jednostek usługi, które mają prefiks zgodny z podaną wartością. Nazwa wyświetlana jednostki usługi jest wartością ustawioną DisplayName podczas tworzenia.
  • DisplayName żąda dokładnego dopasowania nazwy głównej usługi.

Zarządzanie rolami głównej jednostki usługi

Program Azure PowerShell ma następujące polecenia cmdlet do zarządzania przypisaniami ról:

Aby uzyskać więcej informacji na temat kontroli dostępu Role-Based (RBAC) i ról, zobacz Kontrola dostępu oparta na rolach : role wbudowane.

Poniższy przykład dodaje rolę Czytelnik i usuwa rolę Współautor :

New-AzRoleAssignment -ApplicationId <service principal application ID> -RoleDefinitionName 'Reader'
Remove-AzRoleAssignment -ObjectId <service principal object ID> -RoleDefinitionName 'Contributor'

Ważne

Polecenia cmdlet przypisania roli nie przyjmują identyfikatora obiektu jednostki usługi. Przyjmują skojarzony identyfikator aplikacji, który jest generowany w czasie tworzenia. Aby uzyskać identyfikator aplikacji dla jednostki usługi, użyj polecenia Get-AzADServicePrincipal.

Uwaga / Notatka

Jeśli Twoje konto nie ma uprawnień do przypisania roli, zostanie wyświetlony komunikat o błędzie informujący, że twoje konto "nie ma autoryzacji do wykonania akcji "Microsoft.Authorization/roleAssignments/write". Skontaktuj się z administratorem firmy Microsoft Entra, aby zarządzać rolami.

Dodanie roli nie ogranicza wcześniej przypisanych uprawnień. Podczas ograniczania uprawnień jednostki usługi należy usunąć rolę Współautor .

Zmiany można zweryfikować, wyświetlając listę przypisanych ról:

Get-AzRoleAssignment -ServicePrincipalName ServicePrincipalName

Logowanie przy użyciu jednostki usługi

Przetestuj poświadczenia i uprawnienia nowej jednostki usługi, logując się. Aby zalogować się przy użyciu jednostki usługi, potrzebna jest applicationId skojarzona z nią wartość i dzierżawa, w ramach której została utworzona.

Aby zalogować się przy użyciu jednostki usługi przy użyciu hasła:

# Use the application ID as the username, and the secret as password
$credentials = Get-Credential
Connect-AzAccount -ServicePrincipal -Credential $credentials -Tenant <tenant ID>

Uwierzytelnianie oparte na certyfikatach wymaga, aby program Azure PowerShell mógł pobierać informacje z lokalnego magazynu certyfikatów na podstawie odcisku palca certyfikatu.

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

Aby uzyskać instrukcje dotyczące importowania certyfikatu do magazynu poświadczeń dostępnego w programie PowerShell, zobacz Uwierzytelnianie oparte na certyfikatach

Resetowanie poświadczeń

Jeśli zapomnisz poświadczenia dla jednostki usługi, użyj polecenia New-AzADSpCredential , aby dodać nowe poświadczenie z losowym hasłem. To polecenie cmdlet nie obsługuje poświadczeń zdefiniowanych przez użytkownika podczas resetowania hasła.

Ważne

Przed przypisaniem nowych poświadczeń możesz usunąć istniejące poświadczenia, aby zapobiec ich zalogowaniu. W tym celu użyj polecenia cmdlet Remove-AzADSpCredential :

Remove-AzADSpCredential -DisplayName ServicePrincipalName
$newCredential = New-AzADSpCredential -ServicePrincipalName ServicePrincipalName

Rozwiązywanie problemów

Jeśli zostanie wyświetlony błąd : "New-AzADServicePrincipal: Inny obiekt o tej samej wartości dla identyfikatorów właściwości już istnieje"., sprawdź, czy jednostka usługi o tej samej nazwie jeszcze nie istnieje.

Get-AzAdServicePrincipal -DisplayName ServicePrincipalName

Jeśli istniejąca jednostka usługi nie jest już potrzebna, możesz ją usunąć, korzystając z poniższego przykładu.

Remove-AzAdServicePrincipal -DisplayName ServicePrincipalName

Ten błąd może również wystąpić, gdy wcześniej utworzono jednostkę usługi dla aplikacji usługi Azure Active Directory. Jeśli usuniesz jednostkę usługi, aplikacja będzie nadal dostępna. Ta aplikacja uniemożliwia utworzenie innej jednostki usługi o tej samej nazwie.

Możesz użyć następującego przykładu, aby sprawdzić, czy aplikacja Firmy Microsoft Entra o tej samej nazwie nie istnieje:

Get-AzADApplication -DisplayName ServicePrincipalName

Jeśli aplikacja o tej samej nazwie istnieje i nie jest już potrzebna, można ją usunąć, korzystając z poniższego przykładu.

Remove-AzADApplication -DisplayName ServicePrincipalName

W przeciwnym razie wybierz alternatywną nazwę nowej jednostki usługi, którą próbujesz utworzyć.