Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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 modificare queste impostazioni usando le API Batch per impostare la proprietà NetworkConfiguration .
Configurazione dell'endpoint del pool di Batch
La configurazione dell'endpoint è costituita da uno o più pool di traduzione degli indirizzi di rete 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 NSG consente o blocca 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 regole NSG utilizzando le impostazioni dell'indirizzo nella rete virtuale.
- Quando si configura un pool NAT, è possibile configurare diverse 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 System;
using Azure.Core;
using Azure.Identity;
using Azure.ResourceManager.Batch;
using Azure.ResourceManager.Batch.Models;
namespace AzureBatch
{
public void SetPortsPool()
{
// get your azure access token, for more details of how Azure SDK get your access token, please refer to https://learn.microsoft.com/en-us/dotnet/azure/sdk/authentication?tabs=command-line
TokenCredential cred = new DefaultAzureCredential();
// authenticate your client
ArmClient client = new ArmClient(cred);
// this example assumes you already have this BatchAccountResource created on azure
// for more information of creating BatchAccountResource, please refer to the document of BatchAccountResource
string subscriptionId = "12345678-1234-1234-1234-123456789012";
string resourceGroupName = "default-azurebatch-japaneast";
string accountName = "sampleacct";
ResourceIdentifier batchAccountResourceId = BatchAccountResource.CreateResourceIdentifier(subscriptionId, resourceGroupName, accountName);
BatchAccountResource batchAccount = client.GetBatchAccountResource(batchAccountResourceId);
// get the collection of this BatchAccountPoolResource
BatchAccountPoolCollection collection = batchAccount.GetBatchAccountPools();
// invoke the operation
string poolName = "testpool";
BatchAccountPoolData pool = new BatchAccountPoolData
{
VmSize = "STANDARD_D4",
DeploymentVmConfiguration = new BatchVmConfiguration(new BatchImageReference
{
Publisher = "MicrosoftWindowsServer",
Offer = "WindowsServer",
Sku = "2016-Datacenter-SmallDisk",
Version = "latest",
}, "batch.node.windows amd64"),
NetworkConfiguration = new BatchNetworkConfiguration
{
EndpointConfiguration = new PoolEndpointConfiguration(new BatchInboundNatPool[]
{
new BatchInboundNatPool("RDP", BatchInboundEndpointProtocol.Tcp, 3389, 7500, 8000)
{
NetworkSecurityGroupRules =
{
new BatchNetworkSecurityGroupRule(179, BatchNetworkSecurityGroupRuleAccess.Allow, "198.168.100.7"),
new BatchNetworkSecurityGroupRule(180, BatchNetworkSecurityGroupRuleAccess.Deny, "*")
}
}
}
)
};
ArmOperation<BatchAccountPoolResource> lro = await collection.CreateOrUpdateAsync(WaitUntil.Completed, poolName, data);
BatchAccountPoolResource result = lro.Value;
// the variable result is a resource, you could call other operations on this instance as well
// but just for demo, we get its data from this resource instance
BatchAccountPoolData resourceData = result.Data;
}
}
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 è conforme alle subnet.
from azure.identity import DefaultAzureCredential
from azure.mgmt.batch import BatchManagementClient
from azure.mgmt.batch import models as batchmodels
# Authenticate using DefaultAzureCredential
credential = DefaultAzureCredential()
subscription_id = "12345678-1234-1234-1234-123456789012"
client = BatchManagementClient(credential, subscription_id)
resource_group_name = "default-azurebatch-japaneast"
account_name = "sampleacct"
pool_name = "testpool"
pool_parameters = batchmodels.Pool(
vm_size="STANDARD_D4",
deployment_configuration=batchmodels.DeploymentConfiguration(
virtual_machine_configuration=batchmodels.VirtualMachineConfiguration(
image_reference=batchmodels.ImageReference(
publisher="Canonical",
offer="0001-com-ubuntu-server-jammy",
sku="22_04-lts",
version="latest"
),
node_agent_sku_id="batch.node.ubuntu 22.04"
)
),
network_configuration=batchmodels.NetworkConfiguration(
endpoint_configuration=batchmodels.PoolEndpointConfiguration(
inbound_nat_pools=[batchmodels.InboundNatPool(
name='SSH',
protocol=batchmodels.InboundEndpointProtocol.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.ALLOW,
source_address_prefix='192.168.1.0/24'
),
batchmodels.NetworkSecurityGroupRule(
priority=175,
access=batchmodels.NetworkSecurityGroupRuleAccess.DENY,
source_address_prefix='*'
)
]
)]
)
)
)
result = client.pool.create(
resource_group_name=resource_group_name,
account_name=account_name,
pool_name=pool_name,
parameters=pool_parameters
)
print(f"Pool '{result.name}' created successfully.")
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 System;
using Azure.Core;
using Azure.Identity;
using Azure.ResourceManager.Batch;
using Azure.ResourceManager.Batch.Models;
namespace AzureBatch
{
public void SetPortsPool()
{
// get your azure access token, for more details of how Azure SDK get your access token, please refer to https://learn.microsoft.com/en-us/dotnet/azure/sdk/authentication?tabs=command-line
TokenCredential cred = new DefaultAzureCredential();
// authenticate your client
ArmClient client = new ArmClient(cred);
// this example assumes you already have this BatchAccountResource created on azure
// for more information of creating BatchAccountResource, please refer to the document of BatchAccountResource
string subscriptionId = "12345678-1234-1234-1234-123456789012";
string resourceGroupName = "default-azurebatch-japaneast";
string accountName = "sampleacct";
ResourceIdentifier batchAccountResourceId = BatchAccountResource.CreateResourceIdentifier(subscriptionId, resourceGroupName, accountName);
BatchAccountResource batchAccount = client.GetBatchAccountResource(batchAccountResourceId);
// get the collection of this BatchAccountPoolResource
BatchAccountPoolCollection collection = batchAccount.GetBatchAccountPools();
// invoke the operation
string poolName = "testpool";
BatchAccountPoolData pool = new BatchAccountPoolData
{
VmSize = "STANDARD_D4",
DeploymentVmConfiguration = new BatchVmConfiguration(new BatchImageReference
{
Publisher = "MicrosoftWindowsServer",
Offer = "WindowsServer",
Sku = "2016-Datacenter-SmallDisk",
Version = "latest",
}, "batch.node.windows amd64"),
NetworkConfiguration = new BatchNetworkConfiguration
{
EndpointConfiguration = new PoolEndpointConfiguration(new BatchInboundNatPool[]
{
new BatchInboundNatPool("RDP", BatchInboundEndpointProtocol.Tcp, 3389, 60000, 60099)
{
NetworkSecurityGroupRules =
{
new BatchNetworkSecurityGroupRule(162, BatchNetworkSecurityGroupRuleAccess.Deny, "*")
}
}
})
}
};
ArmOperation<BatchAccountPoolResource> lro = await collection.CreateOrUpdateAsync(WaitUntil.Completed, poolName, pool);
BatchAccountPoolResource result = lro.Value;
// the variable result is a resource, you could call other operations on this instance as well
// but just for demo, we get its data from this resource instance
BatchAccountPoolData resourceData = result.Data;
}
}
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.identity import DefaultAzureCredential
from azure.mgmt.batch import BatchManagementClient
from azure.mgmt.batch import models as batchmodels
# Authenticate using DefaultAzureCredential
credential = DefaultAzureCredential()
subscription_id = "12345678-1234-1234-1234-123456789012"
client = BatchManagementClient(credential, subscription_id)
resource_group_name = "default-azurebatch-japaneast"
account_name = "sampleacct"
pool_name = "testpool"
pool_parameters = batchmodels.Pool(
vm_size="STANDARD_D4",
deployment_configuration=batchmodels.DeploymentConfiguration(
virtual_machine_configuration=batchmodels.VirtualMachineConfiguration(
image_reference=batchmodels.ImageReference(
publisher="Canonical",
offer="0001-com-ubuntu-server-jammy",
sku="22_04-lts",
version="latest"
),
node_agent_sku_id="batch.node.ubuntu 22.04"
)
),
network_configuration=batchmodels.NetworkConfiguration(
endpoint_configuration=batchmodels.PoolEndpointConfiguration(
inbound_nat_pools=[batchmodels.InboundNatPool(
name='SSH',
protocol=batchmodels.InboundEndpointProtocol.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'
)
]
)]
)
)
)
result = client.pool.create(
resource_group_name=resource_group_name,
account_name=account_name,
pool_name=pool_name,
parameters=pool_parameters
)
print(f"Pool '{result.name}' created successfully.")
Passaggi successivi
- Informazioni sul flusso di lavoro e sulle risorse principali del servizio Batch, ad esempio pool, nodi, processi e attività.
- Scopri di più sulle regole dei gruppi di sicurezza di rete in Azure con filtraggio del traffico di rete tramite gruppi di sicurezza di rete.