Compartir a través de


Configuración del acceso remoto a nodos de proceso en un grupo de Azure Batch

Si se configura, puede permitir que un usuario de nodo con conectividad de red se conecte externamente a un nodo de proceso de un grupo de Batch. Por ejemplo, un usuario puede conectarse mediante Escritorio remoto (RDP) en el puerto 3389 a un nodo de proceso en un grupo de Windows. Asimismo, de forma predeterminada, un usuario puede conectarse mediante Shell seguro (SSH) en el puerto 22 a un nodo de proceso en un grupo de Linux.

Sugerencia

A partir de la versión de API 2024-07-01, Batch ya no asigna automáticamente puertos de acceso remoto comunes para SSH y RDP. Si desea permitir el acceso remoto a los nodos de proceso de Batch con grupos creados con la versión 2024-07-01 de API o posterior, debe configurar manualmente la configuración del punto de conexión del grupo para habilitar dicho acceso.

En su entorno, es posible que tenga que habilitar, restringir o deshabilitar la configuración de acceso externo o cualquier otro puerto que desee en el grupo de Batch. Puede modificar esta configuración mediante las Batch API para establecer la propiedad PoolEndpointConfiguration.

Configuración del punto de conexión del grupo de Batch

La configuración de punto de conexión consta de uno o varios grupos de traducción de direcciones de red (NAT) de puertos front-end. No confunda un grupo NAT con el grupo de Batch de nodos de proceso. Configure cada grupo NAT para invalidar la configuración de conexión predeterminada en los nodos de proceso del grupo.

Cada configuración de grupo NAT incluye una o varias reglas de grupo de seguridad de red (NSG). Cada regla NSG permite o deniega cierto tráfico de red al punto de conexión. Puede elegir permitir o denegar todo el tráfico, el tráfico identificado por una etiqueta de servicio (por ejemplo, "Internet") o el tráfico procedente de subredes o direcciones IP específicas.

Consideraciones

  • La configuración de punto de conexión del grupo forma parte de la configuración de red del grupo. La configuración de red puede incluir, opcionalmente, una configuración para unir el grupo a una red virtual de Azure. Si configura el grupo en una red virtual, puede crear reglas NSG que usen la configuración de dirección de la red virtual.
  • Puede configurar varias reglas NSG al configurar un grupo NAT. Las reglas se comprueban por orden de prioridad. Una vez que se aplica una regla, no se comprueba si las demás coinciden.

Ejemplo: autorización del tráfico RDP procedente de una dirección IP específica

El siguiente fragmento de código de C# muestra cómo configurar el punto de conexión RDP en nodos de proceso de un grupo de Windows para permitir el acceso RDP solo desde la dirección IP 198.168.100.7. La segunda regla de NSG deniega el tráfico que no coincide con la dirección 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, "*")
                })
            })
        };
    }
}

Ejemplo: autorización del tráfico SSH procedente de una subred específica

El siguiente fragmento de código Python muestra cómo configurar el punto de conexión SSH en nodos de proceso en un grupo de Linux para solo permitir el acceso de la subred 192.168.1.0/24. La segunda regla de NSG deniega el tráfico que no coincide con la subred.

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

Ejemplo: denegación de todo el tráfico RDP

El siguiente fragmento de código C# muestra cómo configurar el punto de conexión RDP en nodos de proceso de un grupo de Windows para denegar todo el tráfico de red. El punto de conexión utiliza un grupo de servidores front-end de puertos en el intervalo 60000 - 60099.

Nota:

A partir de la versión de Batch API 2024-07-01, el puerto 3389 normalmente asociado a RDP ya no se asigna de forma predeterminada. La creación de una regla de denegación explícita ya no es necesaria si no se necesita acceso desde Internet para grupos de Batch creados con esta versión de API o posterior. Es posible que tenga que especificar reglas de denegación explícitas para restringir el acceso desde otros orígenes.

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

Ejemplo: denegación de todo el tráfico SSH procedente de Internet

El siguiente fragmento de código Python muestra cómo configurar el punto de conexión SSH en nodos de proceso en un grupo de Linux para denegar todo el tráfico de Internet. El punto de conexión utiliza un grupo de servidores front-end de puertos en el intervalo 4000 - 4100.

Nota:

A partir de la versión de Batch API 2024-07-01, el puerto 22 normalmente asociado a SSH ya no se asigna de forma predeterminada. La creación de una regla de denegación explícita ya no es necesaria si no se necesita acceso desde Internet para grupos de Batch creados con esta versión de API o posterior. Es posible que tenga que especificar reglas de denegación explícitas para restringir el acceso desde otros orígenes.

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

Pasos siguientes