Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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
- Jeśli zdecydujesz się używać programu Azure PowerShell lokalnie:
- Zainstaluj moduł Az programu PowerShell.
- Połącz się z kontem platformy Azure przy użyciu polecenia cmdlet Connect-AzAccount .
- Jeśli zdecydujesz się używać usługi Azure Cloud Shell:
- Aby uzyskać więcej informacji, zobacz Omówienie usługi Azure Cloud Shell .
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):
- Programista aplikacji
- Administrator aplikacji
- Administrator aplikacji w chmurze
- Administrator ogólnosystemowy
- Administrator tożsamości hybrydowej
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ąDisplayNamepodczas 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ć.
Azure PowerShell