Skydda en Azure Machine Learning-arbetsyta med virtuella nätverk (v1)
GÄLLER FÖR:Azure CLI ml-tillägget v1Python SDK azureml v1
I den här artikeln får du lära dig hur du skyddar en Azure Machine Learning-arbetsyta och dess associerade resurser i ett virtuellt Azure-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.
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:
- Översikt över virtuella nätverk
- Skydda träningsmiljön
- Skydda slutsatsdragningsmiljön
- Aktivera studiofunktioner
- Använda anpassad DNS
- Använda en brandvägg
- API-plattformsnätverksisolering
En självstudiekurs om hur du skapar en säker arbetsyta finns i Självstudie: Skapa en säker arbetsyta, Bicep-mall eller Terraform-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 metodtips för Azure Machine Learning för företagssäkerhet om du vill veta mer om metodtips.
Ett befintligt virtuellt nätverk och undernät som ska användas med dina beräkningsresurser.
Varning
Använd inte IP-adressintervallet 172.17.0.0/16 för ditt virtuella nätverk. Det här är standardintervallet för undernät som används av Docker-bryggnätverket och resulterar i fel om det används för ditt virtuella nätverk. Andra intervall kan också vara i konflikt beroende på vad du vill ansluta till det virtuella nätverket. Om du till exempel planerar att ansluta ditt lokala nätverk till det virtuella nätverket och ditt lokala nätverk också använder intervallet 172.16.0.0/16. I slutändan är det upp till dig att planera din nätverksinfrastruktur.
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
Azure Container Registry
Azure Container Registry måste vara en Premium-version. Mer information om uppgradering finns i Ändra SKU:er.
Om ditt Azure Container Registry använder en privat slutpunkt måste det finnas i samma virtuella nätverk som lagringskontot och beräkningsmål som används för träning eller slutsatsdragning. Om den använder en tjänstslutpunkt måste den finnas i samma virtuella nätverk och undernät som lagringskontot och beräkningsmålen.
Din Azure Machine Learning-arbetsyta 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änstslutpunkt måste arbetsytans privata slutpunkt och lagringstjänstens slutpunkt finnas i samma undernät i det virtuella nätverket.
- Om lagringskontot använder en privat slutpunkt måste arbetsytans privata slutpunkt och lagringens privata slutpunkt finnas i samma virtuella nätverk. I det här fallet kan de finnas i olika undernät.
Azure Container Instances
När din Azure Machine Learning-arbetsyta har konfigurerats med en privat slutpunkt stöds inte distribution till Azure Container Instances i ett virtuellt nätverk. Överväg i stället att använda en Hanterad onlineslutpunkt med nätverksisolering.
Azure Container Registry
När ACR ligger bakom ett virtuellt nätverk kan Azure Machine Learning inte använda det för att skapa Docker-avbildningar direkt. 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 de paketlagringsplatser 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 lagringsplatser, använder privata Python-paket eller använder anpassade Docker-avbildningar som redan innehåller paketen.
Varning
Om Azure Container Registry använder en privat slutpunkt eller tjänstslutpunkt för att kommunicera med det virtuella nätverket kan du inte använda en hanterad identitet med ett Azure Machine Learning-beräkningskluster.
Azure Monitor
Varning
Azure Monitor stöder användning av Azure Private Link för att ansluta till ett virtuellt nätverk. Du måste dock använda det öppna Private Link-läget i Azure Monitor. Mer information finns i Åtkomstlägen för Private Link: Endast privat jämfört med Öppna.
Obligatorisk 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 nödvändig åtkomst och vilket syfte den tjänar. För tjänsttaggar som slutar i .region
ersä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:
- Ladda ned en lista från Azure IP-intervall och tjänsttaggar.
- Använd kommandot Azure CLI az network list-service-tags .
- Använd kommandot Azure PowerShell Get-AzNetworkServiceTag .
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:
- Allmänna krav för inkommande/utgående trafik för AKS enligt beskrivningen i artikeln Begränsa utgående trafik i Azure Kubernetes Service .
- Utgående till mcr.microsoft.com.
- När du distribuerar en modell till ett AKS-kluster använder du vägledningen i artikeln Distribuera ML-modeller till Azure Kubernetes Service .
Information om hur du använder en brandväggslösning finns i Använda en brandvägg med Azure Machine Learning.
Skydda arbetsytan med en privat slutpunkt
Med 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 dataexfiltrering.
Mer information om hur du konfigurerar en privat slutpunkt för din arbetsyta finns i Konfigurera en privat slutpunkt.
Varning
Att skydda en arbetsyta med privata slutpunkter säkerställer inte säkerhet 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 trafik mellan arbetsytan och lagring inte det virtuella nätverket för säkerhet.
Skydda Azure Storage-konton
Azure Machine Learning stöder lagringskonton som konfigurerats för att använda antingen en privat slutpunkt eller en tjänstslutpunkt.
I Azure Portal väljer du Azure Storage-kontot.
Använd informationen i Använda privata slutpunkter för Azure Storage för att lägga till privata slutpunkter för följande lagringsresurser:
- Blob
- Arkiv
- Kö – 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.
Dricks
När du konfigurerar ett lagringskonto som inte är standardlagringen väljer du den underresurstyp för mål som motsvarar det lagringskonto som du vill lägga till.
När du har skapat de privata slutpunkterna för lagringsresurserna väljer du fliken Brandväggar och virtuella nätverk under Nätverk för lagringskontot.
Välj Valda nätverk och välj
Microsoft.MachineLearningServices/Workspace
sedan Resurstyp under Resursinstanser. Välj din arbetsyta med instansnamnet. Mer information finns i Betrodd åtkomst baserat på systemtilldelad hanterad identitet.Dricks
Du kan också välja Tillåt Att Azure-tjänster i listan över betrodda tjänster får åtkomst till det här lagringskontot för att mer allmänt tillåta åtkomst från betrodda tjänster. Mer information finns i Konfigurera Azure Storage-brandväggar och virtuella nätverk.
Välj Spara för att spara konfiguration.
Dricks
När du använder en privat slutpunkt kan du också inaktivera anonym åtkomst. Mer information finns i Tillåt inte anonym åtkomst.
Skydda Azure Key Vault
Azure Machine Learning använder en associerad Key Vault-instans för att lagra följande autentiseringsuppgifter:
- Det associerade lagringskontot anslutningssträng
- 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. Använd följande steg för att använda Azure Machine Learning-experimentfunktioner med Azure Key Vault bakom ett virtuellt nätverk:
Dricks
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)
Dricks
Om du inte använde ett befintligt Azure Container Registry när du skapade arbetsytan kanske det inte finns något. Som standard skapar arbetsytan inte en ACR-instans förrän den behöver en. Om du vill tvinga fram skapandet av en modell tränar eller distribuerar du en modell 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:
Leta reda på namnet på Azure Container Registry för din arbetsyta med någon av följande metoder:
GÄLLER FÖR: Azure CLI ml-tillägget v1
Om du har installerat Machine Learning-tillägget v1 för Azure CLI kan du använda
az ml workspace show
kommandot för att visa information om arbetsytan.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.Begränsa åtkomsten till ditt virtuella nätverk med hjälp av stegen i Anslut privat till ett 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 dina Azure Machine Learning-resurser.
Konfigurera ACR för arbetsytan till Tillåt åtkomst av betrodda tjänster.
Skapa ett Azure Machine Learning-beräkningskluster. Det här klustret används för att skapa Docker-avbildningar när ACR finns bakom ett virtuellt nätverk. Mer information finns i Skapa ett beräkningskluster.
Använd någon av följande metoder för att konfigurera arbetsytan för att skapa Docker-avbildningar med hjälp av beräkningsklustret.
Viktigt!
Följande begränsningar gäller När du använder ett beräkningskluster för avbildningsversioner:
- Endast en CPU-SKU stöds.
- Om du använder ett beräkningskluster som inte har konfigurerats för någon offentlig IP-adress måste du tillhandahålla ett sätt för klustret att komma åt det offentliga Internet. Internetåtkomst krävs vid åtkomst till avbildningar som lagras i Microsoft Container Registry, paket som är installerade på Pypi, Conda osv. Du måste konfigurera användardefinierad routning (UDR) för att nå en offentlig IP-adress för att få åtkomst till Internet. Du kan till exempel använda brandväggens offentliga IP-adress eller använda NAT för virtuellt nätverk med en offentlig IP-adress. Mer information finns i Träna på ett säkert sätt i ett virtuellt nätverk.
Du kan använda
az ml workspace update
kommandot för att ange en byggberäkning. Kommandot är detsamma för både Azure CLI-tilläggen v1 och v2 för maskininlärning. I följande kommando ersätter dumyworkspace
med namnet på arbetsytan,myresourcegroup
med resursgruppen som innehåller arbetsytan ochmycomputecluster
med namnet på beräkningsklustret:az ml workspace update --name myworkspace --resource-group myresourcegroup --image-build-compute mycomputecluster
Dricks
När ACR finns bakom ett virtuellt nätverk kan du också inaktivera offentlig åtkomst till det.
Datalager och datauppsättningar
I följande tabell visas de tjänster som du behöver hoppa över validering för:
Tjänst | Vill du hoppa över verifieringen som krävs? |
---|---|
Azure Blob Storage | Ja |
Azure-filresurs | Ja |
Azure Data Lake Store Gen1 | Nej |
Azure Data Lake Store Gen2 | Nej |
Azure SQL Database | Ja |
PostgreSql | Ja |
Kommentar
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 datamängdsverifiering 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)
Skydda Azure Monitor och Application Insights
Använd följande steg för att aktivera nätverksisolering för Azure Monitor och Application Insights-instansen för arbetsytan:
Öppna din Application Insights-resurs i Azure-portalen. Fliken Översikt kanske eller kanske inte har en egenskap för Arbetsyta. Om den inte har egenskapen utför du steg 2. Om det gör det kan du gå direkt till steg 3.
Dricks
Nya arbetsytor skapar som standard en arbetsytebaserad Application Insights-resurs. Om din arbetsyta nyligen har skapats behöver du inte utföra steg 2.
Uppgradera Application Insights-instansen för din arbetsyta. Anvisningar om hur du uppgraderar finns i Migrera till arbetsytebaserade Application Insights-resurser.
Skapa ett Azure Monitor Private Link-omfång och lägg till Application Insights-instansen från steg 1 till omfånget. Anvisningar om hur du gör detta finns i Konfigurera din privata Azure Monitor-länk.
Anslut säkert till din arbetsyta
Om du vill ansluta till en arbetsyta som skyddas bakom ett virtuellt nätverk 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:
- Punkt-till-plats: Varje klientdator använder en VPN-klient för att ansluta till det virtuella nätverket.
- Plats-till-plats: En VPN-enhet ansluter det virtuella nätverket till ditt lokala nätverk.
ExpressRoute – Ansluter lokala nätverk till molnet via en privat anslutning. Anslutningen görs med hjälp av en anslutningsprovider.
Azure Bastion – I det här scenariot skapar du en virtuell Azure-dator (kallas ibland en hoppruta) i det virtuella nätverket. Sedan ansluter du till den virtuella datorn med Hjälp av Azure Bastion. Med Bastion kan du ansluta till den virtuella datorn med antingen en RDP- eller SSH-session från din lokala webbläsare. Sedan använder du jump-rutan som utvecklingsmiljö. Eftersom den finns i det virtuella nätverket kan den komma åt arbetsytan direkt. Ett exempel på hur du använder en hoppruta finns i Självstudie: Skapa en säker arbetsyta.
Viktigt!
När du använder en VPN-gateway eller ExpressRoute måste du planera hur namnmatchningen fungerar mellan dina lokala resurser och dem i det virtuella nätverket. Mer information finns i Använda en anpassad DNS-server.
Om du har problem med att ansluta till arbetsytan kan du läsa Felsöka säker arbetsyteanslutning.
Diagnostik för arbetsyta
Du kan köra diagnostik på din arbetsyta 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 är en del av en serie om att skydda ett Azure Machine Learning-arbetsflöde. Se de andra artiklarna i den här serien: