Configurar o acesso remoto a nós de computação em um pool de Lotes do Azure
Se configurado, você pode permitir que um usuário de nó com conectividade de rede se conecte externamente a um nó de computação em um pool de lotes. Por exemplo, um usuário pode se conectar pela Área de Trabalho Remota (RDP) na porta 3389 a um nó de computação em um pool do Windows. Da mesma forma, por padrão, um usuário pode se conectar pelo Secure Shell (SSH) na porta 22 a um nó de computação em um pool Linux.
Gorjeta
A partir da versão 2024-07-01
da API, o Batch não mapeia mais automaticamente as portas comuns de acesso remoto para SSH e RDP.
Se desejar permitir o acesso remoto aos nós de computação em lote com pools criados com a versão 2024-07-01
da API ou posterior, configure manualmente a configuração do ponto de extremidade do pool para habilitar esse acesso.
Em seu ambiente, talvez seja necessário habilitar, restringir ou desabilitar as configurações de acesso externo ou quaisquer outras portas desejadas no pool de lotes. Você pode modificar essas configurações usando as APIs de lote para definir a propriedade PoolEndpointConfiguration .
Configuração do ponto de extremidade do pool de lotes
A configuração do ponto de extremidade consiste em um ou mais pools de conversão de endereços de rede (NAT) de portas frontend. Não confunda um pool NAT com o pool de nós de computação em lote. Você configura cada pool de NAT para substituir as configurações de conexão padrão nos nós de computação do pool.
Cada configuração de pool NAT inclui uma ou mais regras NSG (grupo de segurança de rede). Cada regra NSG permite ou nega determinado tráfego de rede para o ponto de extremidade. Você 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 endereços IP ou sub-redes específicos.
Considerações
- A configuração do ponto de extremidade do pool faz parte da configuração de rede do pool. A configuração de rede pode, opcionalmente, incluir configurações para unir o pool a uma rede virtual do Azure. Se você configurar o pool em uma rede virtual, poderá criar regras NSG que usem configurações de endereço na rede virtual.
- Você pode configurar várias regras NSG ao configurar um pool NAT. As regras são verificadas por ordem de prioridade. Quando for aplicada uma regra, não são testadas mais regras para correspondência.
Exemplo: Permitir tráfego RDP de um endereço IP específico
O trecho C# a seguir mostra como configurar o ponto de extremidade RDP em nós de computação em um pool do Windows para permitir o acesso RDP somente a partir do endereço IP 198.168.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.168.100.7"),
new NetworkSecurityGroupRule(180, NetworkSecurityGroupRuleAccess.Deny, "*")
})
})
};
}
}
Exemplo: Permitir tráfego SSH de uma sub-rede específica
O trecho Python a seguir mostra como configurar o ponto de extremidade SSH em nós de computação em um pool Linux para permitir o acesso somente 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='*'
)
]
)
]
)
)
Exemplo: Negar todo o tráfego RDP
O trecho em C# a seguir mostra como configurar o ponto de extremidade RDP em nós de computação em um pool do Windows para negar todo o tráfego de rede. O ponto de extremidade usa um pool frontend de portas no intervalo 60000 - 60099.
Nota
A partir da versão 2024-07-01
da API em lote, a porta 3389 normalmente associada ao RDP não é mais mapeada por padrão.
A criação de uma regra de negação explícita não será mais necessária se o acesso não for necessário da Internet para pools de lotes criados com esta versão da API ou posterior. Talvez ainda seja necessário especificar regras explícitas de negação para restringir o acesso de outras fontes.
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 trecho Python a seguir mostra como configurar o ponto de extremidade SSH em nós de computação em um pool Linux para negar todo o tráfego da Internet. O ponto de extremidade usa um pool de front-end de portas no intervalo 4000 - 4100.
Nota
A partir da versão 2024-07-01
da API em lote, a porta 22 normalmente associada ao SSH não é mais mapeada por padrão.
A criação de uma regra de negação explícita não será mais necessária se o acesso não for necessário da Internet para pools de lotes criados com esta versão da API ou posterior. Talvez ainda seja necessário especificar regras explícitas de negação para restringir o acesso de outras fontes.
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'
)
]
)
]
)
)
Próximos passos
- Saiba mais sobre o fluxo de trabalho do serviço em lote e os recursos primários, como pools, nós, trabalhos e tarefas.
- Para obter mais informações sobre regras NSG no Azure, consulte Filtrar tráfego de rede com grupos de segurança de rede.