Udostępnij za pośrednictwem


Konfigurowanie lub wyłączanie dostępu zdalnego do węzłów obliczeniowych w puli Azure Batch

Domyślnie usługa Batch zezwala użytkownikowi węzła z łącznością sieciową w celu połączenia zewnętrznego z węzłem obliczeniowym w puli usługi Batch. Na przykład użytkownik może nawiązać połączenie za pomocą pulpitu zdalnego (RDP) na porcie 3389 z węzłem obliczeniowym w puli systemu Windows. Podobnie domyślnie użytkownik może łączyć się za pomocą protokołu Secure Shell (SSH) na porcie 22 z węzłem obliczeniowym w puli systemu Linux.

W środowisku może być konieczne ograniczenie lub wyłączenie tych domyślnych ustawień dostępu zewnętrznego. Te ustawienia można zmodyfikować za pomocą interfejsów API usługi Batch, aby ustawić właściwość PoolEndpointConfiguration .

Informacje o konfiguracji punktu końcowego puli

Konfiguracja punktu końcowego składa się z co najmniej jednej pul translatora adresów sieciowych (NAT) portów frontonu. (Nie należy mylić puli translatora adresów sieciowych z pulą usługi Batch węzłów obliczeniowych). Skonfiguruj każdą pulę translatora adresów sieciowych, aby zastąpić domyślne ustawienia połączenia w węzłach obliczeniowych puli.

Każda konfiguracja puli translatora adresów sieciowych obejmuje co najmniej jedną regułę sieciowej grupy zabezpieczeń. Każda reguła sieciowej grupy zabezpieczeń zezwala na określony ruch sieciowy do punktu końcowego lub odmawia go. Możesz zezwolić lub odrzucić cały ruch, ruch identyfikowany przez tag usługi (np. "Internet") lub ruch z określonych adresów IP lub podsieci.

Zagadnienia do rozważenia

  • Konfiguracja punktu końcowego puli jest częścią konfiguracji sieci puli. Konfiguracja sieci może opcjonalnie zawierać ustawienia dołączania puli do sieci wirtualnej platformy Azure. Jeśli skonfigurujesz pulę w sieci wirtualnej, możesz utworzyć reguły sieciowej grupy zabezpieczeń korzystające z ustawień adresów w sieci wirtualnej.
  • Podczas konfigurowania puli translatora adresów sieciowych można skonfigurować wiele reguł sieciowej grupy zabezpieczeń. Reguły są sprawdzane w kolejności priorytetu. Gdy reguła ma zastosowanie, żadne inne reguły nie są sprawdzane pod kątem dopasowania.

Przykład: Odmów całego ruchu RDP

Poniższy fragment kodu w języku C# pokazuje, jak skonfigurować punkt końcowy protokołu RDP w węzłach obliczeniowych w puli systemu Windows w celu odmowy całego ruchu sieciowego. Punkt końcowy używa puli frontonu portów w zakresie 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, "*"),
                })
            })    
        };
    }
}

Przykład: Odmów całego ruchu SSH z Internetu

Poniższy fragment kodu języka Python pokazuje, jak skonfigurować punkt końcowy SSH w węzłach obliczeniowych w puli systemu Linux w celu odmowy całego ruchu internetowego. Punkt końcowy używa puli frontonu portów w zakresie od 4000 do 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'
                        )
                    ]
                )
                ]
            )
        )

Przykład: Zezwalaj na ruch RDP z określonego adresu IP

Poniższy fragment kodu w języku C# pokazuje, jak skonfigurować punkt końcowy protokołu RDP w węzłach obliczeniowych w puli systemu Windows, aby zezwolić na dostęp RDP tylko z adresu IP 198.51.100.7. Druga reguła sieciowej grupy zabezpieczeń odrzuca ruch, który nie jest zgodny z adresem IP.

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

Przykład: zezwalanie na ruch SSH z określonej podsieci

Poniższy fragment kodu języka Python pokazuje, jak skonfigurować punkt końcowy SSH w węzłach obliczeniowych w puli systemu Linux, aby zezwolić na dostęp tylko z podsieci 192.168.1.0/24. Druga reguła sieciowej grupy zabezpieczeń odrzuca ruch, który nie jest zgodny z podsiecią.

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

Następne kroki