V nedávné aktualizaci Windows Azure služby umožnil Microsoft nastavit Access Control List (ACL) pro přístup k virtuálním strojům v Azure přes Public Endpointy.

Co lze pomocí Azure ACL nastavit:

  • Můžeme na daný Azure virtuální stroj a jeho konkrétní port povolit komunikaci z vybraného rozsahu IP adres
  • Zablokovat komunikaci z rozsahu IP adres
  • Můžeme vytvořit až 50 pravidel na Endpoint virtuálního stroje
  • Můžeme nastavit pořadí pravidel tak, abychom zajistili správnou funkci

Jak nastavit ACL

Azure ACL je možné zatím nastavit pouze přes Azure PowerShell.

Pro testovací účely jsem založil v Windows Azure testovací Windows Server stroj, kde jsem povolil Telnet Server.

Poté jsem vytvořil nový Azure Endpoint pro přístup na port Telnet serveru – Endpoint můžeme nastavit buď přes GUI nebo pomocí PowerShell. Pomocí PS můžeme použít následující:

Get-AzureVM -ServiceName TestServer |Add-AzureEndpoint -Name Telnet -Protocol tcp -PublicPort 23 -LocalPort 23|Update-AzureVM

Kde PublicPort je port, na který se budeme ke službě připojovat, a LocalPort je lokální port, na kterém běží služba. Můžeme tedy „zamaskovat“ skutečný port, na kterém služba běží.

Po konfiguraci Endpointu je možné ověřit komunikaci na Telnet server:

image

Azure ACL poté nastavíme následovně. Jako příklad použiji stav, kdy chci povolit připojení na Telnet server pouze z „mé“ IP adresy xx.168.58.210

$acl=New-AzureAclConfig

Set-AzureAclConfig -AddRule -ACL $acl -Order 200 -Action Permit -RemoteSubnet xx.168.58.210/32 -Description "Permit IP"

Get-AzureVM -Name TestServer -ServiceName TestServer|set-AzureEndpoint -Name telnet -ACL $acl -Protocol tcp -LocalPort 23 -PublicPort 23 |Update-AzureVM

Po aplikaci ACL na Telnet Endpoint je stále možné přistoupit na Telnet port z „mé“ IP adresy. Ale pokud zkusím přístup z jiné, tak přístup není možný:

image

Další body na zvážení:

  • No ACL – základní nastavení po vytvoření Endpointu je bez ACL, což znamená, že přístup mají všichni
  • Permit – po přidání jedné IP adresy nebo rozsahu IP adres s parametrem Permit (viz příklad výše) dojde k zakázaní komunikace, ze všech ostatních IP adres
  • Deny – po přidání jedné IP adresy nebo rozsahu IP adres s parametrem Deny je povolena komunikace ze všech ostatních IP adres
  • Kombinace Permit a Deny – je možné použít jakoukoliv kombinaci Permit a Deny pravidel, typicky například pro situaci, kdy je potřeba zakázat komunikaci z části povolené IP sítě – pravidla z nižším „Order“ mají vyšší prioritu
  • IP adresy nebo rozsahy je třeba zadávat v CIDR formátu např. 10.10.10.0/24

Závěrem uvádím přehled cmdlets, které umožňují konfiguraci ACL

  • New-AzureACLConfig
  • Get-AzureACLConfig [-VM ] [-EndpointName ]
  • Remove-AzureACLConfig [-VM ] [-EndpointName ]
  • Set-AzureAclConfig [-AddRule ] [-RemoveRule] [-SetRule ]
  • [-ACL ] [-RuleID ] [-Order ] [-Action ] [-RemoteSubnet ] [-Description ]
  • Add-AzureEndpoint (-ACL Parameter)
  • Set-AzureEndpoint (-ACL Parameter)

ACL jsou vítaným rozšířením Windows Azure služby, které umožňují například ochránit port, na kterém běží administrace dané aplikace, nebo povolit přístup pouze z firemních IP adres, pokud je služba běžící v Azure určena pouze přístup z interní sítě společnosti.

Ondřej Štefka
Mainstream Technologies