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:
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ý:
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.