Externe toegang tot rekenknooppunten in een Azure Batch-pool configureren of uitschakelen

Standaard staat Batch een knooppuntgebruiker met netwerkconnectiviteit toe om extern verbinding te maken met een rekenknooppunt in een Batch-pool. Een gebruiker kan bijvoorbeeld via Extern bureaublad (RDP) op poort 3389 verbinding maken met een rekenknooppunt in een Windows-pool. Op dezelfde manier kan een gebruiker standaard via SSH (Secure Shell) op poort 22 verbinding maken met een rekenknooppunt in een Linux-pool.

In uw omgeving moet u deze standaardinstellingen voor externe toegang mogelijk beperken of uitschakelen. U kunt deze instellingen wijzigen met behulp van de Batch-API's om de eigenschap PoolEndpointConfiguration in te stellen.

Over de configuratie van het pooleindpunt

De eindpuntconfiguratie bestaat uit een of meer NAT-pools (Network Address Translation) van front-endpoorten. (Verwar een NAT-pool niet met de Batch-pool met rekenknooppunten.) U stelt elke NAT-pool zo in dat de standaardverbindingsinstellingen op de rekenknooppunten van de pool worden overschreven.

Elke NAT-poolconfiguratie bevat een of meer NSG-regels (netwerkbeveiligingsgroep). Met elke NSG-regel wordt bepaald netwerkverkeer naar het eindpunt toegestaan of geweigerd. U kunt ervoor kiezen om al het verkeer, verkeer dat wordt geïdentificeerd door een servicetag (zoals 'internet') of verkeer van specifieke IP-adressen of subnetten toe te staan of te weigeren.

Overwegingen

  • De configuratie van het pooleindpunt maakt deel uit van de netwerkconfiguratie van de pool. De netwerkconfiguratie kan desgewenst instellingen bevatten om de pool toe te voegen aan een virtueel Azure-netwerk. Als u de pool in een virtueel netwerk instelt, kunt u NSG-regels maken die gebruikmaken van adresinstellingen in het virtuele netwerk.
  • U kunt meerdere NSG-regels configureren wanneer u een NAT-pool configureert. De regels worden gecontroleerd in de volgorde van prioriteit. Zodra een regel van toepassing is, worden geen andere regels meer getest.

Voorbeeld: Al het RDP-verkeer weigeren

Het volgende C#-fragment laat zien hoe u het RDP-eindpunt configureert op rekenknooppunten in een Windows-pool om al het netwerkverkeer te weigeren. Het eindpunt maakt gebruik van een front-endpool van poorten in het bereik 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, "*"),
                })
            })    
        };
    }
}

Voorbeeld: Al het SSH-verkeer van internet weigeren

Het volgende Python-fragment laat zien hoe u het SSH-eindpunt configureert op rekenknooppunten in een Linux-pool om al het internetverkeer te weigeren. Het eindpunt maakt gebruik van een front-endpool van poorten in het bereik 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'
                        )
                    ]
                )
                ]
            )
        )

Voorbeeld: RDP-verkeer vanaf een specifiek IP-adres toestaan

Het volgende C#-fragment laat zien hoe u het RDP-eindpunt configureert op rekenknooppunten in een Windows-pool om RDP-toegang alleen toe te staan vanaf IP-adres 198.51.100.7. De tweede NSG-regel weigert verkeer dat niet overeenkomt met het IP-adres.

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

Voorbeeld: SSH-verkeer van een specifiek subnet toestaan

Het volgende Python-fragment laat zien hoe u het SSH-eindpunt configureert op rekenknooppunten in een Linux-pool om alleen toegang toe te staan vanuit het subnet 192.168.1.0/24. De tweede NSG-regel weigert verkeer dat niet overeenkomt met het 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='*'
                        )
                    ]
                )
                ]
            )
        )

Volgende stappen