Konfigurera eller inaktivera fjärråtkomst för 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:er för att ange egenskapen PoolEndpointConfiguration.

Om konfigurationen av poolslutpunkten

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

Varje NAT-poolkonfiguration innehåller en eller flera regler för nätverkssäkerhetsgrupp (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 poolens slutpunkt ä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 ställer in 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 för att neka all nätverkstrafik. Slutpunkten använder en klientpool med portar i intervallet 60000–60099.

pool.NetworkConfiguration = new NetworkConfiguration
{
    EndpointConfiguration = new PoolEndpointConfiguration(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 klientpool med portar i intervallet 4 000–4 100.

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.

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.

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