Externe toegang tot rekenknooppunten configureren in een Azure Batch-pool
Als dit is geconfigureerd, kunt u toestaan dat een knooppuntgebruiker met netwerkconnectiviteit extern verbinding maakt met een rekenknooppunt in een Batch-pool. Een gebruiker kan bijvoorbeeld verbinding maken via Extern bureaublad (RDP) op poort 3389 met een rekenknooppunt in een Windows-pool. Op dezelfde manier kan een gebruiker standaard via Secure Shell (SSH) op poort 22 verbinding maken met een rekenknooppunt in een Linux-pool.
Tip
Vanaf api-versie 2024-07-01
wijst Batch niet langer automatisch algemene poorten voor externe toegang toe voor SSH en RDP.
Als u externe toegang tot uw Batch-rekenknooppunten wilt toestaan met pools die zijn gemaakt met api-versie 2024-07-01
of hoger, moet u de configuratie van het pooleindpunt handmatig configureren om dergelijke toegang in te schakelen.
In uw omgeving moet u mogelijk instellingen voor externe toegang of andere poorten inschakelen, beperken of uitschakelen in de Batch-pool. U kunt deze instellingen wijzigen met behulp van de Batch-API's om de eigenschap PoolEndpointConfiguration in te stellen.
Eindpuntconfiguratie van Batch-pool
De eindpuntconfiguratie bestaat uit een of meer NAT-pools (Network Address Translation) van front-endpoorten. Verwar een NAT-pool niet met de Batch-pool met rekenknooppunten. U stelt elke NAT-pool in om de standaardverbindingsinstellingen op de rekenknooppunten van de pool te overschrijven.
Elke NAT-poolconfiguratie bevat een of meer NSG-regels (netwerkbeveiligingsgroep). Met elke NSG-regel wordt bepaald netwerkverkeer naar het eindpunt toegestaan of geweigerd. U kunt ervoor kiezen om al het verkeer, verkeer dat wordt geïdentificeerd door een servicetag (zoals Internet) toe te staan of te weigeren, of verkeer van specifieke IP-adressen of subnetten.
Overwegingen
- De configuratie van het pooleindpunt maakt deel uit van de netwerkconfiguratie van de pool. De netwerkconfiguratie kan eventueel instellingen bevatten om de pool aan een virtueel Azure-netwerk toe te voegen. Als u de pool in een virtueel netwerk instelt, kunt u NSG-regels maken die gebruikmaken van adresinstellingen in het virtuele netwerk.
- U kunt meerdere NSG-regels configureren wanneer u een NAT-pool configureert. De regels worden gecontroleerd in de volgorde van prioriteit. Zodra een regel van toepassing is, worden geen andere regels meer getest.
Voorbeeld: RDP-verkeer vanaf een specifiek IP-adres toestaan
In het volgende C#-fragment ziet u hoe u het RDP-eindpunt configureert op rekenknooppunten in een Windows-pool om RDP-toegang alleen toe te staan vanaf IP-adres 198.168.100.7. De tweede NSG-regel weigert verkeer dat niet overeenkomt met het IP-adres.
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, "*")
})
})
};
}
}
Voorbeeld: SSH-verkeer van een specifiek subnet toestaan
In het volgende Python-fragment ziet u hoe u het SSH-eindpunt configureert op rekenknooppunten in een Linux-pool om alleen toegang te verlenen vanuit het subnet 192.168.1.0/24. De tweede NSG-regel weigert verkeer dat niet overeenkomt met het subnet.
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='*'
)
]
)
]
)
)
Voorbeeld: Al het RDP-verkeer weigeren
In het volgende C#-fragment ziet u hoe u het RDP-eindpunt configureert op rekenknooppunten in een Windows-pool om al het netwerkverkeer te weigeren. Het eindpunt maakt gebruik van een front-endpool met poorten in het bereik 60000 - 60099.
Notitie
Vanaf batch-API-versie 2024-07-01
wordt poort 3389 die doorgaans aan RDP is gekoppeld, niet meer standaard toegewezen.
Het maken van een expliciete regel voor weigeren is niet meer vereist als toegang niet nodig is vanaf internet voor Batch-pools die zijn gemaakt met deze API-versie of hoger. Mogelijk moet u nog steeds expliciete regels voor weigeren opgeven om de toegang van andere bronnen te beperken.
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, "*"),
})
})
};
}
}
Voorbeeld: Al het SSH-verkeer van internet weigeren
Het volgende Python-fragment laat zien hoe u het SSH-eindpunt configureert op rekenknooppunten in een Linux-pool om al het internetverkeer te weigeren. Het eindpunt maakt gebruik van een front-endpool met poorten in het bereik 4000 - 4100.
Notitie
Vanaf batch-API-versie 2024-07-01
wordt poort 22 die doorgaans aan SSH is gekoppeld, niet meer standaard toegewezen.
Het maken van een expliciete regel voor weigeren is niet meer vereist als toegang niet nodig is vanaf internet voor Batch-pools die zijn gemaakt met deze API-versie of hoger. Mogelijk moet u nog steeds expliciete regels voor weigeren opgeven om de toegang van andere bronnen te beperken.
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'
)
]
)
]
)
)
Volgende stappen
- Meer informatie over de Werkstroom van de batch-service en primaire resources als pools, knooppunten, jobs en taken.
- Zie Netwerkverkeer filteren met netwerkbeveiligingsgroepen voor meer informatie over NSG-regels in Azure.