Utwórz główną usługę i klucz
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ć główny element usługi i nadać jej klucz.
Zrozum, jak uwierzytelniane są jednostki 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 to działa, kiedy logujesz 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.
Notatka
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ą kryptograficznie 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.
Notatka
Traktuj klucze jak bardzo ważne hasła, podobnie jak klucze konta magazynowego. 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 za pomocą certyfikatu, działa to w zasadzie tak samo jak każda inna jednostka usługi pod względem zarządzania nią i udzielania jej uprawnień do twojego potoku.
Notatka
Certyfikaty są dobrym rozwiązaniem, gdy można ich używać. Trudniej jest napastnikom je ukraść. 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 podmiotów usługi
Podczas tworzenia jednostki usługi zazwyczaj prosisz platformę Azure o utworzenie klucza w tym samym czasie. Platforma Azure zwykle generuje losowy klucz.
Notatka
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 głównej 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 za pomocą poczty e-mail ani innych niezabezpieczonych środków. 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 twojej jednostki usługi. Nigdy nie przechowuj poświadczeń dowolnego rodzaju w systemie kontroli wersji. Zamiast tego użyj 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 i zarządzisz zasadami usługi, aby lepiej zrozumieć, co się dzieje. W innych modułach użyjesz metody automatycznego tworzenia dla uproszczenia.
Utwórz jednostkę usługi i klucz
Interfejs wiersza polecenia platformy Azure umożliwia tworzenie jednostek usługi i zarządzanie nimi.
Notatka
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 polecenia az ad sp create-for-rbac
. To polecenie przyjmuje kilka argumentów i może dodatkowo przypisywać role do głównej jednostki usługi. Ten temat znajdziesz w dalszej części tego modułu. Na razie oto przykład, który pokazuje, jak utworzyć główną tożsamość usługi bez przypisywania żadnych ról 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 dla reprezentanta usługi. Nie możesz ponownie pobrać tego klucza, więc pamiętaj, aby użyć go natychmiast lub zapisać go gdzieś bezpiecznie.
Notatka
Polecenie az ad sp create-for-rbac
tworzy rejestrację aplikacji w usłudze Microsoft Entra ID, dodaje jednostkę usługi do dzierżawy firmy Microsoft Entra i tworzy klucz rejestracji aplikacji. Inne polecenie, az ad sp create
, tworzy tylko główną usługę w dzierżawie (a nie rejestrację aplikacji). Podczas tworzenia pryncypałów usługi dla potoków az ad sp create-for-rbac
jest zwykle najlepszym poleceniem do wykonania.
Polecenia cmdlet programu Azure PowerShell umożliwiają tworzenie jednostek usługi i zarządzanie nimi.
Notatka
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 polecenia cmdlet New-AzADServicePrincipal
. To polecenie cmdlet akceptuje kilka argumentów i może opcjonalnie przypisywać role do głównego podmiotu 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 zmienną servicePrincipal
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.
Notatka
Polecenie cmdlet New-AzADServicePrincipal
tworzy rejestrację aplikacji w usłudze Microsoft Entra ID, 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 główny obiekt usługi mają własne oddzielne identyfikatory obiektów, które są unikatowymi identyfikatorami przypisanymi przez Microsoft Entra ID. Czasami podczas zarządzania jednostką usługi należy użyć tych identyfikatorów obiektów.
- nazwa wyświetlana: jest to nazwa, która opisuje główny element usługi i jest czytelna dla człowieka.
Napiwek
Użyj jasnej, opisowej nazwy wyświetlanej jednostki usługi. Ważne jest, aby pomóc swojemu zespołowi zrozumieć, do czego służy jednostka usługi, aby nikt przypadkowo jej nie usunął lub nie zmienił jej uprawnień.
Ostrożność
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 obiektu usługi zwykle ustawia się jedynie 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 zakończeniu ważności klucz przestaje działać i potok nie może zalogować się do Microsoft Entra ID. Należy regularnie odnawiać lub zmieniać klucze.
Ostrożność
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 polecenia az ad sp
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 głównego elementu usługi w dwóch oddzielnych krokach, używając polecenia az ad sp credential delete
, a następnie az ad sp credential reset --append
.
Aby zresetować klucz dla jednostki usługi, najpierw użyj polecenia cmdlet Remove-AzADServicePrincipalCredential
, aby usunąć istniejące poświadczenia. Następnie użyj polecenia cmdlet New-AzADServicePrincipalCredential
, aby dodać nowe poświadczenie. Te dwa polecenia cmdlet używają identyfikatora obiektu podmiotu zabezpieczeń, 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 głównej jednostki usługi
Ważne jest, aby wziąć pod uwagę cały cykl życia każdej jednostki głównej usługi, którą tworzysz. 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 zasady usługi z tego samego powodu, dla którego usuwa się stare konta użytkowników: osoby atakujące mogą uzyskać dostęp do ich kluczy. Najlepiej nie mieć poświadczeń, które nie są aktywnie używane.
Dobrym rozwiązaniem jest dokumentowanie głównych zasad usługi w miejscu, do którego ty i Twój zespół mogą łatwo uzyskiwać dostęp. Dla każdej głównej 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.
- Kto go utworzył, kto jest odpowiedzialny za zarządzanie nim i jego kluczami oraz kto może mieć odpowiedzi, jeśli występuje problem.
- Uprawnienia, których potrzebuje, oraz wyraźne uzasadnienie, dlaczego ich potrzebuje.
- Jaki jest oczekiwany okres istnienia.
Należy regularnie przeprowadzać audyt doradców usług, aby upewnić się, że są one nadal używane i że przypisane im uprawnienia są nadal poprawne.