Konfigurace nebo zakázání vzdáleného přístupu k výpočetním uzlům ve fondu Azure Batch

Služba Batch ve výchozím nastavení umožňuje uživateli uzlu s připojením k síti externí připojení k výpočetnímu uzlu ve fondu Batch. Uživatel se například může připojit přes Vzdálenou plochu (RDP) na portu 3389 k výpočetnímu uzlu ve fondu Windows. Podobně se uživatel ve výchozím nastavení může připojit přes Secure Shell (SSH) na portu 22 k výpočetnímu uzlu ve fondu Linuxu.

Ve vašem prostředí možná budete muset tato výchozí nastavení externího přístupu omezit nebo zakázat. Tato nastavení můžete upravit pomocí rozhraní API služby Batch a nastavit vlastnost PoolEndpointConfiguration .

Konfigurace koncového bodu fondu

Konfigurace koncového bodu se skládá z jednoho nebo několika fondů překladu adres (NAT) front-endových portů. (Nezaměňujte fond překladu adres (NAT) s fondem výpočetních uzlů služby Batch.) Každý fond překladu adres (NAT) nastavíte tak, aby přepsaly výchozí nastavení připojení na výpočetních uzlech fondu.

Každá konfigurace fondu překladu adres (NAT) zahrnuje jedno nebo více pravidel skupiny zabezpečení sítě (NSG). Každé pravidlo NSG povoluje nebo zakazuje určitý síťový provoz do koncového bodu. Můžete povolit nebo zakázat veškerý provoz, provoz identifikovaný značkou služby (například Internet) nebo provoz z konkrétních IP adres nebo podsítí.

Požadavky

  • Konfigurace koncového bodu fondu je součástí konfigurace sítě fondu. Konfigurace sítě může volitelně zahrnovat nastavení pro připojení fondu k virtuální síti Azure. Pokud fond nastavíte ve virtuální síti, můžete vytvořit pravidla NSG, která používají nastavení adresy ve virtuální síti.
  • Při konfiguraci fondu překladu adres (NAT) můžete nakonfigurovat několik pravidel NSG. Pravidla se kontrolují v pořadí podle priority. Jakmile se pravidlo aplikuje, u dalších pravidel se už shoda nekontroluje.

Příklad: Zamítnutí veškerého provozu protokolu RDP

Následující fragment kódu C# ukazuje, jak nakonfigurovat koncový bod RDP na výpočetních uzlech ve fondu Windows tak, aby odepíral veškerý síťový provoz. Koncový bod používá front-endový fond portů v rozsahu 60000 –60099.

using Microsoft.Azure.Batch;
using Microsoft.Azure.Batch.Common;

namespace AzureBatch
{
    public void SetPortsPool()
    {   
        pool.NetworkConfiguration = new NetworkConfiguration
        {
            EndpointConfiguration = new PoolEndpointConfiguratio(new InboundNatPool[]
            {
              new InboundNatPool("RDP", InboundEndpointProtocol.Tcp, 3389, 60000, 60099, new NetworkSecurityGroupRule[]
                {
                    new NetworkSecurityGroupRule(162, NetworkSecurityGroupRuleAccess.Deny, "*"),
                })
            })    
        };
    }
}

Příklad: Zamítnutí veškerého provozu SSH z internetu

Následující fragment kódu Pythonu ukazuje, jak nakonfigurovat koncový bod SSH na výpočetních uzlech ve fondu Linuxu tak, aby odepíral veškerý internetový provoz. Koncový bod používá front-endový fond portů v rozsahu 4000 až 4100.

from azure.batch import models as batchmodels

class AzureBatch(object):
    def set_ports_pool(self, **kwargs):
        pool.network_configuration = batchmodels.NetworkConfiguration(
            endpoint_configuration=batchmodels.PoolEndpointConfiguration(
                inbound_nat_pools=[batchmodels.InboundNATPool(
                    name='SSH',
                    protocol='tcp',
                    backend_port=22,
                    frontend_port_range_start=4000,
                    frontend_port_range_end=4100,
                    network_security_group_rules=[
                        batchmodels.NetworkSecurityGroupRule(
                            priority=170,
                            access=batchmodels.NetworkSecurityGroupRuleAccess.deny,
                            source_address_prefix='Internet'
                        )
                    ]
                )
                ]
            )
        )

Příklad: Povolení provozu protokolu RDP z konkrétní IP adresy

Následující fragment kódu C# ukazuje, jak nakonfigurovat koncový bod RDP na výpočetních uzlech ve fondu Windows tak, aby umožňoval přístup RDP jenom z IP adresy 198.51.100.7. Druhé pravidlo NSG odmítne provoz, který neodpovídá IP adrese.

using Microsoft.Azure.Batch;
using Microsoft.Azure.Batch.Common;

namespace AzureBatch
{
    public void SetPortsPool()
    {
        pool.NetworkConfiguration = new NetworkConfiguration
        {
            EndpointConfiguration = new PoolEndpointConfiguration(new InboundNatPool[]
            {
                new InboundNatPool("RDP", InboundEndpointProtocol.Tcp, 3389, 7500, 8000, new NetworkSecurityGroupRule[]
                {   
                    new NetworkSecurityGroupRule(179, NetworkSecurityGroupRuleAccess.Allow, "198.51.100.7"),
                    new NetworkSecurityGroupRule(180, NetworkSecurityGroupRuleAccess.Deny, "*")
                })
            })    
        };
    }
}

Příklad: Povolení provozu SSH z konkrétní podsítě

Následující fragment kódu Pythonu ukazuje, jak nakonfigurovat koncový bod SSH na výpočetních uzlech ve fondu Linuxu tak, aby umožňoval přístup pouze z podsítě 192.168.1.0/24. Druhé pravidlo NSG odepře provoz, který neodpovídá podsíti.

from azure.batch import models as batchmodels

class AzureBatch(object):
    def set_ports_pool(self, **kwargs):
        pool.network_configuration = batchmodels.NetworkConfiguration(
            endpoint_configuration=batchmodels.PoolEndpointConfiguration(
                inbound_nat_pools=[batchmodels.InboundNATPool(
                    name='SSH',
                    protocol='tcp',
                    backend_port=22,
                    frontend_port_range_start=4000,
                    frontend_port_range_end=4100,
                    network_security_group_rules=[
                        batchmodels.NetworkSecurityGroupRule(
                            priority=170,
                            access='allow',
                            source_address_prefix='192.168.1.0/24'
                        ),
                        batchmodels.NetworkSecurityGroupRule(
                            priority=175,
                            access='deny',
                            source_address_prefix='*'
                        )
                    ]
                )
                ]
            )
        )

Další kroky