Поделиться через


Настройте удаленный доступ к вычислительным узлам в пуле Azure Batch.

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

Примечание.

По состоянию на версию 2024-07-01 API (и все пулы, созданные после 30 ноября 2025 г. независимо от версии API), пакетная служба больше не сопоставляет общие порты удаленного доступа для SSH и RDP. Если вы хотите разрешить удаленный доступ к вычислительным узлам пакетной службы в пулах, созданных с использованием версии API 2024-07-01 или более поздней (и после 30 ноября 2025 года), необходимо вручную настроить конфигурацию конечной точки пула для включения удаленного доступа.

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

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

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

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

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

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

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

В следующем фрагменте кода C# показано, как настроить конечную точку RDP на вычислительных узлах в пуле Windows, чтобы разрешить доступ к RDP только с IP-адреса 198.168.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.168.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='*'
                        )
                    ]
                )
                ]
            )
        )

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

В следующем фрагменте кода C# показано, как настроить конечную точку RDP на вычислительных узлах в пуле Windows, чтобы запретить весь сетевой трафик. Конечная точка использует пул интерфейсных портов в диапазоне 60000–60099.

Примечание.

По состоянию на версию API пакетной службы 2024-07-01, порт 3389, который обычно связан с RDP, больше не сопоставляется по умолчанию. Создание явного правила запрета больше не требуется, если доступ не нужен через Интернет для пулов Batch, созданных с использованием этой версии API или более поздней. Возможно, вам по-прежнему потребуется указать явные правила запрета, чтобы ограничить доступ из других источников.

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, 60000, 60099, new NetworkSecurityGroupRule[]
                {
                    new NetworkSecurityGroupRule(162, NetworkSecurityGroupRuleAccess.Deny, "*"),
                })
            })
        };
    }
}

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

В следующем фрагменте кода Python показано, как настроить конечную точку SSH на вычислительных узлах в пуле Linux, чтобы запретить весь сетевой трафик. Конечная точка использует фронтенд-пул портов в диапазоне 4000–4100.

Примечание.

По состоянию на версию API пакетной обработки 2024-07-01, порт 22, обычно связанный с SSH, больше не сопоставляется по умолчанию. Создание явного правила запрета больше не требуется, если доступ из Интернета не нужен для пулов Batch, созданных с этой или более поздней версией API. Возможно, вам по-прежнему потребуется указать явные правила запрета, чтобы ограничить доступ из других источников.

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

Следующие шаги