Skydda en Azure Machine Learning-träningsmiljö med virtuella nätverk (SDKv1)

GÄLLER FÖR: Python SDK azureml v1

I den här artikeln får du lära dig hur du skyddar träningsmiljöer med ett virtuellt nätverk i Azure Machine Learning med hjälp av Python SDK v1.

Azure Machine Learning-beräkningsinstanser och beräkningskluster kan användas för att på ett säkert sätt träna modeller i ett virtuellt nätverk. När du planerar din miljö kan du konfigurera beräkningsinstansen/klustret med eller utan en offentlig IP-adress. De allmänna skillnaderna mellan de två är:

  • Ingen offentlig IP-adress: Minskar kostnaderna eftersom den inte har samma nätverksresurskrav. Förbättrar säkerheten genom att ta bort kravet på inkommande trafik från Internet. Det krävs dock ytterligare konfigurationsändringar för att aktivera utgående åtkomst till nödvändiga resurser (Microsoft Entra-ID, Azure Resource Manager osv.).
  • Offentlig IP-adress: Fungerar som standard, men kostar mer på grund av ytterligare Azure-nätverksresurser. Kräver inkommande kommunikation från Azure Machine Learning-tjänsten via det offentliga Internet.

Följande tabell innehåller skillnaderna mellan dessa konfigurationer:

Konfiguration Med offentlig IP-adress Utan offentlig IP-adress
Inkommande trafik AzureMachineLearning tjänsttagg. Ingen
Utgående trafik Som standard kan du komma åt det offentliga Internet utan begränsningar.
Du kan begränsa vad den får åtkomst till med hjälp av en nätverkssäkerhetsgrupp eller brandvägg.
Som standard kan den inte komma åt Internet. Om den fortfarande kan skicka utgående trafik till Internet beror det på Azures standardutgående åtkomst och du har en NSG som tillåter utgående trafik till Internet. Vi rekommenderar inte att du använder standardåtkomsten för utgående trafik.
Om du behöver utgående åtkomst till Internet rekommenderar vi att du använder en NAT-gateway för virtuellt nätverk eller brandväggen i stället om du behöver dirigera utgående trafik till nödvändiga resurser på Internet.
Azure-nätverksresurser Offentlig IP-adress, lastbalanserare, nätverksgränssnitt Ingen

Du kan också använda Azure Databricks eller HDInsight för att träna modeller i ett virtuellt nätverk.

Dricks

Du kan använda azure machine learning-hanterade virtuella nätverk i stället för stegen i den här artikeln. Med ett hanterat virtuellt nätverk hanterar Azure Machine Learning jobbet med nätverksisolering för din arbetsyta och hanterade beräkningar. Du kan också lägga till privata slutpunkter för resurser som behövs av arbetsytan, till exempel Azure Storage-konto. Mer information finns i Hanterad nätverksisolering för arbetsyta.

Kommentar

Information om hur du använder Azure Machine Learning Studio och Python SDK v2 finns i Säker träningsmiljö (v2).

En självstudiekurs om hur du skapar en säker arbetsyta finns i Självstudie: Skapa en säker arbetsyta i Azure Portal, Bicep-mall eller Terraform-mall.

I den här artikeln får du lära dig hur du skyddar följande träningsberäkningsresurser i ett virtuellt nätverk:

  • Azure Machine Learning-beräkningskluster
  • Azure Machine Learning-beräkningsinstans
  • Azure Databricks
  • Virtuell dator
  • HDInsight-kluster

Viktigt!

Objekt i den här artikeln som har markerats som "förhandsversion" finns för närvarande i offentlig förhandsversion. Förhandsversionen tillhandahålls utan ett serviceavtal och rekommenderas inte för produktionsarbetsbelastningar. Vissa funktioner kanske inte stöds eller kan vara begränsade. Mer information finns i Kompletterande villkor för användning av Microsoft Azure-förhandsversioner.

