Czym jest Azure Bastion i jak działa?

Najprościej mówiąc Azure Bastion jest usługą PaaS która służy do bezpiecznego łączenia się z maszynami wirtualnymi. Zastępuje ona Jump Hosta, czyli osobną wirtualną maszynę za pomocą której łączyliśmy się do pozostałych maszyn niedostępnych publicznie. Dzięki temu odpada nam dbanie o bezpieczeństwo takiej maszyny, jedyne co nam pozostaje to zarządzanie usługą jak każdą inną w Azure.
Całe połączenie odbywa się z poziomu samego portalu Azure. Inicjując połączenie, przeglądarka łączy się do hosta Azure Bastiona za pomocą bezpiecznego połączenia z wykorzystaniem protokołu TLS. Następnie usługa, wykorzystując prywatną sieć, łączy się do danej maszyny używając połączenia RDP/SSH, a tak pobrane dane są przesyłane strumieniowo przez bastiona do naszej przeglądarki.

Zalety

  • wykorzystanie IAM do zarządzania dostępem
  • cały ruch pomiędzy Azure Bastion a VM odbywa się poprzez sieć prywatną
  • brak publicznie dostępnych portów RDP oraz SSH, a więc zabezpieczany się przed skanowaniem portów
  • aktualizacje oraz wgrywanie łatek bezpieczeństwa zapewnione przez Azure
  • monitorowanie połączeń zdalnych na bieżąco
  • audyt logów – włączając diagnostic settings mamy możliwość przeglądania logów dotyczących sesji do maszyn

Wady

  • koszt
  • Azure Bastion działa tylko w obrębie danej sieci wirtualnej oraz sieci połączonych za pomocą peeringu, więc mając kilka osobnych sieci musimy do każdej utworzyć bastiona – a to może znacząco zwiększyć koszty
  • brak niektórych funkcjonalności znanych z bezpośredniego połączenia się poprzez pulpit zdalny jak chociażby kopiowanie plików

Wymagania

Aby skorzystać z usługi w wirtualnej sieci musimy zarezerwować specjalną podsieć o nazwie AzureBastionSubnet, dzięki której uzyskuje ona dostęp do maszyn wirtualnych w danej sieci oraz połączonych sieci za pomocą peeringu.

Demo

W celu zaprezentowania działania usługi utworzyłem wirtualną maszynę bez publicznego IP.
1. Przechodzimy do panelu wirtualnej maszyny, następnie w Operations -> Bastion.

Azure Bastion VM panel

2. Pierwszym krokiem, w celu utworzenia usługi, jest rozszerzenie przestrzeni adresowej naszej sieci wirtualnej.

Expand vnet address space

3. Tworzymy podsieć AzureBastionSubnet.

Create AzureBastionSubnet subnet

4. Konfigurujemy i tworzymy usługę.

Create Azure Bastion service

5. Po utworzeniu zostajemy przeniesieni do panelu za pomocą którego możemy się zalogować do maszyny.

Login to VM using Azure Bastion

6. Po wprowadzeniu danych przenosimy się do nowej karty, gdzie mamy bezpieczny dostęp do maszyny wirtualnej poprzez sieć prywatną.

Connection to VM

Jak widać całe połączenie odbywa się za pomocą przeglądarki, a maszyna do której jesteśmy podłączeni ma tylko i wyłącznie prywatne adresy IP.