Skydda en Azure Machine Learning-arbetsyta med virtuella nätverk

I den här artikeln får du lära dig hur du Azure Machine Learning en arbetsyta och dess associerade resurser i ett virtuellt nätverk.

Tips

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

En självstudiekurs om hur du skapar en säker arbetsyta finns i Självstudie: Skapa en säker arbetsyta eller Självstudie: Skapa en säker arbetsyta med hjälp av en mall.

I den här artikeln får du lära dig hur du aktiverar följande arbetsyteresurser i ett virtuellt nätverk:

  • Azure Machine Learning-arbetsyta
  • Azure Storage-konton
  • Azure Machine Learning datalager och datauppsättningar
  • Azure Key Vault
  • Azure Container Registry

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.

  • Läs artikeln Azure Machine Learning metodtips för företagssäkerhet om du vill veta mer om bästa praxis.

  • Ett befintligt virtuellt nätverk och undernät som ska användas med dina beräkningsresurser.

    Tips

    Om du planerar att Azure Container Instances i det virtuella nätverket (för att distribuera modeller) måste arbetsytan och det virtuella nätverket finnas i samma resursgrupp. Annars kan de finnas i olika grupper.

  • 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/virtualNetworks/join/action" på den virtuella nätverksresursen.
    • "Microsoft.Network/virtualNetworks/subnet/join/action" på undernätsresursen.

    Mer information om Azure RBAC med nätverk finns i Inbyggda roller för nätverk

Azure Container Registry

  • Din Azure Container Registry måste vara Premium version. Mer information om hur du uppgraderar finns i Ändra SKU:er.

  • Din Azure Container Registry måste finnas i samma virtuella nätverk och undernät som lagringskontot och beräkningsmålen som används för träning eller slutsatsledning.

  • Arbetsytan Azure Machine Learning måste innehålla ett Azure Machine Learning beräkningskluster.

Begränsningar

Azure Storage-konto

  • Om du planerar att använda Azure Machine Learning studio och lagringskontot också finns i det virtuella nätverket finns det extra verifieringskrav:

    • Om lagringskontot använder en tjänstslutpunktmåste arbetsytans privata slutpunkt och lagringstjänstslutpunkt finnas i samma undernät i det virtuella nätverket.
    • Om lagringskontot använder en privat slutpunktmåste arbetsytans privata slutpunkt och lagringstjänstslutpunkt finnas i samma virtuella nätverk. I det här fallet kan de finnas i olika undernät.

Azure Container Registry

När ACR finns bakom ett virtuellt nätverk kan Azure Machine Learning använda det för att direkt skapa Docker-avbildningar. I stället används beräkningsklustret för att skapa avbildningarna.

Viktigt

Beräkningsklustret som används för att skapa Docker-avbildningar måste kunna komma åt paketdatabaserna som används för att träna och distribuera dina modeller. Du kan behöva lägga till nätverkssäkerhetsregler som tillåter åtkomst till offentliga lagringsplatsen, använda privata Python-paketeller använda anpassade Docker-avbildningar som redan innehåller paketen.

Varning

Om din Azure Container Registry använder en privat slutpunkt för att kommunicera med det virtuella nätverket kan du inte använda en hanterad identitet med Azure Machine Learning ett beräkningskluster. Om du vill använda en hanterad identitet med ett beräkningskluster använder du en tjänstslutpunkt med Azure Container Registry för arbetsytan.

Azure Monitor

Varning

Azure Monitor stöder användning Azure Private Link för att ansluta till ett VNet. Men Azure Machine Learning inte att använda en privat länkaktiverad Azure Monitor (inklusive Azure Application Insights). Konfigurera inteprivat länk för den Azure Monitor eller Azure Application Insights som du planerar att använda med Azure Machine Learning.

Nödvändig offentlig Internetåtkomst

Azure Machine Learning kräver både inkommande och utgående åtkomst till det offentliga Internet. Följande tabeller ger en översikt över vilken åtkomst som krävs och vad den är till för. Protokollet för alla objekt är TCP. För tjänsttaggar som slutar i .region ersätter region du med den Azure-region som innehåller din arbetsyta. Till exempel Storage.westus :