Förutsättningar

  • Läs artikeln Översikt över nätverkssäkerhet för att förstå vanliga scenarier för virtuella nätverk och övergripande arkitektur för virtuella nätverk.

  • Ett befintligt virtuellt nätverk och undernät som ska användas med dina beräkningsresurser. Det här virtuella nätverket måste finnas i samma prenumeration som din Azure Machine Learning-arbetsyta.

    • Vi rekommenderar att du placerar de lagringskonton som används av arbetsytan och träningsjobben i samma Azure-region som du planerar att använda för dina beräkningsinstanser och kluster. Om de inte finns i samma Azure-region kan det medföra kostnader för dataöverföring och ökad nätverksfördröjning.
    • Kontrollera att WebSocket-kommunikation tillåts till *.instances.azureml.net och *.instances.azureml.ms i ditt VNet. WebSockets används av Jupyter på beräkningsinstanser.
  • Ett befintligt undernät i det virtuella nätverket. Det här undernätet används när du skapar beräkningsinstanser och kluster.

    • Kontrollera att undernätet inte delegeras till andra Azure-tjänster.
    • Kontrollera att undernätet innehåller tillräckligt med kostnadsfria IP-adresser. Varje beräkningsinstans kräver en IP-adress. Varje nod i ett beräkningskluster kräver en IP-adress.
  • Om du har en egen DNS-server rekommenderar vi att du använder DNS-vidarebefordran för att matcha de fullständigt kvalificerade domännamnen (FQDN) för beräkningsinstanser och kluster. Mer information finns i Använda en anpassad DNS med Azure Machine Learning.

  • Om du vill distribuera resurser till ett virtuellt nätverk eller undernät måste ditt användarkonto ha behörighet till följande åtgärder i rollbaserad åtkomstkontroll i Azure (Azure RBAC):

    • "Microsoft.Network/*/read" på den virtuella nätverksresursen. Den här behörigheten behövs inte för distributioner av Azure Resource Manager-mallar (ARM).
    • "Microsoft.Network/virtualNetworks/join/action" på den virtuella nätverksresursen.
    • "Microsoft.Network/virtualNetworks/subnets/join/action" på undernätsresursen.

    Mer information om Azure RBAC med nätverk finns i inbyggda nätverksroller

Begränsningar

Azure Machine Learning-beräkningskluster/-instans

  • Beräkningskluster kan skapas i en annan region och ett virtuellt nätverk än din arbetsyta. Den här funktionen är dock endast tillgänglig med hjälp av SDK v2, CLI v2 eller studio. Mer information finns i v2-versionen av säkra träningsmiljöer.

  • Distribution av beräkningskluster/instanser i det virtuella nätverket stöds inte med Azure Lighthouse.

  • Port 445 måste vara öppen för privat nätverkskommunikation mellan dina beräkningsinstanser och standardlagringskontot under träning. Om dina beräkningar till exempel finns i ett virtuellt nätverk och lagringskontot finns i ett annat ska du inte blockera port 445 till det virtuella nätverkets lagringskonto.

Azure Databricks

  • Det virtuella nätverket måste finnas i samma prenumeration och region som Azure Machine Learning-arbetsytan.
  • Om Azure Storage-kontona för arbetsytan också skyddas i ett virtuellt nätverk måste de finnas i samma virtuella nätverk som Azure Databricks-klustret.
  • Förutom de databricks-private och databricks-offentliga undernät som används av Azure Databricks krävs även standardundernätet som skapats för det virtuella nätverket.
  • Azure Databricks använder inte en privat slutpunkt för att kommunicera med det virtuella nätverket.

Mer information om hur du använder Azure Databricks i ett virtuellt nätverk finns i Distribuera Azure Databricks i ditt virtuella Azure-nätverk.

Azure HDInsight eller virtuell dator

  • Azure Machine Learning stöder endast virtuella datorer som kör Ubuntu.

Beräkningsinstans/kluster utan offentlig IP-adress

Viktigt!

Om du har använt beräkningsinstanser eller beräkningskluster som konfigurerats för ingen offentlig IP-adress utan att du har valt förhandsversionen måste du ta bort och återskapa dem efter den 20 januari 2023 (när funktionen är allmänt tillgänglig).

Om du tidigare använde förhandsversionen av ingen offentlig IP-adress kan du också behöva ändra vilken trafik du tillåter inkommande och utgående trafik, eftersom kraven har ändrats för allmän tillgänglighet:

  • Utgående krav – ytterligare två utgående, som endast används för hantering av beräkningsinstanser och kluster. Målet för dessa tjänsttaggar ägs av Microsoft:
    • AzureMachineLearning tjänsttagg på UDP-port 5831.
    • BatchNodeManagement tjänsttagg på TCP-port 443.

