Partager via


Configurer l’accès à distance aux nœuds de calcul dans un pool Azure Batch

Si configuré, vous pouvez autoriser un utilisateur de nœud avec une connectivité réseau à se connecter en externe à un nœud de calcul dans un pool Batch. Par exemple, un utilisateur peut se connecter en utilisant un protocole RDP (Remote Desktop Protocol) sur le port 3389 pour un nœud de calcul dans un pool Windows. De même, par défaut, un utilisateur peut se connecter à un nœud de calcul dans un pool Linux en utilisant un protocole SSH (Secure Shell) sur le port 22.

Remarque

Depuis l’API version 2024-07-01 (et tous les pools créés après le 30 novembre 2025, quelle que soit la version de l’API), Batch ne mappe plus automatiquement les ports d’accès à distance courants pour SSH et RDP. Si vous souhaitez autoriser l’accès à distance à vos nœuds de calcul Batch avec des pools créés avec l’API version 2024-07-01 ou ultérieure (et après le 30 novembre 2025), vous devez configurer manuellement le point de terminaison du pool pour activer cet accès.

Dans votre environnement, vous devrez peut-être activer, restreindre ou désactiver les paramètres d'accès externe ou tout autre port que vous souhaitez sur le pool Batch. Vous pouvez modifier ces paramètres en utilisant les API Batch pour définir la propriété PoolEndpointConfiguration.

Configuration du point de terminaison du pool de lots

La configuration de point de terminaison se compose d’un ou plusieurs pools de traduction d’adresses réseau (NAT) de ports frontaux. Ne confondez pas un pool NAT avec le pool Batch de nœuds de calcul. Vous configurez chaque pool NAT pour remplacer les paramètres de connexion par défaut sur les nœuds de calcul du pool.

Chaque configuration de pool NAT inclut les règles d’un ou plusieurs groupes de sécurité réseau (NSG). Chaque règle NSG autorise ou refuse certains trafics réseau au point de terminaison. Vous pouvez choisir d’autoriser ou de refuser tout le trafic, le trafic identifié par une balise de service (par exemple, « Internet »), ou le trafic provenant d’adresses IP ou de sous-réseaux spécifiques.

Considérations

  • La configuration de point de terminaison de pool fait partie de la configuration réseau du pool. La configuration réseau peut éventuellement inclure des paramètres permettant de joindre le pool à un réseau virtuel Azure. Si vous configurez le pool dans un réseau virtuel, vous pouvez créer des règles NSG qui utilisent des paramètres d’adresse dans le réseau virtuel.
  • Vous pouvez configurer plusieurs règles NSG lorsque vous configurez un pool NAT. Les règles sont vérifiées dans l’ordre de priorité. Une fois qu’une règle s’applique, plus aucune correspondance de règle n’est testée.

Exemple : autoriser le trafic RDP à partir d’une adresse IP spécifique

L'extrait C# suivant montre comment configurer le point de terminaison RDP sur les nœuds de calcul dans un pool Windows pour autoriser l'accès RDP uniquement à partir de l'adresse IP 198.168.100.7. La deuxième règle NSG refuse le trafic qui ne correspond pas à l'adresse 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, "*")
                })
            })
        };
    }
}

Exemple : autoriser le trafic SSH à partir d’un sous-réseau spécifique

L’extrait de code Python suivant montre comment configurer le point de terminaison SSH sur les nœuds de calcul dans un pool Linux afin d’autoriser l’accès uniquement à partir du sous-réseau 192.168.1.0/24. La deuxième règle NSG refuse le trafic qui ne correspond pas au sous-réseau.

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

Exemple : refuser tout le trafic RDP

L’extrait de code C# suivant montre comment configurer le point de terminaison RDP sur les nœuds de calcul dans un pool Windows afin de refuser tout le trafic réseau. Le point de terminaison utilise un pool frontal de ports dans la plage 60000 - 60099.

Remarque

À partir de la version 2.0 de l'API Batch 2024-07-01, le port 3389 généralement associé à RDP n'est plus mappé par défaut. La création d’une règle de refus explicite n’est plus nécessaire si l’accès n’est pas nécessaire depuis Internet pour les pools Batch créés avec cette version d’API ou une version ultérieure. Vous devrez peut-être encore spécifier des règles de refus explicites pour restreindre l'accès à partir d'autres sources.

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, 60000, 60099, new NetworkSecurityGroupRule[]
                {
                    new NetworkSecurityGroupRule(162, NetworkSecurityGroupRuleAccess.Deny, "*"),
                })
            })
        };
    }
}

Exemple : refuser tout le trafic SSH provenant d’Internet

L’extrait de code Python suivant montre comment configurer le point de terminaison SSH sur les nœuds de calcul dans un pool Linux afin de refuser tout le trafic Internet. Le point de terminaison utilise un pool frontal de ports dans la plage 4000 - 4100.

Remarque

À partir de la version 2018 de l'API Batch 2024-07-01, le port 22 généralement associé à SSH n'est plus mappé par défaut. La création d’une règle de refus explicite n’est plus nécessaire si l’accès n’est pas nécessaire depuis Internet pour les pools Batch créés avec cette version d’API ou une version ultérieure. Vous devrez peut-être encore spécifier des règles de refus explicites pour restreindre l'accès à partir d'autres sources.

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

Étapes suivantes