Condividi tramite


Configurare l'accesso remoto ai nodi di calcolo in un pool di Azure Batch

Se configurata, è possibile consentire a un utente del nodo con connettività di rete di connettersi esternamente a un nodo di calcolo in un pool di Batch. Ad esempio, un utente può connettersi tramite Desktop remoto, ovvero RDP, sulla porta 3389 a un nodo di calcolo in un pool di Windows. Analogamente, per impostazione predefinita, un utente può connettersi tramite Secure Shell, ovvero SSH, sulla porta 22 a un nodo di calcolo in un pool di Linux.

Nota

A partire dalla versione 2024-07-01 dell'API (e tutti i pool creati dopo il 30 novembre 2025 indipendentemente dalla versione dell'API), Batch non esegue più automaticamente il mapping delle porte di accesso remoto comuni per SSH e RDP. Se si vuole consentire l'accesso remoto ai nodi di calcolo batch con pool creati con la versione 2024-07-01 api o successiva (e dopo il 30 novembre 2025), è necessario configurare manualmente la configurazione dell'endpoint del pool per abilitare tale accesso.

Nell'ambiente potrebbe essere necessario abilitare, limitare o disabilitare le impostazioni di accesso esterno o qualsiasi altra porta desiderata nel pool di Batch. È possibile modificarle usando le API di Batch per impostare la proprietà PoolEndpointConfiguration.

Configurazione dell'endpoint del pool di Batch

La configurazione dell'endpoint è costituita da uno o più pool Network Address Translation delle porte front-end. Non confondere un pool NAT con il pool batch di nodi di calcolo. Impostare ciascun pool NAT affinché sostituisca le impostazioni di connessione predefinite nei nodi di calcolo del pool.

Ogni configurazione del pool NAT include una o più regole del gruppo di sicurezza di rete. Ogni regola del gruppo di sicurezza di rete consente o rifiuta un determinato traffico di rete all'endpoint. È possibile scegliere di consentire o rifiutare tutto il traffico, il traffico identificato da un tag del servizio, ad esempio "Internet", o il traffico proveniente da specifici indirizzi IP o subnet.

Considerazioni

  • La configurazione dell'endpoint del pool fa parte della configurazione di rete del pool. La configurazione di rete può includere facoltativamente impostazioni per aggiungere il pool a una rete virtuale di Azure. Se si configura il pool in una rete virtuale, è possibile creare le regole del gruppo di sicurezza di rete che usano le impostazioni dell'indirizzo nella rete virtuale.
  • Quando si configura un pool NAT, è possibile configurare più regole del gruppo di sicurezza di rete. Le regole vengono controllate in ordine di priorità. Dopo che è stata applicata una regola, non viene verificata la corrispondenza di altre regole.

Esempio: consentire il traffico RDP da un indirizzo IP specifico

Il frammento di codice C# seguente illustra come configurare l'endpoint RDP nei nodi di calcolo in un pool di Windows per consentire l'accesso RDP solo dall'indirizzo IP 198.168.100.7. La seconda regola del gruppo di sicurezza di rete nega il traffico che non corrisponde all'indirizzo 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, "*")
                })
            })
        };
    }
}

Esempio: consentire il traffico SSH da una subnet specifica

Il frammento di codice Python seguente mostra come configurare l'endpoint SSH sui nodi di calcolo in un pool di Linux per consentire l'accesso solo dalla subnet 192.168.1.0/24. La seconda regola del gruppo di sicurezza di rete nega il traffico che non corrisponde alla subnet.

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

Esempio: rifiutare tutto il traffico RDP

Il frammento di codice C# seguente mostra come configurare l'endpoint RDP sui nodi di calcolo in un pool di Windows per rifiutare tutto il traffico di rete. L'endpoint usa un pool front-end di porte compreso nell'intervallo 60000 - 60099.

Nota

A partire dalla versione 2024-07-01dell'API Batch, la porta 3389 in genere associata a RDP non è più mappata per impostazione predefinita. La creazione di una regola di negazione esplicita non è più necessaria se l'accesso non è necessario da Internet per i pool di Batch creati con questa versione dell'API o versione successiva. Potrebbe comunque essere necessario specificare regole di negazione esplicite per limitare l'accesso da altre origini.

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

Esempio: rifiutare il traffico SSH da Internet

Il frammento di codice Python seguente mostra come configurare l'endpoint SSH sui nodi di calcolo in un pool di Linux per rifiutare tutto il traffico di rete. L'endpoint usa un pool front-end di porte compreso nell'intervallo 4000 - 4100.

Nota

A partire dalla versione 2024-07-01dell'API Batch, la porta 22 in genere associata a SSH non è più mappata per impostazione predefinita. La creazione di una regola di negazione esplicita non è più necessaria se l'accesso non è necessario da Internet per i pool di Batch creati con questa versione dell'API o versione successiva. Potrebbe comunque essere necessario specificare regole di negazione esplicite per limitare l'accesso da altre origini.

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

Passaggi successivi