Följande konfigurationer är utöver de som anges i avsnittet Krav och är specifika för att skapa beräkningsinstanser/kluster som konfigurerats utan offentlig IP-adress:

  • Du måste använda en privat slutpunkt för arbetsytan för beräkningsresursen för att kommunicera med Azure Machine Learning-tjänster från det virtuella nätverket. Mer information finns i Konfigurera en privat slutpunkt för Azure Machine Learning-arbetsytan.

  • I ditt virtuella nätverk tillåter du utgående trafik till följande tjänsttaggar eller fullständiga domännamn (FQDN):

    Tjänsttagg Protokoll Port Kommentar
    AzureMachineLearning TCP
    UDP
    443/8787/18881
    5831
    Kommunikation med Azure Machine Learning-tjänsten.
    BatchNodeManagement.<region> NÅGON 443 Ersätt <region> med Azure-regionen som innehåller din Azure Machine Learning-arbetsyta. Kommunikation med Azure Batch. Beräkningsinstanser och beräkningskluster implementeras med hjälp av Azure Batch-tjänsten.
    Storage.<region> TCP 443 Ersätt <region> med Azure-regionen som innehåller din Azure Machine Learning-arbetsyta. Den här tjänsttaggen används för att kommunicera med det Azure Storage-konto som används av Azure Batch.

    Viktigt!

    Den utgående åtkomsten till Storage.<region> kan potentiellt användas för att exfiltera data från din arbetsyta. Genom att använda en tjänstslutpunktsprincip kan du minska den här sårbarheten. Mer information finns i artikeln Skydd mot dataexfiltrering i Azure Machine Learning.

    FQDN Protokoll Port Kommentar
    <region>.tundra.azureml.ms UDP 5831 Ersätt <region> med Azure-regionen som innehåller din Azure Machine Learning-arbetsyta.
    graph.windows.net TCP 443 Kommunikation med Microsoft Graph API.
    *.instances.azureml.ms TCP 443/8787/18881 Kommunikation med Azure Machine Learning.
    *.<region>.batch.azure.com NÅGON 443 Ersätt <region> med Azure-regionen som innehåller din Azure Machine Learning-arbetsyta. Kommunikation med Azure Batch.
    *.<region>.service.batch.azure.com NÅGON 443 Ersätt <region> med Azure-regionen som innehåller din Azure Machine Learning-arbetsyta. Kommunikation med Azure Batch.
    *.blob.core.windows.net TCP 443 Kommunikation med Azure Blob Storage.
    *.queue.core.windows.net TCP 443 Kommunikation med Azure Queue Storage.
    *.table.core.windows.net TCP 443 Kommunikation med Azure Table Storage.
  • Skapa antingen en brandvägg och utgående regler eller en NAT-gateway och nätverkstjänstgrupper för att tillåta utgående trafik. Eftersom beräkningen inte har någon offentlig IP-adress kan den inte kommunicera med resurser på det offentliga Internet utan den här konfigurationen. Det skulle till exempel inte kunna kommunicera med Microsoft Entra-ID eller Azure Resource Manager. Att installera Python-paket från offentliga källor skulle också kräva den här konfigurationen.

    Mer information om utgående trafik som används av Azure Machine Learning finns i följande artiklar:

Använd följande information för att skapa en beräkningsinstans eller ett kluster utan offentlig IP-adress:

Om du vill skapa en beräkningsinstans eller ett beräkningskluster utan offentlig IP-adress använder du användargränssnittet Azure Machine Learning-studio för att skapa resursen:

  1. Logga in på Azure Machine Learning-studio och välj sedan din prenumeration och arbetsyta.

  2. Välj sidan Beräkning i det vänstra navigeringsfältet.

  3. Välj + Nytt i navigeringsfältet för beräkningsinstansen eller beräkningsklustret.

  4. Konfigurera den vm-storlek och konfiguration du behöver och välj sedan Nästa.

  5. I Avancerade inställningar väljer du Aktivera virtuellt nätverk, ditt virtuella nätverk och undernät och väljer slutligen alternativet Ingen offentlig IP under avsnittet VNet/undernät.

    En skärmbild av hur du inte konfigurerar någon offentlig IP-adress för beräkningsinstanser och beräkningskluster.

