Partager via


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

Si cette option est configurée, vous pouvez autoriser un utilisateur de nœud disposant d’une connectivité réseau à se connecter en externe à un nœud de calcul dans un pool Batch. Par exemple, un utilisateur peut se connecter par le Bureau à distance (RDP) sur le port 3389 à un nœud de calcul dans un pool Windows. De même, par défaut, un utilisateur peut se connecter par Secure Shell (SSH) sur le port 22 à un nœud de calcul dans un pool Linux.

Remarque

Depuis la version 2024-07-01 de l’API (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 distant 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 la version de l’API ou une version 2024-07-01 ultérieure (et après le 30 novembre 2025), vous devez configurer manuellement la configuration du point de terminaison du pool pour activer ce type d’accès.

Dans votre environnement, vous devrez peut-être activer, restreindre ou désactiver des paramètres d’accès externe ou tout autre port souhaité sur le pool Batch. Vous pouvez modifier ces paramètres à l’aide des API Batch pour définir la propriété PoolEndpointConfiguration .

Configuration du point de terminaison du pool Batch

La configuration du point de terminaison se compose d’un ou plusieurs pools de traduction d’adresses réseau (NAT) de ports frontend. 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 une ou plusieurs règles de groupe 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 du point de terminaison du pool fait partie de la configuration réseau du pool. La configuration réseau peut éventuellement inclure des paramètres pour 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 de groupe de sécurité réseau 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, aucune autre règle n’est testée pour la correspondance.

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

L’extrait de code 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 bloque 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 des nœuds de calcul dans un pool Linux pour 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 des nœuds de calcul dans un pool Windows pour 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 2024-07-01de l’API Batch, le port 3389 généralement associé au protocole 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 à partir d’Internet pour les pools Batch créés avec cette version de l’API ou une version ultérieure. Vous devrez peut-être toujours 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 à partir d’Internet

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

Remarque

À partir de la version 2024-07-01de l’API Batch, 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 à partir d’Internet pour les pools Batch créés avec cette version de l’API ou une version ultérieure. Vous devrez peut-être toujours 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