Configure ou desative o acesso remoto aos nóns de computação numa piscina Azure Batch

Por predefinição, o Batch permite que um utilizador de nó com conectividade de rede se conecte externamente a um nó de computação num pool de Lote. Por exemplo, um utilizador pode ligar-se por Remote Desktop (RDP) na porta 3389 a um nó de computação numa piscina Windows. Da mesma forma, por padrão, um utilizador pode ligar-se por Secure Shell (SSH) na porta 22 a um nó computacional numa piscina Linux.

No seu ambiente, poderá ser necessário restringir ou desativar estas definições de acesso externo predefinidos. Pode modificar estas definições utilizando as APIs do lote para definir a propriedade PoolEndpointConfiguration .

Sobre a configuração do ponto final da piscina

A configuração do ponto final consiste em uma ou mais piscinas de tradução de endereços de rede (NAT) de portas frontend. (Não confunda uma piscina NAT com o lote de nós computacional.) Configurar cada piscina NAT para anular as definições de ligação predefinidos nos nós de cálculo da piscina.

Cada configuração da piscina NAT inclui uma ou mais regras do grupo de segurança de rede (NSG). Cada regra NSG permite ou nega determinado tráfego de rede para o ponto final. Pode optar por permitir ou negar todo o tráfego, tráfego identificado por uma etiqueta de serviço (como "Internet"), ou tráfego a partir de endereços ip específicos ou sub-redes.

Considerações

  • A configuração do ponto final da piscina faz parte da configuração de rede da piscina. A configuração da rede pode opcionalmente incluir configurações para juntar a piscina a uma rede virtual Azure. Se configurar o pool numa rede virtual, pode criar regras NSG que utilizam definições de endereços na rede virtual.
  • Você pode configurar várias regras NSG quando configurar uma piscina NAT. As regras são verificadas na ordem de prioridade. Quando for aplicada uma regra, não são testadas mais regras para correspondência.

Exemplo: Negar todo o tráfego RDP

O seguinte corte C# mostra como configurar o ponto final rdp em nós de computação numa piscina de Windows para negar todo o tráfego de rede. O ponto final utiliza uma piscina frontal de portas na gama 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, "*"),
                })
            })    
        };
    }
}

Exemplo: Negar todo o tráfego SSH da internet

O seguinte snippet Python mostra como configurar o ponto final SSH em nós computativos em uma piscina Linux para negar todo o tráfego de internet. O ponto final utiliza uma piscina frontal de portas na gama 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'
                        )
                    ]
                )
                ]
            )
        )

Exemplo: Permitir o tráfego RDP a partir de um endereço IP específico

O seguinte corte C# mostra como configurar o ponto final rdp em nós de computação numa piscina Windows para permitir o acesso do PDR apenas a partir do endereço IP 198.51.100.7. A segunda regra NSG nega o tráfego que não corresponde ao endereço IP.

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, "*")
                })
            })    
        };
    }
}

Exemplo: Permitir o tráfego SSH a partir de uma sub-rede específica

O seguinte snippet Python mostra como configurar o ponto final SSH em nós computativos numa piscina Linux para permitir o acesso apenas a partir da sub-rede 192.168.1.0/24. A segunda regra NSG nega o tráfego que não corresponde à sub-rede.

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='*'
                        )
                    ]
                )
                ]
            )
        )

Passos seguintes