Dricks

Du kan också använda Azure Machine Learning SDK v2 eller Azure CLI-tillägget för ML v2. Information om hur du skapar en beräkningsinstans eller ett kluster utan offentlig IP-adress finns i artikeln om v2-versionen av Utbildningsmiljön säker i Azure Machine Learning.

Beräkningsinstans/kluster med offentlig IP-adress

Följande konfigurationer är utöver de som anges i avsnittet Krav och är specifika för att skapa beräkningsinstanser/kluster som har en offentlig IP-adress:

  • Om du placerar flera beräkningsinstanser/kluster i ett virtuellt nätverk kan du behöva begära en kvotökning för en eller flera av dina resurser. Machine Learning-beräkningsinstansen eller klustret allokerar automatiskt nätverksresurser i resursgruppen som innehåller det virtuella nätverket. För varje beräkningsinstans eller kluster allokerar tjänsten följande resurser:

    • En nätverkssäkerhetsgrupp (NSG) skapas automatiskt. Denna NSG tillåter inkommande TCP-trafik på port 44224 från AzureMachineLearning tjänsttaggen.

      Viktigt!

      Beräkningsinstanser och beräkningskluster skapar automatiskt en NSG med de regler som krävs.

      Om du har en annan NSG på undernätsnivå får reglerna på NSG på undernätsnivå inte vara i konflikt med reglerna i den automatiskt skapade NSG:n.

      Information om hur NSG:er filtrerar nätverkstrafiken finns i Så filtrerar nätverkssäkerhetsgrupper nätverkstrafik.

    • En lastbalanserare

    För beräkningskluster tas dessa resurser bort varje gång klustret skalar ned till 0 noder och skapas vid uppskalning.

    För en beräkningsinstans behålls resurserna tills instansen tas bort. Att stoppa instansen tar inte bort resurserna.

    Viktigt!

    Dessa resurser begränsas av prenumerationens resurskvoter. Om resursgruppen för det virtuella nätverket är låst misslyckas borttagningen av beräkningsklustret/instansen. Det går inte att ta bort lastbalanseraren förrän beräkningsklustret/instansen har tagits bort. Se också till att det inte finns någon Azure Policy-tilldelning som förbjuder skapande av nätverkssäkerhetsgrupper.

  • Tillåt inkommande TCP-trafik på port 44224 från AzureMachineLearning tjänsttaggen i ditt virtuella nätverk.

    Viktigt!

    Beräkningsinstansen/klustret tilldelas dynamiskt en IP-adress när den skapas. Eftersom adressen inte är känd innan den skapas och inkommande åtkomst krävs som en del av skapandeprocessen kan du inte statiskt tilldela den i brandväggen. Om du i stället använder en brandvägg med det virtuella nätverket måste du skapa en användardefinierad väg för att tillåta den inkommande trafiken.

  • I ditt virtuella nätverk tillåter du utgående trafik till följande tjänsttaggar:

    Tjänsttagg Protokoll Port Kommentar
    AzureMachineLearning TCP
    UDP
    443/8787/18881
    5831
    Kommunikation med Azure Machine Learning-tjänsten.
    BatchNodeManagement.<region> NÅGON 443 Ersätt <region> med Azure-regionen som innehåller din Azure Machine Learning-arbetsyta. Kommunikation med Azure Batch. Beräkningsinstanser och beräkningskluster implementeras med hjälp av Azure Batch-tjänsten.
    Storage.<region> TCP 443 Ersätt <region> med Azure-regionen som innehåller din Azure Machine Learning-arbetsyta. Den här tjänsttaggen används för att kommunicera med det Azure Storage-konto som används av Azure Batch.

    Viktigt!

    Den utgående åtkomsten till Storage.<region> kan potentiellt användas för att exfiltera data från din arbetsyta. Genom att använda en tjänstslutpunktsprincip kan du minska den här sårbarheten. Mer information finns i artikeln Skydd mot dataexfiltrering i Azure Machine Learning.

    FQDN Protokoll Port Kommentar
    <region>.tundra.azureml.ms UDP 5831 Ersätt <region> med Azure-regionen som innehåller din Azure Machine Learning-arbetsyta.
    graph.windows.net TCP 443 Kommunikation med Microsoft Graph API.
    *.instances.azureml.ms TCP 443/8787/18881 Kommunikation med Azure Machine Learning.
    *.<region>.batch.azure.com NÅGON 443 Ersätt <region> med Azure-regionen som innehåller din Azure Machine Learning-arbetsyta. Kommunikation med Azure Batch.
    *.<region>.service.batch.azure.com NÅGON 443 Ersätt <region> med Azure-regionen som innehåller din Azure Machine Learning-arbetsyta. Kommunikation med Azure Batch.
    *.blob.core.windows.net TCP 443 Kommunikation med Azure Blob Storage.
    *.queue.core.windows.net TCP 443 Kommunikation med Azure Queue Storage.
    *.table.core.windows.net TCP 443 Kommunikation med Azure Table Storage.

