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

Domyślnie usługa Batch umożliwia użytkownikowi węzła z łącznością sieciową zewnętrzne łączenie się z węzłem obliczeniowym w puli usługi Batch. Na przykład użytkownik może połączyć się przez Pulpit zdalny (RDP) na porcie 3389 z węzłem obliczeniowym w Windows puli. Podobnie domyślnie użytkownik może nawiązać połączenie przez 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ć przy użyciu interfejsów API usługi Batch w celu ustawienia właściwości PoolEndpointConfiguration.

Informacje o konfiguracji punktu końcowego puli

Konfiguracja punktu końcowego składa się z co najmniej jednej puli translatora adresów sieciowych (NAT) portów frontendu. (Nie należy mylić puli nat z pulą usługi Batch węzłów obliczeniowych). Każdą pulę nat należy skonfigurować w celu zastąpienia domyślnych ustawień połączenia w węzłach obliczeniowych puli.

Każda konfiguracja puli nat zawiera co najmniej jedną regułęsieciowej grupy zabezpieczeń . Każda reguła sieciowej sieciowej organizacji sieciowej zezwala lub nie zezwala na określony ruch sieciowy do punktu końcowego. Możesz zezwolić lub odrzucić cały ruch, ruch identyfikowany przez tag usługi (taki jak "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 obejmować ustawienia dołączania puli do sieci wirtualnej platformy Azure. W przypadku skonfigurowania puli w sieci wirtualnej można utworzyć reguły sieciowej grupy zabezpieczeń, które używają ustawień adresu w sieci wirtualnej.
  • Podczas konfigurowania puli nat można skonfigurować wiele reguł sieciowej sieciowej organizacji. Reguły są sprawdzane w kolejności priorytetów. Gdy reguła ma zastosowanie, żadne inne reguły nie są sprawdzane pod kątem dopasowania.

Przykład: Odrzucanie całego ruchu RDP

Poniższy fragment kodu w języku C# pokazuje, jak skonfigurować punkt końcowy RDP w węzłach obliczeniowych w puli Windows, aby uniemożliwić cały ruch sieciowy. Punkt końcowy używa puli frontonie portów z zakresu od 60000 do 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, "*"),
        })
    })    
};

Przykład: Odrzucanie całego ruchu SSH z Internetu

Poniższy fragment kodu w języku Python przedstawia sposób konfigurowania punktu końcowego SSH w węzłach obliczeniowych w puli systemu Linux w celu blokowania całego ruchu internetowego. Punkt końcowy używa puli frontonie portów z zakresu 4000–4100.

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 RDP w węzłach obliczeniowych w puli Windows, aby zezwolić na dostęp RDP tylko z adresu IP 198.51.100.7. Druga reguła sieciowej sieciowej organizacji sieciowej nie zezwala na ruch, który nie pasuje do adresu IP.

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: Zezwalaj 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 sieci nie zezwala na ruch, który nie pasuje do podsieci.

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