Riktning Portar Tjänsttagg Syfte
Inkommande 29876–29877 BatchNodeManagement Skapa, uppdatera och ta bort Azure Machine Learning beräkningsinstans och beräkningskluster.
Inkommande 44224 AzureMachineLearning Skapa, uppdatera och ta bort en Azure Machine Learning beräkningsinstans.
Utgående 443 AzureMonitor Används för att logga övervakning och mått till App Insights och Azure Monitor.
Utgående 80, 443 AzureActiveDirectory Autentisering med Azure AD.
Utgående 443 AzureMachineLearning Använda Azure Machine Learning tjänster.
Utgående 443 AzureResourceManager Skapa Azure-resurser med Azure Machine Learning.
Utgående 443 Storage.region Åtkomst till data som lagras i Azure Storage-kontot för Azure Batch tjänsten.
Utgående 443 AzureFrontDoor.FrontEnd
* Behövs inte i Azure Kina.
Global startpunkt för Azure Machine Learning studio.
Utgående 443 ContainerRegistry.region Få åtkomst till Docker-avbildningar från Microsoft.
Utgående 443 MicrosoftContainerRegistry.region Få åtkomst till Docker-avbildningar från Microsoft. Installation av Azure Machine Learning router för Azure Kubernetes Service.
Utgående 443 Keyvault.region Öppna nyckelvalvet för Azure Batch tjänsten. Behövs bara om arbetsytan har skapats med hbi_workspace aktiverad.

Tips

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 icke-Microsoft-webbplatser för installation av paket som krävs av ditt maskininlärningsprojekt. I följande tabell visas vanliga lagringsplatsen 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 lagringsplatsens data.
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 även tillåta *.pythonhosted.org.
cloud.r-project.org Används vid installation av CRAN-paket för R-utveckling.
*pytorch.org Används av vissa exempel baserat på PyTorch.
*.tensorflow.org Används av vissa exempel baserat på Tensorflow.
update.code.visualstudio.com