GÄLLER FÖR: Python SDK azureml v1

import datetime
import time

from azureml.core.compute import ComputeTarget, ComputeInstance
from azureml.core.compute_target import ComputeTargetException

# Choose a name for your instance
# Compute instance name should be unique across the azure region
compute_name = "ci{}".format(ws._workspace_id)[:10]

# Verify that instance does not exist already
try:
    instance = ComputeInstance(workspace=ws, name=compute_name)
    print('Found existing instance, use it.')
except ComputeTargetException:
    compute_config = ComputeInstance.provisioning_configuration(
        vm_size='STANDARD_D3_V2',
        ssh_public_access=False,
        vnet_resourcegroup_name='vnet_resourcegroup_name',
        vnet_name='vnet_name',
        subnet_name='subnet_name',
        # admin_user_ssh_public_key='<my-sshkey>'
    )
    instance = ComputeInstance.create(ws, compute_name, compute_config)
    instance.wait_for_completion(show_output=True)

När skapandeprocessen är klar tränar du din modell. Mer information finns i Välj och använd ett beräkningsmål för träning.

Azure Databricks

  • Det virtuella nätverket måste finnas i samma prenumeration och region som Azure Machine Learning-arbetsytan.
  • Om Azure Storage-kontona för arbetsytan också skyddas i ett virtuellt nätverk måste de finnas i samma virtuella nätverk som Azure Databricks-klustret.
  • Förutom de databricks-private och databricks-offentliga undernät som används av Azure Databricks krävs även standardundernätet som skapats för det virtuella nätverket.
  • Azure Databricks använder inte en privat slutpunkt för att kommunicera med det virtuella nätverket.

Specifik information om hur du använder Azure Databricks med ett virtuellt nätverk finns i Distribuera Azure Databricks i ditt virtuella Azure-nätverk.

Obligatorisk offentlig Internetåtkomst till träningsmodeller

Viktigt!

Medan föregående avsnitt i den här artikeln beskriver konfigurationer som krävs för att skapa beräkningsresurser, krävs konfigurationsinformationen i det här avsnittet för att använda dessa resurser för att träna modeller.

Azure Machine Learning kräver både inkommande och utgående åtkomst till det offentliga Internet. Följande tabeller ger en översikt över nödvändig åtkomst och vilket syfte den tjänar. För tjänsttaggar som slutar i .regionersätter du region med den Azure-region som innehåller din arbetsyta. Till exempel Storage.westus:

Dricks

På den obligatoriska fliken visas den nödvändiga konfigurationen för inkommande och utgående trafik. På situationsfliken visas valfria konfigurationer för inkommande och utgående trafik som krävs av specifika konfigurationer som du kanske vill aktivera.

