Számítási csomópontokhoz való távoli hozzáférés konfigurálása vagy letiltása egy Azure Batch-készletben

Alapértelmezés szerint a Batch lehetővé teszi, hogy a hálózati kapcsolattal rendelkező csomópontfelhasználók külsőleg csatlakozzanak egy Batch-készlet számítási csomóponthoz. A felhasználók például a 3389-ös porton keresztül csatlakozhatnak a Távoli asztal (RDP) segítségével egy Windows-készlet számítási csomópontjához. Hasonlóképpen, a felhasználók alapértelmezés szerint a Secure Shell (SSH) segítségével csatlakozhatnak a 22-es porton egy Linux-készlet számítási csomópontjához.

Előfordulhat, hogy a környezetben korlátoznia vagy letiltania kell ezeket az alapértelmezett külső hozzáférési beállításokat. Ezeket a beállításokat a Batch API-k használatával módosíthatja a PoolEndpointConfiguration tulajdonság beállításához.

A készletvégpont konfigurációja

A végpontkonfiguráció egy vagy több előtérbeli portokból álló hálózati címfordítási (NAT-) készletből áll. (Ne keverje össze a NAT-készletet a számítási csomópontok Batch-készletével.) Minden NAT-készletet úgy állított be, hogy felülbírálja a készlet számítási csomópontjai alapértelmezett kapcsolati beállításait.

Minden NAT-készlet konfigurációja egy vagy több hálózati biztonsági csoport (NSG) szabályt tartalmaz. Minden NSG-szabály engedélyezi vagy letilt bizonyos hálózati forgalmat a végpont felé. Dönthet úgy, hogy engedélyezi vagy letiltja az összes forgalmat, a szolgáltatáscímke által azonosított forgalmat (például "internet"), vagy adott IP-címekről vagy alhálózatokról érkező forgalmat.

Megfontolandó szempontok

  • A készlet végpontkonfigurációja a készlet hálózati konfigurációjának része. A hálózati konfiguráció opcionálisan tartalmazhat beállításokat a készlet Azure-beli virtuális hálózathoz való csatlakoztatásához. Ha virtuális hálózaton állítja be a készletet, létrehozhat olyan NSG-szabályokat, amelyek a virtuális hálózat címbeállításait használják.
  • NAT-készlet konfigurálásakor több NSG-szabályt is konfigurálhat. A szabályok prioritási sorrendben vannak ellenőrizve. Amint talál egy érvényes szabályt, nem vizsgálja, hogy a többi szabálynak megfelel-e a forgalom.

Példa: Az összes RDP-forgalom megtagadása

A következő C#-kódrészlet bemutatja, hogyan konfigurálhatja az RDP-végpontot a Windows-készlet számítási csomópontjain az összes hálózati forgalom letiltására. A végpont a 60000 és 60099 közötti portok előtérkészletét használja.

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

Példa: Az összes SSH-forgalom megtagadása az internetről

A következő Python-kódrészlet bemutatja, hogyan konfigurálhatja az SSH-végpontot egy Linux-készlet számítási csomópontjain az összes internetes forgalom letiltására. A végpont a 4000–4100 tartományban lévő portok előtérkészletét használja.

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

Példa: RDP-forgalom engedélyezése egy adott IP-címről

A következő C#-kódrészlet bemutatja, hogyan konfigurálhatja az RDP-végpontot a Windows-készlet számítási csomópontjain, hogy csak a 198.51.100.7 IP-címről engedélyezze az RDP-hozzáférést. A második NSG-szabály letiltja az IP-címmel nem egyező forgalmat.

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

Példa: SSH-forgalom engedélyezése egy adott alhálózatról

A következő Python-kódrészlet bemutatja, hogyan konfigurálhatja az SSH-végpontot egy Linux-készlet számítási csomópontjain, hogy csak a 192.168.1.0/24 alhálózatról engedélyezze a hozzáférést. A második NSG-szabály letiltja az alhálózattal nem egyező forgalmat.

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

Következő lépések