Настройка или отключение удаленного доступа к вычислительным узлам пула пакетной службы Azure

По умолчанию пакетная служба позволяет пользователю узла с возможностью подключения к сети подключиться извне к вычислительному узлу в пуле пакетной службы. Например, пользователь может подключиться с удаленного рабочего стола (RDP) к порту 3389 на вычислительном узле в пуле Windows. Аналогичным образом по умолчанию пользователь может подключиться через Secure Shell (SSH) к порту 22 на вычислительном узле в пуле Linux.

В своей среде вам может потребоваться ограничить или отключить эти параметры внешнего доступа по умолчанию. Эти параметры можно изменить с помощью API пакетной службы для установки свойства PoolEndpointConfiguration.

О конфигурации конечной точки пула

Конфигурация конечной точки состоит из одного или нескольких пулов преобразования сетевых адресов (NAT) интерфейсных портов. (Не путайте пул NAT с пулом пакетной службы вычислительных узлов.) Настройте каждый пул NAT на переопределение параметров подключения по умолчанию на вычислительных узлах пула.

Каждая конфигурация пула NAT включает одно или несколько правил групп безопасности сети, каждое из которых разрешает или запрещает определенный сетевой трафик к конечной точке. Вы можете разрешить или запретить весь трафик, трафик, определяемый по тегу службы (например, "Интернет"), или трафик из определенных IP-адресов или подсетей.

Рекомендации

  • Конфигурация конечной точки пула является частью сетевой конфигурации пула. В сетевую конфигурацию при необходимости можно включить параметры для присоединения пула к виртуальной сети Azure. При настройке пула в виртуальной сети можно создать правила NSG, которые используют параметры адреса в виртуальной сети.
  • При настройке пула NAT можно настроить несколько правил группы безопасности сети (NSG). Правила проверяются в порядке приоритета. Когда применяется правило, соответствие других правил не проверяется.

Пример запрет всего трафика RDP

В следующем фрагменте кода C# показано, как настроить конечную точку RDP на вычислительных узлах в пуле Windows, чтобы запретить весь сетевой трафик. Конечная точка использует пул интерфейсных портов в диапазоне 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, "*"),
                })
            })    
        };
    }
}

Пример запрет на получение всего трафика SSH из Интернета

В следующем фрагменте кода Python показано, как настроить конечную точку SSH на вычислительных узлах в пуле Linux, чтобы запретить весь сетевой трафик. Конечная точка использует пул интерфейсных портов в диапазоне 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'
                        )
                    ]
                )
                ]
            )
        )

Пример разрешение трафика RDP с определенного IP-адреса

В следующем фрагменте кода C# показано, как настроить конечную точку RDP на вычислительных узлах в пуле Windows, чтобы предоставить доступ RDP только с одного IP-адреса: 198.51.100.7. Второе правило NSG запрещает трафик, для которого не соответствует 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, "*")
                })
            })    
        };
    }
}

Пример разрешение трафика SSH из определенной подсети

В следующем фрагменте кода Python показано, как настроить конечную точку SSH на вычислительных узлах в пуле Linux, чтобы разрешить доступ только из подсети по адресу 192.168.1.0/24. Второе правило NSG запрещает трафик, который не соответствует подсети.

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

Дальнейшие действия