Riktning Protokoll &
portar
Tjänsttagg Syfte
Utgående TCP: 80, 443 AzureActiveDirectory Autentisering med Microsoft Entra ID.
Utgående TCP: 443, 18881
UDP: 5831
AzureMachineLearning Använda Azure Machine Learning Services.
Python intellisense i notebook-filer använder port 18881.
När du skapar, uppdaterar och tar bort en Azure Machine Learning-beräkningsinstans används port 5831.
Utgående ANY: 443 BatchNodeManagement.region Kommunikation med Azure Batch-serverdelen för Azure Machine Learning-beräkningsinstanser/-kluster.
Utgående TCP: 443 AzureResourceManager Skapa Azure-resurser med Azure Machine Learning, Azure CLI och Azure Machine Learning SDK.
Utgående TCP: 443 Storage.region Få åtkomst till data som lagras i Azure Storage-kontot för beräkningskluster och beräkningsinstans. Information om hur du förhindrar dataexfiltrering över den här utgående informationen finns i Dataexfiltreringsskydd.
Utgående TCP: 443 AzureFrontDoor.FrontEnd
* Behövs inte i Microsoft Azure som drivs av 21Vianet.
Global startpunkt för Azure Machine Learning-studio. Lagra avbildningar och miljöer för AutoML. Information om hur du förhindrar dataexfiltrering över den här utgående informationen finns i Dataexfiltreringsskydd.
Utgående TCP: 443 MicrosoftContainerRegistry.region
Observera att taggen har ett beroende av taggen AzureFrontDoor.FirstParty
Åtkomst till Docker-avbildningar som tillhandahålls av Microsoft. Installation av Azure Machine Learning-routern för Azure Kubernetes Service.

Dricks

Om du behöver IP-adresserna i stället för tjänsttaggar använder du något av följande alternativ:

IP-adresserna kan ändras med jämna mellanrum.

Du kan också behöva tillåta utgående trafik till Visual Studio Code och andra webbplatser än Microsoft för installation av paket som krävs av ditt maskininlärningsprojekt. I följande tabell visas vanliga lagringsplatser för maskininlärning:

Värdnamn Syfte
anaconda.com
*.anaconda.com
Används för att installera standardpaket.
*.anaconda.org Används för att hämta lagringsplatsdata.
pypi.org Används för att lista beroenden från standardindexet, om det finns några, och indexet skrivs inte över av användarinställningarna. Om indexet skrivs över måste du också tillåta *.pythonhosted.org.
cloud.r-project.org Används vid installation av CRAN-paket för R-utveckling.
*.pytorch.org Används av några exempel baserade på PyTorch.
*.tensorflow.org Används av några exempel som baseras på Tensorflow.
code.visualstudio.com Krävs för att ladda ned och installera Visual Studio Code Desktop. Detta krävs inte för Visual Studio Code Web.
update.code.visualstudio.com
*.vo.msecnd.net
Används för att hämta Visual Studio Code-serverbitar som är installerade på beräkningsinstansen via ett installationsskript.
marketplace.visualstudio.com
vscode.blob.core.windows.net
*.gallerycdn.vsassets.io
Krävs för att ladda ned och installera Visual Studio Code-tillägg. Dessa värdar aktiverar fjärranslutningen till Beräkningsinstanser som tillhandahålls av Azure ML-tillägget för Visual Studio Code. Mer information finns i Ansluta till en Azure Machine Learning-beräkningsinstans i Visual Studio Code.
raw.githubusercontent.com/microsoft/vscode-tools-for-ai/master/azureml_remote_websocket_server/* Används för att hämta websocket-serverbitar som är installerade på beräkningsinstansen. Websocket-servern används för att överföra begäranden från Visual Studio Code-klienten (skrivbordsprogrammet) till Visual Studio Code-servern som körs på beräkningsinstansen.

Kommentar

När du använder Azure Machine Learning VS Code-tillägget kräver fjärrberäkningsinstansen åtkomst till offentliga lagringsplatser för att installera de paket som krävs av tillägget. Om beräkningsinstansen kräver en proxy för att få åtkomst till dessa offentliga lagringsplatser eller Internet måste du ange och exportera miljövariablerna HTTP_PROXY och HTTPS_PROXY i ~/.bashrc-filen för beräkningsinstansen. Den här processen kan automatiseras vid etablering med hjälp av ett anpassat skript.

När du använder Azure Kubernetes Service (AKS) med Azure Machine Learning tillåter du följande trafik till det virtuella AKS-nätverket:

Information om hur du använder en brandväggslösning finns i Använda en brandvägg med Azure Machine Learning.

Nästa steg

Den här artikeln är en del av en serie om att skydda ett Azure Machine Learning-arbetsflöde. Se de andra artiklarna i den här serien: