Tworzenie jednostki usługi i klucza
Teraz, gdy rozumiesz koncepcję jednostki usługi, możesz się zastanawiać, w jaki sposób potwierdza swoją tożsamość identyfikatorowi Entra firmy Microsoft. W tej lekcji dowiesz się więcej na temat procesu uwierzytelniania i poświadczeń dla jednostek usługi. Dowiesz się również, jak utworzyć jednostkę usługi i nadać mu klucz.
Informacje o sposobie uwierzytelniania jednostek usługi
Gdy jednostka usługi musi komunikować się z platformą Azure, loguje się do identyfikatora Entra firmy Microsoft. Gdy identyfikator entra firmy Microsoft weryfikuje tożsamość jednostki usługi, wystawia token , który aplikacja kliencka przechowuje i używa, gdy wysyła żądania do platformy Azure.
Mówiąc ogólnie, ten proces jest podobny do tego, jak działają elementy podczas logowania się do platformy Azure jako użytkownik. Jednak w porównaniu z użytkownikami jednostki usługi mają nieco inny typ poświadczeń, aby potwierdzić swoją tożsamość. Jednostki usługi używają dwóch głównych poświadczeń: kluczy i certyfikatów.
Uwaga
Pamiętaj, że tożsamości zarządzane są specjalnymi jednostkami usługi, które działają na platformie Azure. Mają inny typ procesu uwierzytelniania, który w ogóle nie wymaga znajomości ani obsługi poświadczeń.
Klucze
Klucze są podobne do haseł. Jednak klucze są znacznie dłuższe i bardziej złożone. W większości sytuacji identyfikator Entra firmy Microsoft generuje klucze, aby upewnić się, że:
- Klucze są losowo losowe. To znaczy, że są bardzo trudne do zgadnięcia.
- Ludzie nie używają przypadkowo słabych haseł jako kluczy.
Jednostki usługi często mają wysoce uprzywilejowane uprawnienia, dlatego ważne jest, aby były bezpieczne. Zazwyczaj wystarczy krótko obsłużyć klucz podczas pierwszego konfigurowania jednostki usługi i potoku. Więc klucz nie musi być niezapomniany ani łatwy do wpisania.
Pojedyncza jednostka usługi może mieć wiele kluczy jednocześnie, ale użytkownicy nie mogą mieć wielu haseł. Podobnie jak hasła, klucze mają datę wygaśnięcia. Wkrótce dowiesz się więcej o tym.
Uwaga
Pomyśl o kluczach, takich jak bardzo ważne hasła, podobnie jak klucze konta magazynu. Należy traktować je z tym samym poziomem bezpieczeństwa i opieki.
Certyfikaty
Certyfikaty to inny sposób uwierzytelniania jednostek usługi. Są one bardzo bezpieczne, ale mogą być trudne do zarządzania. Niektóre organizacje wymagają użycia certyfikatów dla niektórych typów jednostek usługi.
W tym module nie omówimy certyfikatów. Jeśli jednak pracujesz z jednostką usługi korzystającą z uwierzytelniania certyfikatu, działa to w zasadzie tak samo jak każda inna jednostka usługi pod względem zarządzania nią i udzielania mu uprawnień do potoku.
Uwaga
Certyfikaty są dobrym rozwiązaniem, gdy można ich używać. Są trudniejsze dla napastników do kradzieży. Trudniej jest również przechwytywać i modyfikować żądania korzystające z certyfikatów. Jednak certyfikaty wymagają większej infrastruktury i mają pewne bieżące koszty konserwacji.
Praca z kluczami dla jednostek usługi
Podczas tworzenia jednostki usługi zazwyczaj prosisz platformę Azure o utworzenie klucza w tym samym czasie. Platforma Azure zwykle generuje losowy klucz.
Uwaga
Pamiętasz naszą wcześniejszą dyskusję na temat sposobu działania jednostek usługi? Klucze są przechowywane jako część obiektu rejestracji aplikacji. Jeśli otworzysz witrynę Azure Portal, przyjrzyj się konfiguracji usługi Microsoft Entra, a następnie przejdź do rejestracji aplikacji, możesz również utworzyć i usunąć klucze.
Platforma Azure wyświetla klucz podczas tworzenia jednostki usługi. Jest to jedyny czas, w którym platforma Azure kiedykolwiek pokaże Ci klucz. Następnie nie można go już pobrać. Ważne jest, aby bezpiecznie skopiować klucz, aby można było go użyć podczas konfigurowania potoku. Nie udostępniaj klucza pocztą e-mail ani innemu niezabezpieczeniu. Jeśli utracisz klucz, musisz go usunąć i utworzyć nowy.
Zarządzanie jednostkami usługi dla usługi Azure Pipelines
Podczas tworzenia klucza dla jednostki usługi potoku dobrym pomysłem jest natychmiastowe skopiowanie klucza do konfiguracji potoku. W ten sposób unikasz niepotrzebnego przechowywania lub przesyłania klucza.
Narzędzia potoku obejmują bezpieczne sposoby określania identyfikatora aplikacji i klucza jednostki usługi. Nigdy nie przechowuj poświadczeń dowolnego rodzaju w kontroli źródła. Zamiast tego należy używać połączeń usługi podczas pracy z usługą Azure Pipelines. W tym module omówimy tylko sposób tworzenia jednostki usługi i klucza. Dowiesz się, jak skonfigurować potok przy użyciu klucza w późniejszym module.
Napiwek
Usługa Azure Pipelines może automatycznie tworzyć jednostki usługi. W tym module ręcznie utworzysz jednostki usługi i zarządzasz nimi, aby lepiej zrozumieć, co się dzieje. W innych modułach użyjesz metody automatycznego tworzenia dla uproszczenia.
Tworzenie jednostki usługi i klucza
Interfejs wiersza polecenia platformy Azure umożliwia tworzenie jednostek usługi i zarządzanie nimi.
Uwaga
Tworzenie i modyfikowanie jednostek usługi wymaga posiadania powiązanych uprawnień w identyfikatorze Entra firmy Microsoft. W niektórych organizacjach może być konieczne wykonanie tych kroków przez administratora.
Aby utworzyć jednostkę usługi i klucz, użyj az ad sp create-for-rbac
polecenia . To polecenie akceptuje kilka argumentów i opcjonalnie może przypisywać role do jednostki usługi. Ten temat znajdziesz w dalszej części tego modułu. Oto przykład przedstawiający sposób tworzenia jednostki usługi bez przypisań ról platformy Azure:
az ad sp create-for-rbac --name MyPipeline
Po uruchomieniu tego polecenia interfejs wiersza polecenia platformy Azure zwraca odpowiedź JSON z właściwością password
. Ta właściwość jest kluczem jednostki usługi. Nie możesz ponownie pobrać tego klucza, więc pamiętaj, aby użyć go natychmiast lub zapisać go gdzieś bezpiecznie.
Uwaga
Polecenie az ad sp create-for-rbac
tworzy rejestrację aplikacji w identyfikatorze Entra firmy Microsoft, dodaje jednostkę usługi do dzierżawy firmy Microsoft Entra i tworzy klucz rejestracji aplikacji. Inne polecenie , az ad sp create
, tworzy tylko jednostkę usługi w dzierżawie (a nie rejestrację aplikacji). Podczas tworzenia jednostek usługi dla potoków az ad sp create-for-rbac
jest zwykle najlepszym poleceniem do użycia.
Polecenia cmdlet programu Azure PowerShell umożliwiają tworzenie jednostek usługi i zarządzanie nimi.
Uwaga
Tworzenie i modyfikowanie jednostek usługi wymaga posiadania powiązanych uprawnień w identyfikatorze Entra firmy Microsoft. W niektórych organizacjach może być konieczne wykonanie tych kroków przez administratora.
Aby utworzyć jednostkę usługi i klucz, użyj New-AzADServicePrincipal
polecenia cmdlet . To polecenie cmdlet akceptuje kilka argumentów i opcjonalnie może przypisywać role do jednostki usługi. Ten temat znajdziesz w dalszej części tego modułu. Oto przykład przedstawiający sposób tworzenia jednostki usługi bez przypisań ról platformy Azure:
$servicePrincipal = New-AzADServicePrincipal -DisplayName MyPipeline
Po uruchomieniu tego polecenia program Azure PowerShell wypełnia servicePrincipal
zmienną informacjami o jednostce usługi, w tym kluczem:
$servicePrincipalKey = $servicePrincipal.PasswordCredentials.SecretText
Nie można ponownie pobrać tego klucza, więc pamiętaj, aby użyć go natychmiast lub zapisać go gdzieś bezpiecznie.
Uwaga
Polecenie New-AzADServicePrincipal
cmdlet tworzy rejestrację aplikacji w identyfikatorze Entra firmy Microsoft, dodaje jednostkę usługi do dzierżawy firmy Microsoft Entra i tworzy klucz rejestracji aplikacji.
Identyfikowanie jednostki usługi
Jednostki usługi mają kilka identyfikatorów i nazw, których używasz do identyfikowania i pracy z nimi. Identyfikatory, których używasz najwięcej, to:
- Identyfikator aplikacji: Rejestracja aplikacji ma unikatowy identyfikator, często nazywany identyfikatorem aplikacji lub czasami identyfikatorem klienta. Zazwyczaj używasz jej jako nazwy użytkownika, gdy jednostka usługi loguje się na platformie Azure.
- Identyfikator obiektu: rejestracja aplikacji i jednostka usługi mają własne oddzielne identyfikatory obiektów, które są unikatowymi identyfikatorami przypisanymi przez identyfikator firmy Microsoft Entra. Czasami podczas zarządzania jednostką usługi należy użyć tych identyfikatorów obiektów.
- Nazwa wyświetlana: jest to nazwa czytelna dla człowieka, która opisuje jednostkę usługi.
Napiwek
Użyj jasnej, opisowej nazwy wyświetlanej jednostki usługi. Ważne jest, aby pomóc zespołowi zrozumieć, do czego służy jednostka usługi, aby nikt przypadkowo go nie usunął lub zmienił swoje uprawnienia.
Uwaga
Nazwa wyświetlana nie jest unikatowa. Wiele jednostek usługi może współdzielić tę samą nazwę wyświetlaną. Należy zachować ostrożność podczas udzielania uprawnień jednostce usługi przy użyciu jej nazwy wyświetlanej w celu jego identyfikacji. Być może przypadkowo nadasz uprawnienia niewłaściwej jednostce usługi. Dobrym rozwiązaniem jest użycie identyfikatora aplikacji.
Podczas tworzenia jednostki usługi zazwyczaj ustawia się tylko nazwę wyświetlaną. Platforma Azure automatycznie przypisuje inne nazwy i identyfikatory.
Obsługa wygasłych kluczy
Jednostki usługi nie wygasają, ale ich klucze działają. Podczas tworzenia klucza można skonfigurować jego czas wygaśnięcia. Domyślnie czas wygaśnięcia jest ustawiony na jeden rok. Po upływie tego czasu wygaśnięcia klucz nie działa i potok nie może zalogować się do identyfikatora Entra firmy Microsoft. Należy regularnie odnawiać lub wymieniać klucze.
Uwaga
Może to być kuszące, aby ustawić długie czasy wygaśnięcia kluczy, ale nie należy tego robić. Jednostki usługi są chronione tylko przez ich poświadczenia. Jeśli osoba atakująca uzyska klucz jednostki usługi, może zrobić wiele szkód. Najlepszym podejściem do zminimalizowania okresu, w jaki może trwać atak, jest regularne zmienianie kluczy. Należy również usunąć i ponownie utworzyć klucze, jeśli kiedykolwiek podejrzewasz, że zostały ujawnione.
Aby zresetować klucz jednostki usługi, użyj az ad sp
polecenia z identyfikatorem aplikacji, jak w tym przykładzie:
az ad sp credential reset --id "b585b740-942d-44e9-9126-f1181c95d497"
Możesz również usunąć i ponownie utworzyć klucz jednostki usługi w dwóch oddzielnych krokach przy użyciu az ad sp credential delete
poleceń i az ad sp credential reset --append
.
Aby zresetować klucz dla jednostki usługi, najpierw użyj Remove-AzADServicePrincipalCredential
polecenia cmdlet , aby usunąć istniejące poświadczenia. Następnie użyj polecenia cmdlet , New-AzADServicePrincipalCredential
aby dodać nowe poświadczenia. Te polecenia cmdlet używają identyfikatora obiektu jednostki usługi, aby go zidentyfikować. Przed użyciem poleceń cmdlet należy uzyskać ten identyfikator z identyfikatora aplikacji:
$applicationId = APPLICATION_ID
$servicePrincipalObjectId = (Get-AzADServicePrincipal -ApplicationId $applicationId).Id
Remove-AzADServicePrincipalCredential -ObjectId $servicePrincipalObjectId
$newCredential = New-AzADServicePrincipalCredential -ObjectId $servicePrincipalObjectId
$newKey = $newCredential.SecretText
Napiwek
Jedna jednostka usługi może mieć wiele kluczy. Możesz bezpiecznie zaktualizować aplikację, aby użyć nowego klucza, gdy stary klucz jest nadal prawidłowy, a następnie usunąć stary klucz, gdy nie jest już używany. Ta technika pozwala uniknąć przestojów po wygaśnięciu klucza.
Zarządzanie cyklem życia jednostki usługi
Ważne jest, aby wziąć pod uwagę cały cykl życia każdej tworzonej jednostki usługi. Co się stanie po utworzeniu jednostki usługi dla potoku, co się stanie, jeśli potok zostanie ostatecznie usunięty lub nie będzie już używany?
Jednostki usługi nie są usuwane automatycznie, dlatego należy przeprowadzić inspekcję i usunąć stare jednostki usługi. Ważne jest, aby usunąć stare jednostki usługi z tego samego powodu, że usunięto stare konta użytkowników: osoby atakujące mogą uzyskać dostęp do swoich kluczy. Najlepiej nie mieć poświadczeń, które nie są aktywnie używane.
Dobrym rozwiązaniem jest dokumentowanie jednostek usługi w miejscu, do którego ty i Twój zespół mogą łatwo uzyskiwać dostęp. Dla każdej jednostki usługi należy uwzględnić następujące informacje:
- Podstawowe informacje identyfikujące, w tym jego nazwę i identyfikator aplikacji.
- Cel jednostki usługi.
- KtoTo go utworzył, kto jest odpowiedzialny za zarządzanie nim i jego kluczami oraz kto może mieć odpowiedzi, jeśli wystąpi problem.
- Uprawnienia, których potrzebuje, oraz wyraźne uzasadnienie, dlaczego ich potrzebuje.
- Jaki jest oczekiwany okres istnienia.
Należy regularnie przeprowadzać inspekcję jednostek usługi, aby upewnić się, że są one nadal używane i czy przypisane przez nich uprawnienia są nadal poprawne.