Azure Hacking – logowanie CLI za pomocą service principala

wpis w: Azure, chmura, migawka, Python | 0

Od kiedy zainteresowałem się chmurą Microsoft Azure początkowe kroki skierowałem do Portalu.

Postawiłem kilka maszyn wirtualnych, strony www, proste funkcje. Następnie spróbowałem  przygotować to samo bez jednego kliknięcia myszą. Do wyboru miałem Powershell i moduł az CLI 2.0 napisany w Pythonie. Wybrałem az.

Pierwsza linia kodu skryptu powołującego chmurową infrastrukturę wyglądała tak.

Pojawia się wtedy komunikat

To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code CCJULN8F8 to authenticate.

Za pomocą podanej strony i kodu autoryzacyjnego muszę wskazać użytkownika , a potem wpisać hasło.

Co zrobić, jeśli chciałbym uniknąć podawania za każdym razem hasła administratora subskrypcji i stworzyć techniczny byt, który pozwoli na wielokrotne uruchamianie np. skryptu wdrożeniowego, oczywiście bez interakcji z wyskakującymi oknami.

Poniżej przedstawiam prosty sposób na skorzystanie z service principala

 

Składnia

Jak widać potrzebne nam będą trzy identyfikatory.

Zacznijmy od TENAND_ID.

Wybieramy menu  Azure Active Directory i zakładkę Properties

azure_sp_1

To, co widzimy w miejscu Directory ID to nasz TENAND_ID. Kopiujemy i zapisujemy sobie na boku.

Pozostałe dwa identyfikatory wymagają stworzenia aplikacji.

Zmieniamy zakładkę Properties na App registrations.

Tworzymy nową aplikację typu Web app/API. Swoją nazwałem deployer. Adres url nie ma znaczenia w naszym zastosowaniu, wpisujemy dowolną wartość.

azure_sp_2

 

Po utworzeniu aplikacji mamy dostęp do identyfikatora APP_ID

azure_sp_3

Kopiujemy Application ID i zachowujemy  w tym samym miejscu co TENANT_ID.

Czas na ostatni identyfikator, czyli KEY. Wchodzimy na zakładkę Keys.

Tworzymy nowy klucz o nazwie np. KeyOne i terminie wygaśnięcia za jeden rok, pole Value zostanie wypełnione po zapisaniu klucza

azure_sp_4

W tym momencie powinniśmy skopiować wartość klucza. Jest to operacja jednorazowa. Portal o tym uczciwie przypomina. Klucz oczywiście można skasować i wygenerować kolejny.

azure_sp_5

Mamy już trzy identyfikatory. Co dalej ?

Spróbujmy połączyć się do subskrypcji z poziomu linii komend.

Po zalogowaniu się pojawi się zwrotny komunikat w postaci JSON

 

Podanie błędnych danych kończy się małą katastrofą z kodem 401.

Spróbujmy stworzyć nową grupę zasobów

Pojawił się komunikat.

Brakuje uprawnień dla naszej aplikacji i słusznie.

Nadajmy uprawnienia dla aplikacji na poziomie subskrypcji.

Dodajemy z poziomu zakładki Access control [IAM] uprawnienia Contributor dla całej subskrypcji.

azure_sp_6

Uruchamiamy ten sam kod i teraz mamy już komunikat zwrotny

Wchodzimy na zakładkę Activity Log naszej nowej grupy zasobów i widać, kto i kiedy utworzył zasób.

azure_sp_7

 

Usuwamy grupę zasobów

To samo można zrobić z poziomu CLI bez korzystania z Portalu, ale o tym innym razem…..

 

Literatura:

https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-create-service-principal-portal

https://docs.microsoft.com/en-us/cli/azure/create-an-azure-service-principal-azure-cli?toc=%2Fazure%2Fazure-resource-manager%2Ftoc.json&view=azure-cli-latest

 

 

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *