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

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

Совет

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

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

Конфигурация конечной точки пула пакетной службы

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

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

Примечание.

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

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.

Примечание.

По состоянию на версию 2024-07-01API пакетной службы порт 22, обычно связанный с SSH, больше не сопоставляется по умолчанию. Создание явного правила запрета больше не требуется, если доступ не нужен из Интернета для пулов пакетной службы, созданных с этой версией 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'
                        )
                    ]
                )
                ]
            )
        )

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