Configurar o deshabilitar el acceso remoto a nodos de proceso en un grupo de Azure BatchConfigure or disable remote access to compute nodes in an Azure Batch pool

De forma predeterminada, Batch permite un usuario de nodo con conectividad de red para conectarse externamente a un nodo de proceso en un grupo de Batch.By default, Batch allows a node user with network connectivity to connect externally to a compute node in a Batch pool. Por ejemplo, un usuario puede conectarse mediante Escritorio remoto (RDP) en el puerto 3389 a un nodo de proceso en un grupo de Windows.For example, a user can connect by Remote Desktop (RDP) on port 3389 to a compute node in a Windows pool. 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.Similarly, by default, a user can connect by Secure Shell (SSH) on port 22 to a compute node in a Linux pool.

En su entorno, tal vez tenga que restringir o deshabilitar esta configuración de acceso externo predeterminada.In your environment, you might need to restrict or disable these default external access settings. Puede modificar esta configuración mediante las Batch API para establecer la propiedad PoolEndpointConfiguration.You can modify these settings by using the Batch APIs to set the PoolEndpointConfiguration property.

Acerca de la configuración de puntos de conexión de grupoAbout the pool endpoint configuration

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.The endpoint configuration consists of one or more network address translation (NAT) pools of frontend ports. (No confundir un grupo NAT con el grupo de nodos de proceso de Batch). Configure cada grupo NAT para invalidar la configuración de conexión predeterminada en los nodos de proceso del grupo.(Do not confuse a NAT pool with the Batch pool of compute nodes.) You set up each NAT pool to override the default connection settings on the pool's compute nodes.

Cada configuración de grupo NAT incluye una o varias reglas de grupo de seguridad de red (NSG).Each NAT pool configuration includes one or more network security group (NSG) rules. Cada regla NSG permite o deniega cierto tráfico de red al punto de conexión.Each NSG rule allows or denies certain network traffic to the endpoint. 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.You can choose to allow or deny all traffic, traffic identified by a service tag (such as "Internet"), or traffic from specific IP addresses or subnets.

ConsideracionesConsiderations

  • La configuración de punto de conexión del grupo forma parte de la configuración de red del grupo.The pool endpoint configuration is part of the pool's network configuration. La configuración de red puede incluir, opcionalmente, una configuración para unir el grupo a una red virtual de Azure.The network configuration can optionally include settings to join the pool to an Azure virtual network. Si configura el grupo en una red virtual, puede crear reglas NSG que usen la configuración de dirección de la red virtual.If you set up the pool in a virtual network, you can create NSG rules that use address settings in the virtual network.
  • Puede configurar varias reglas NSG al configurar un grupo NAT.You can configure multiple NSG rules when you configure a NAT pool. Las reglas se comprueban por orden de prioridad.The rules are checked in the order of priority. Una vez que se aplica una regla, no se comprueba si las demás coinciden.Once a rule applies, no more rules are tested for matching.

Ejemplo: denegación de todo el tráfico RDPExample: Deny all RDP traffic

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.The following C# snippet shows how to configure the RDP endpoint on compute nodes in a Windows pool to deny all network traffic. El punto de conexión utiliza un grupo de servidores front-end de puertos en el intervalo 60000 - 60099.The endpoint uses a frontend pool of ports in the range 60000 - 60099.

pool.NetworkConfiguration = new NetworkConfiguration
{
    EndpointConfiguration = new PoolEndpointConfiguration(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 InternetExample: Deny all SSH traffic from the 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.The following Python snippet shows how to configure the SSH endpoint on compute nodes in a Linux pool to deny all internet traffic. El punto de conexión utiliza un grupo de servidores front-end de puertos en el intervalo 4000 - 4100.The endpoint uses a frontend pool of ports in the range 4000 - 4100.

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

Ejemplo: autorización del tráfico RDP procedente de una dirección IP específicaExample: Allow RDP traffic from a specific IP address

El siguiente fragmento de código C# muestra cómo configurar el punto de conexión RDP en nodos de proceso en un grupo de Windows para solo permitir el acceso RDP desde la dirección IP 198.51.100.7.The following C# snippet shows how to configure the RDP endpoint on compute nodes in a Windows pool to allow RDP access only from IP address 198.51.100.7. La segunda regla NSG deniega el tráfico que no coincide con la dirección IP.The second NSG rule denies traffic that does not match the IP address.

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

Ejemplo: autorización del tráfico SSH procedente de una subred específicaExample: Allow SSH traffic from a specific subnet

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.The following Python snippet shows how to configure the SSH endpoint on compute nodes in a Linux pool to allow access only from the subnet 192.168.1.0/24. La segunda regla NSG deniega el tráfico que no coincide con la subred.The second NSG rule denies traffic that does not match the subnet.

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

Pasos siguientesNext steps