Configurar ou desativar o acesso remoto a nós de computação num conjunto de Azure Batch

Por predefinição, o Batch permite que um utilizador de nó com conectividade de rede se ligue externamente a um nó de computação num conjunto do Batch. Por exemplo, um utilizador pode ligar-se através do Ambiente de Trabalho Remoto (RDP) na porta 3389 a um nó de computação num conjunto do Windows. Da mesma forma, por predefinição, um utilizador pode ligar-se por Secure Shell (SSH) na porta 22 a um nó de computação num conjunto do Linux.

No seu ambiente, poderá ter de restringir ou desativar estas predefinições de acesso externo. Pode modificar estas definições com as APIs do Batch para definir a propriedade PoolEndpointConfiguration .

Acerca da configuração do ponto final do conjunto

A configuração do ponto final consiste num ou mais conjuntos de tradução de endereços de rede (NAT) de portas de front-end. (Não confunda um conjunto NAT com o conjunto do Batch de nós de computação.) Configure cada conjunto NAT para substituir as predefinições de ligação nos nós de computação do conjunto.

Cada configuração do conjunto NAT inclui uma ou mais regras de 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 de sub-redes ou endereços IP específicos.

Considerações

  • A configuração do ponto final do conjunto faz parte da configuração de rede do conjunto. Opcionalmente, a configuração de rede pode incluir definições para associar o conjunto a uma rede virtual do Azure. Se configurar o conjunto numa rede virtual, pode criar regras NSG que utilizem definições de endereço na rede virtual.
  • Pode configurar várias regras NSG quando configurar um conjunto 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 fragmento C# seguinte mostra como configurar o ponto final RDP em nós de computação num conjunto do Windows para negar todo o tráfego de rede. O ponto final utiliza um conjunto de portas de front-end no intervalo 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 fragmento python seguinte mostra como configurar o ponto final SSH em nós de computação num conjunto do Linux para negar todo o tráfego da Internet. O ponto final utiliza um conjunto de portas de front-end no intervalo 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 tráfego RDP a partir de um endereço IP específico

O fragmento C# seguinte mostra como configurar o ponto final RDP em nós de computação num conjunto do Windows para permitir o acesso RDP 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 tráfego SSH a partir de uma sub-rede específica

O fragmento python seguinte mostra como configurar o ponto final SSH em nós de computação num conjunto do 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