Profil logowania do Azure

Spotkałem się ostatnio z bardzo ciekawym feature’m związanym z zapisaniem swojego profilu logowania do Azure. W skrócie opisując jeśli używasz często PowerShella, a dodatkowo masz MFA zapewne wiesz jak denerwujące jest ciągłe pytanie o login i hasło. Kiedyś pojawiła się opcja związana z zapisaniem credential’i do pliku a następnie za pomocą skryptu można było sobie zautomatyzować proces logowania. Aczkolwiek przestało to działać po wprowadzeniu ARM’a itd. Aby nie rozwodzić się nad tym przedstawię Ci jak możemy sobie ułatwić życie i pracę ze skryptami, ale o tym później. Na początku proszę Cię o wykonanie aktualizacji PowerShell Azure ponieważ poniższe polecenia są dostępne od wersji 3.8.0 oraz 4.2.0 w celu aktualizacji możesz użyć Web Installer’a z linku poniżej.

Dokumentacja:
Add-AzureRmAccount: https://docs.microsoft.com/en-us/powershell/module/azurerm.profile/add-azurermaccount?view=azurermps-3.8.0
Save-AzureRmContext: https://docs.microsoft.com/en-us/powershell/module/azurerm.profile/save-azurermcontext?view=azurermps-3.8.0
Import-AzureRmContext: https://docs.microsoft.com/en-us/powershell/module/azurerm.profile/import-azurermcontext?view=azurermps-4.2.0
WebInstaller: https://www.microsoft.com/web/downloads/platform.aspx

W moim przypadku mamy dwie subskrypcje i zapisując swój profil mogę zdefiniować jaka ma zostać wybrana subskrypcja w momencie kiedy będę go importował w dalszej części. Na początku pobiore ID Subskrypcji w klasyczny sposób: otwieram okno PowerShella loguję się używając Login-AzureRmAccount, a następnie wpisuję Get-AzureRmSubscrpytion i dostaje taki wynik:

Następnie mogę przejść do wykonania polecenia, które mnie zaloguje, a później umożliwi mi zapisanie profilu:

Add-AzureRmAccount -SubscriptionId "yyyy-yyyy-yyyy-yyyy"

Wynik:

Następne polecenie – zapisanie profilu:

Save-AzureRmContext -Path C:\temp\progala-mas.json

W tym momencie zapisałem swój profil z odwołaniem do wcześniej wskazanej subskrypcji. Jako hint mogę powiedzieć, że możemy użyć funkcji 2w1 jak poniżej:

Save-AzureRmContext -Profile (Add-AzureRmAccount -SubscriptionId "yyyy-yyyy-yyyy-yyyy") -Path C:\temp\progala-mas.json

Żeby móc zaimportować zapisany profil wystarczy użyć polecenia:

Import-AzureRmContext -Path C:\temp\progala-mas.json

W taki sposób możemy swój profil wywołać gdy korzystamy z róznych skryptów itp. Może to być dla kogoś mało atrakcyjne aczkolwiek mogę zdradzić do czego bardzo ta wiedza się przydaje. Mając zagnieżdżone skrypty PowerShellow’e, które wykonuję jako Job’y mają one to do siebie, że wywołane skrypty w tle mają problem z przejęciem sesji z poprzedniego okna gdyż sesja nie jest dziedziczona. Gdy użyjemy polecenia Import-AzureRmContex mamy “gwarancję”, że wywołane okno w tle będzie mogło swobodnie korzystać z sesji Azure’owej.

 

4 thoughts on “Profil logowania do Azure

  1. Można też w następujący sposób wczytując z KeyVaulta lub innego źródła typu network password manager.

    $PlainPassword = “”
    $SecurePassword = $PlainPassword | ConvertTo-SecureString -AsPlainText -Force

    $UserName = “[email protected]
    $Credentials = New-Object System.Management.Automation.PSCredential `
    -ArgumentList $UserName, $SecurePassword

    Login-AzureRmAccount -Credential $Credentials

  2. Jak ktoś ma 10 subskrypcji podłączonych do konta i chciałby po nich wszystkich przelecieć tym skryptem? 😉

    Wtedy ten import – ma tylko 1 sub, a zalogowanie daje nam dostęp do wszystkich, gdzie łatwo się przełączyć….

    1. Tak import jest per jedna subkrypcja, ale możesz zapisać wszystkie jakie masz. Poza tym jak już zaimportujesz to jesteś zalogowany i przłączać się możesz między subskrypcjami w tradycyjny sposób. Każda metoda jest dobra 🙂 zależy kto co potrzebuje. Dzięki za komentarz!

Leave a Reply