Används för att hämta VS Code-server bitar, som installeras på beräkningsinstansen via ett installationsskript.
raw.githubusercontent.com/microsoft/vscode-tools-for-ai/master/azureml_remote_websocket_server/* Används för att hämta websocket-server bitar, som är installerade på beräkningsinstansen. Websocket-servern används för att överföra begäranden från Visual Studio Code-klienten (skrivbordsprogram) till Visual Studio Code-servern som körs på beräkningsinstansen.

När du 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.

Skydda arbetsytan med privat slutpunkt

Azure Private Link kan du ansluta till din arbetsyta med hjälp av en privat slutpunkt. Den privata slutpunkten är en uppsättning privata IP-adresser i ditt virtuella nätverk. Du kan sedan begränsa åtkomsten till din arbetsyta så att den endast sker via de privata IP-adresserna. En privat slutpunkt hjälper till att minska risken för data exfiltrering.

Mer information om hur du konfigurerar en privat slutpunkt för din arbetsyta finns i Så här konfigurerar du en privat slutpunkt.

Varning

Att skydda en arbetsyta med privata slutpunkter säkerställer inte säkerheten från slutpunkt till slutpunkt på egen hand. Du måste följa stegen i resten av den här artikeln och VNet-serien för att skydda enskilda komponenter i din lösning. Om du till exempel använder en privat slutpunkt för arbetsytan, men ditt Azure Storage-konto inte ligger bakom det virtuella nätverket, använder inte trafik mellan arbetsytan och lagring VNet för säkerhet.

Skydda Azure Storage-konton

Azure Machine Learning har stöd för lagringskonton som konfigurerats att använda antingen en privat slutpunkt eller tjänstslutpunkt.

  1. I Azure Portal väljer du Azure Storage konto.

  2. Använd informationen i Använda privata slutpunkter för att Azure Storage lägga till privata slutpunkter för följande lagringsunderresurser:

    • Blob
    • Fil
    • – behövs bara om du planerar att använda ParallelRunStep i en Azure Machine Learning pipeline.
    • Tabell – behövs bara om du planerar att använda ParallelRunStep i en Azure Machine Learning pipeline.

    Screenshot showing private endpoint configuration page with blob and file options

    Tips

    När du konfigurerar ett lagringskonto som inte är standardlagringsplatsen väljer du den underkälla för Mål som motsvarar det lagringskonto som du vill lägga till.

  3. När du har skapat de privata slutpunkterna för underresurserna väljer du fliken Brandväggar och virtuella nätverk under Nätverk för lagringskontot.

  4. Välj Valda nätverkoch sedan under Resursinstanserväljer du som Resurstyp. Välj din arbetsyta med instansnamnet. Mer information finns i Betrodd åtkomst baserat på system tilldelad hanterad identitet.

    Tips

    Du kan också välja Tillåt Azure-tjänster i listan över betrodda tjänster att få åtkomst till det här lagringskontot så att åtkomst från betrodda tjänster i större utsträckning tillåts. Mer information finns i Konfigurera Azure Storage-brandväggar och virtuella nätverk.

    The networking area on the Azure Storage page in the Azure portal when using private endpoint

  5. Spara konfigurationen genom att välja Spara.

Tips

När du använder en privat slutpunkt kan du även inaktivera offentlig åtkomst. Mer information finns i Tillåta inte offentlig läsbehörighet.

Säker Azure Key Vault

Azure Machine Learning använder en associerad Key Vault för att lagra följande autentiseringsuppgifter:

  • Anslutningssträngen för det associerade lagringskontot
  • Lösenord till Azure Container Repository-instanser
  • Anslutningssträngar till datalager

Azure Key Vault kan konfigureras för att använda antingen en privat slutpunkt eller tjänstslutpunkt. Om du Azure Machine Learning använda experimenteringsfunktioner med Azure Key Vault bakom ett virtuellt nätverk använder du följande steg:

Tips

Oavsett om du använder en privat slutpunkt eller tjänstslutpunkt måste nyckelvalvet finnas i samma nätverk som arbetsytans privata slutpunkt.

Information om hur du använder en privat slutpunkt med Azure Key Vault finns i Integrera Key Vault med Azure Private Link.

Aktivera Azure Container Registry (ACR)

Tips

Om du inte använder en befintlig Azure Container Registry när du skapar arbetsytan kanske det inte finns någon. Som standard skapar arbetsytan inte en ACR-instans förrän den behöver en. Du kan tvinga fram skapandet av en modell genom att träna eller distribuera den med hjälp av din arbetsyta innan du använder stegen i det här avsnittet.

Azure Container Registry kan konfigureras för att använda en privat slutpunkt. Använd följande steg för att konfigurera arbetsytan så att den använder ACR när den finns i det virtuella nätverket:

  1. Leta upp namnet på Azure Container Registry för din arbetsyta med någon av följande metoder:

    Azure Portal

    Från översiktsavsnittet på arbetsytan länkar registervärdet till Azure Container Registry.

    Azure Container Registry for the workspace

    Azure CLI

    Om du har installerat Machine Learning för Azure CLIkan du använda kommandot för att visa arbetsyteinformationen.

    az ml workspace show -w yourworkspacename -g resourcegroupname --query 'containerRegistry'
    

    Det här kommandot returnerar ett värde som liknar "/subscriptions/{GUID}/resourceGroups/{resourcegroupname}/providers/Microsoft.ContainerRegistry/registries/{ACRname}" . Den sista delen av strängen är namnet på Azure Container Registry för arbetsytan.

  2. Begränsa åtkomsten till ditt virtuella nätverk med hjälp av stegen Anslut privat till en Azure Container Registry. När du lägger till det virtuella nätverket väljer du det virtuella nätverket och undernätet för Azure Machine Learning resurser.

  3. Konfigurera ACR för arbetsytan så att den tillåter åtkomst av betrodda tjänster.

  4. Skapa ett Azure Machine Learning beräkningskluster. Detta används för att skapa Docker-avbildningar när ACR finns bakom ett VNet. Mer information finns i Skapa ett beräkningskluster.

  5. Använd Azure Machine Learning Python SDK för att konfigurera arbetsytan för att skapa Docker-avbildningar med hjälp av beräkningsklustret. Följande kodfragment visar hur du uppdaterar arbetsytan för att ange en bygg-beräkning. Ersätt mycomputecluster med namnet på klustret som ska användas:

    from azureml.core import Workspace
    # Load workspace from an existing config file
    ws = Workspace.from_config()
    # Update the workspace to use an existing compute cluster
    ws.update(image_build_compute = 'mycomputecluster')
    # To switch back to using ACR to build (if ACR is not in the VNet):
    # ws.update(image_build_compute = '')
    

    Viktigt

    Endast AzureML-beräkningskluster med CPU-SKU stöds för avbildningsbygget vid beräkning.

    Ditt lagringskonto, beräkningskluster och Azure Container Registry måste finnas i samma undernät i det virtuella nätverket.

    Mer information finns i metodreferensen update().

Tips

När ACR finns bakom ett VNet kan du även inaktivera offentlig åtkomst till det.

Datalager och datauppsättningar

I följande tabell visas de tjänster som du behöver hoppa över verifieringen för:

Tjänst Hoppar du över verifieringen som krävs?
Azure Blob Storage Ja
Azure-filresurs Ja
Azure Data Lake Store Gen1 Inga
Azure Data Lake Store Gen2 Nej
Azure SQL Database Ja
PostgreSql Ja

Anteckning

Azure Data Lake Store Gen1 och Azure Data Lake Store Gen2 hoppar över valideringen som standard, så du behöver inte göra något.

Följande kodexempel skapar ett nytt Azure Blob-datalager och anger skip_validation=True .

blob_datastore = Datastore.register_azure_blob_container(workspace=ws,  

                                                         datastore_name=blob_datastore_name,  

                                                         container_name=container_name,  

                                                         account_name=account_name, 

                                                         account_key=account_key, 

                                                         skip_validation=True ) // Set skip_validation to true

Använda datauppsättningar

Syntaxen för att hoppa över datauppsättningsverifiering liknar följande datauppsättningstyper:

  • Avgränsad fil
  • JSON
  • Parquet
  • SQL
  • Fil

Följande kod skapar en ny JSON-datauppsättning och anger validate=False .

json_ds = Dataset.Tabular.from_json_lines_files(path=datastore_paths, 

validate=False) 

Anslut säkert till din arbetsyta

Om du vill ansluta till en arbetsyta som är skyddad bakom ett VNet använder du någon av följande metoder:

  • Azure VPN-gateway – Ansluter lokala nätverk till det virtuella nätverket via en privat anslutning. Anslutningen görs via det offentliga Internet. Det finns två typer av VPN-gatewayer som du kan använda:

  • ExpressRoute – Ansluter lokala nätverk till molnet via en privat anslutning. Anslutningen upprättas med hjälp av en anslutningsleverantör.

  • Azure Bastion – I det här scenariot skapar du en virtuell Azure-dator (kallas ibland en jumpbox) i det virtuella nätverket. Sedan ansluter du till den virtuella datorn med Azure Bastion. Med Bastion kan du ansluta till den virtuella datorn via antingen en RDP- eller SSH-session från din lokala webbläsare. Sedan använder du jumpboxen som utvecklingsmiljö. Eftersom det finns i det virtuella nätverket kan det komma åt arbetsytan direkt. Ett exempel på hur du använder en jumpbox finns i Självstudie: Skapa en säker arbetsyta.

Viktigt

När du använder en VPN-gateway eller ExpressRoutemåste du planera hur namnmatchning fungerar mellan dina lokala resurser och de i det virtuella nätverket. Mer information finns i Använda en anpassad DNS-server.

Diagnostik för arbetsyta

Du kan köra diagnostik på arbetsytan från Azure Machine Learning studio eller Python SDK. När diagnostiken har körts returneras en lista över eventuella identifierade problem. Den här listan innehåller länkar till möjliga lösningar. Mer information finns i Så här använder du arbetsytediagnostik.

Nästa steg

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