Konfigurera eller inaktivera fjärråtkomst till beräkningsnoder i en Azure Batch pool

Som standard tillåter Batch att en nodanvändare med nätverksanslutning ansluter externt till en beräkningsnod i en Batch-pool. En användare kan till exempel ansluta via fjärrskrivbord (RDP) på port 3389 till en beräkningsnod i en Windows-pool. På samma sätt kan en användare som standard ansluta via Secure Shell (SSH) på port 22 till en beräkningsnod i en Linux-pool.

I din miljö kan du behöva begränsa eller inaktivera dessa standardinställningar för extern åtkomst. Du kan ändra de här inställningarna med hjälp av Batch-API:erna för att ange egenskapen PoolEndpointConfiguration .

Om konfigurationen av poolslutpunkten

Slutpunktskonfigurationen består av en eller flera NAT-pooler (Network Address Translation) med klientdelsportar. (Blanda inte ihop en NAT-pool med Batch-poolen med beräkningsnoder.) Du konfigurerar varje NAT-pool för att åsidosätta standardanslutningsinställningarna på poolens beräkningsnoder.

Varje NAT-poolkonfiguration innehåller en eller flera regler för nätverkssäkerhetsgrupper (NSG). Varje NSG-regel tillåter eller nekar viss nätverkstrafik till slutpunkten. Du kan välja att tillåta eller neka all trafik, trafik som identifieras av en tjänsttagg (till exempel "Internet") eller trafik från specifika IP-adresser eller undernät.

Överväganden

  • Konfigurationen av poolslutpunkten är en del av poolens nätverkskonfiguration. Nätverkskonfigurationen kan även innehålla inställningar för att ansluta poolen till ett virtuellt Azure-nätverk. Om du konfigurerar poolen i ett virtuellt nätverk kan du skapa NSG-regler som använder adressinställningar i det virtuella nätverket.
  • Du kan konfigurera flera NSG-regler när du konfigurerar en NAT-pool. Reglerna kontrolleras i prioritetsordning. När villkoren för en regel uppfylls testas inga fler regler.

Exempel: Neka all RDP-trafik

Följande C#-kodfragment visar hur du konfigurerar RDP-slutpunkten på beräkningsnoder i en Windows-pool för att neka all nätverkstrafik. Slutpunkten använder en klientdelspool med portar i intervallet 60000–60099.

using Microsoft.Azure.Batch;
using Microsoft.Azure.Batch.Common;

namespace AzureBatch
{
    public void SetPortsPool()
    {   
        pool.NetworkConfiguration = new NetworkConfiguration
        {
            EndpointConfiguration = new PoolEndpointConfiguratio(new InboundNatPool[]
            {
              new InboundNatPool("RDP", InboundEndpointProtocol.Tcp, 3389, 60000, 60099, new NetworkSecurityGroupRule[]
                {
                    new NetworkSecurityGroupRule(162, NetworkSecurityGroupRuleAccess.Deny, "*"),
                })
            })    
        };
    }
}

Exempel: Neka all SSH-trafik från Internet

Följande Python-kodfragment visar hur du konfigurerar SSH-slutpunkten på beräkningsnoder i en Linux-pool för att neka all Internettrafik. Slutpunkten använder en klientdelspool med portar i intervallet 4000–4100.

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

Exempel: Tillåt RDP-trafik från en specifik IP-adress

Följande C#-kodfragment visar hur du konfigurerar RDP-slutpunkten på beräkningsnoder i en Windows-pool för att endast tillåta RDP-åtkomst från IP-adressen 198.51.100.7. Den andra NSG-regeln nekar trafik som inte matchar IP-adressen.

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.51.100.7"),
                    new NetworkSecurityGroupRule(180, NetworkSecurityGroupRuleAccess.Deny, "*")
                })
            })    
        };
    }
}

Exempel: Tillåt SSH-trafik från ett specifikt undernät

Följande Python-kodfragment visar hur du konfigurerar SSH-slutpunkten på beräkningsnoder i en Linux-pool för att endast tillåta åtkomst från undernätet 192.168.1.0/24. Den andra NSG-regeln nekar trafik som inte matchar undernätet.

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

Nästa steg