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 pomocí vzdálené plochy (RDP) na portu 3389 k výpočetnímu uzlu ve fondu Windows. Podobně se uživatel může ve výchozím nastavení připojit pomocí Secure Shellu (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 .

Informace o konfiguraci koncového bodu fondu

Konfigurace koncového bodu se skládá z jednoho nebo více fondů překladu adres (NAT) front-endových portů. (Neměňte fond překladu adres (NAT) s fondem Batch výpočetních uzlů.) 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 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 odepřít 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í adres ve virtuální síti.
  • Pokud konfigurujete fond překladu adres (NAT), můžete nakonfigurovat více pravidel skupiny zabezpečení sítě. Pravidla jsou zaškrtnutá v pořadí priority. Jakmile se pravidlo aplikuje, u dalších pravidel se už shoda nekontroluje.

Příklad: Odepřít veškerý provoz protokolu RDP

Následující fragment kódu jazyka C# ukazuje, jak nakonfigurovat koncový bod RDP na výpočetních uzlech ve fondu Windows tak, aby odepřel 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: Odepřít veškerý provoz 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řel veškerý internetový provoz. Koncový bod používá front-endový fond portů v rozsahu 4000 – 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 jazyka C# ukazuje, jak nakonfigurovat koncový bod RDP na výpočetních uzlech ve fondu Windows tak, aby umožňoval přístup RDP pouze 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 odmítne 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