Een Azure Machine Learning-werkruimte beveiligen met virtuele netwerken (v1)

VAN TOEPASSING OP:Azure CLI ml-extensie v1Python SDK azureml v1

In dit artikel leert u hoe u een Azure Machine Learning-werkruimte en de bijbehorende resources in een Azure-Virtual Network kunt beveiligen.

Tip

Azure Machine Learning biedt ook beheerde virtuele netwerken (preview). Met een beheerd virtueel netwerk verwerkt Azure Machine Learning de taak van netwerkisolatie voor uw werkruimte en beheerde berekeningen. U kunt ook privé-eindpunten toevoegen voor resources die nodig zijn voor de werkruimte, zoals Azure Storage-account. Zie Werkruimte-beheerd netwerkisolatie voor meer informatie.

Dit artikel maakt deel uit van een reeks over het beveiligen van een Azure Machine Learning-werkstroom. Zie de andere artikelen in deze reeks:

Zie Zelfstudie: Een beveiligde werkruimte maken of Zelfstudie: Een beveiligde werkruimte maken met een sjabloon voor een zelfstudie over het maken van een beveiligde werkruimte.

In dit artikel leert u hoe u de volgende werkruimteresources in een virtueel netwerk inschakelt:

  • Azure Machine Learning-werkruimte
  • Azure Storage-accounts
  • Azure Machine Learning-gegevensarchieven en -gegevenssets
  • Azure Key Vault
  • Azure Container Registry

Vereisten

  • Lees het artikel Overzicht van netwerkbeveiliging voor meer informatie over veelvoorkomende scenario's voor virtuele netwerken en de algehele architectuur van virtuele netwerken.

  • Lees het artikel Best practices voor azure Machine Learning voor bedrijfsbeveiliging voor meer informatie over best practices.

  • Een bestaand virtueel netwerk en subnet voor gebruik met uw rekenresources.

    Belangrijk

    Het wordt afgeraden om het IP-adresbereik 172.17.0.0/16 voor uw VNet te gebruiken. Dit is het standaardsubnetbereik dat wordt gebruikt door het Docker Bridge-netwerk. Andere bereiken kunnen ook conflict veroorzaken, afhankelijk van wat u wilt verbinden met het virtuele netwerk. Als u bijvoorbeeld van plan bent om uw on-premises netwerk te verbinden met het VNet en uw on-premises netwerk ook het bereik 172.16.0.0/16 gebruikt. Uiteindelijk is het aan u om uw netwerkinfrastructuur te plannen.

  • Als u resources wilt implementeren in een virtueel netwerk of subnet, moet uw gebruikersaccount machtigingen hebben voor de volgende acties in op rollen gebaseerd toegangsbeheer van Azure (Azure RBAC):

    • 'Microsoft.Network/virtualNetworks/join/action' in de resource van het virtuele netwerk.
    • 'Microsoft.Network/virtualNetworks/subnets/join/action' op de subnetresource.

    Zie Ingebouwde rollen voor netwerken voor meer informatie over Azure RBAC met netwerken

Azure Container Registry

  • Uw Azure Container Registry moet een Premium-versie zijn. Zie SKU's wijzigen voor meer informatie over het upgraden.

  • Als uw Azure Container Registry gebruikmaakt van een privé-eindpunt, moet het zich in hetzelfde virtuele netwerk bevinden als het opslagaccount en de rekendoelen die worden gebruikt voor training of deductie. Als een service-eindpunt wordt gebruikt, moet het zich in hetzelfde virtuele netwerk en subnet bevinden als het opslagaccount en de rekendoelen.

  • Uw Azure Machine Learning-werkruimte moet een Azure Machine Learning-rekencluster bevatten.

Beperkingen

Azure Storage-account

  • Als u van plan bent om Azure Machine Learning-studio te gebruiken en het opslagaccount zich ook in het VNet bevindt, zijn er extra validatievereisten:

    • Als het opslagaccount een service-eindpunt gebruikt, moeten het privé-eindpunt van de werkruimte en het eindpunt van de opslagservice zich in hetzelfde subnet van het VNet bevinden.
    • Als het opslagaccount een privé-eindpunt gebruikt, moeten het privé-eindpunt van de werkruimte en het privé-eindpunt van de opslag zich in hetzelfde VNet bevinden. In dit geval kunnen ze zich in verschillende subnetten bevinden.

Azure Container Instances

Wanneer uw Azure Machine Learning-werkruimte is geconfigureerd met een privé-eindpunt, wordt implementeren naar Azure Container Instances in een VNet niet ondersteund. Overweeg in plaats daarvan het gebruik van een beheerd online-eindpunt met netwerkisolatie.

Azure Container Registry

Wanneer ACR zich achter een virtueel netwerk bevindt, kan Azure Machine Learning dit niet gebruiken om rechtstreeks Docker-installatiekopieën te bouwen. In plaats daarvan wordt het rekencluster gebruikt om de installatiekopieën te bouwen.

Belangrijk

Het rekencluster dat wordt gebruikt voor het bouwen van Docker-installatiekopieën, moet toegang hebben tot de pakketopslagplaatsen die worden gebruikt voor het trainen en implementeren van uw modellen. Mogelijk moet u netwerkbeveiligingsregels toevoegen die toegang tot openbare opslagplaatsen toestaan, persoonlijke Python-pakketten gebruiken of aangepaste Docker-installatiekopieën gebruiken die de pakketten al bevatten.

Waarschuwing

Als uw Azure Container Registry een privé-eindpunt of service-eindpunt gebruikt om te communiceren met het virtuele netwerk, kunt u geen beheerde identiteit gebruiken met een Azure Machine Learning-rekencluster.

Azure Monitor

Waarschuwing

Azure Monitor ondersteunt het gebruik van Azure Private Link om verbinding te maken met een VNet. U moet echter de modus open Private Link gebruiken in Azure Monitor. Zie Private Link toegangsmodi: alleen privé versus openen voor meer informatie.

Openbare netwerktoegang blokkeren

Azure Machine Learning vereist zowel binnenkomende als uitgaande toegang tot het openbare internet. De volgende tabellen bieden een overzicht van de vereiste toegang en het doel ervan. Voor servicetags die eindigen op .region, vervangt u door region de Azure-regio die uw werkruimte bevat. Bijvoorbeeld Storage.westus:

Tip

Het tabblad Vereist bevat de vereiste configuratie voor inkomend en uitgaand verkeer. Het tabblad Situational bevat optionele binnenkomende en uitgaande configuraties die vereist zijn voor specifieke configuraties die u mogelijk wilt inschakelen.

Richting Protocol &
ports
Servicetag Doel
Uitgaand TCP: 80, 443 AzureActiveDirectory Verificatie met behulp van Azure AD.
Uitgaand TCP: 443, 18881
UDP: 5831
AzureMachineLearning Azure Machine Learning-services gebruiken.
Python intelliSense in notebooks maakt gebruik van poort 18881.
Voor het maken, bijwerken en verwijderen van een Azure Machine Learning-rekenproces wordt poort 5831 gebruikt.
Uitgaand ALLE: 443 BatchNodeManagement.region Communicatie met Azure Batch back-end voor Azure Machine Learning-rekeninstanties/-clusters.
Uitgaand TCP: 443 AzureResourceManager Azure-resources maken met Azure Machine Learning, Azure CLI en Azure Machine Learning SDK.
Uitgaand TCP: 443 Storage.region Toegang tot gegevens die zijn opgeslagen in het Azure Storage-account voor het rekencluster en rekenproces. Zie Bescherming tegen gegevensexfiltratie voor informatie over het voorkomen van gegevensexfiltratie via deze uitgaande gegevens.
Uitgaand TCP: 443 AzureFrontDoor.FrontEnd
* Niet nodig in Azure China.
Globaal toegangspunt voor Azure Machine Learning-studio. Afbeeldingen en omgevingen opslaan voor AutoML. Zie Bescherming tegen gegevensexfiltratie voor informatie over het voorkomen van gegevensexfiltratie via deze uitgaande gegevens.
Uitgaand TCP: 443 MicrosoftContainerRegistry.region
Houd er rekening mee dat deze tag afhankelijk is van de AzureFrontDoor.FirstParty tag
Toegang tot docker-installatiekopieën die door Microsoft worden geleverd. Installatie van de Azure Machine Learning-router voor Azure Kubernetes Service.

Tip

Als u de IP-adressen nodig hebt in plaats van servicetags, gebruikt u een van de volgende opties:

De IP-adressen kunnen periodiek worden gewijzigd.

Mogelijk moet u ook uitgaand verkeer naar Visual Studio Code en niet-Microsoft-sites toestaan voor de installatie van pakketten die vereist zijn voor uw machine learning-project. De volgende tabel bevat veelgebruikte opslagplaatsen voor machine learning:

Hostnaam Doel
anaconda.com
*.anaconda.com
Wordt gebruikt om standaardpakketten te installeren.
*.anaconda.org Wordt gebruikt om opslagplaatsgegevens op te halen.
pypi.org Wordt gebruikt om afhankelijkheden van de standaardindex weer te geven, indien van toepassing, en de index wordt niet overschreven door gebruikersinstellingen. Als de index wordt overschreven, moet u ook toestaan *.pythonhosted.org.
cloud.r-project.org Wordt gebruikt bij het installeren van CRAN-pakketten voor R-ontwikkeling.
*pytorch.org Gebruikt door enkele voorbeelden op basis van PyTorch.
*.tensorflow.org Gebruikt door enkele voorbeelden op basis van Tensorflow.
code.visualstudio.com Vereist voor het downloaden en installeren van Het bureaublad van Visual Studio Code. Dit is niet vereist voor Visual Studio Code Web.
update.code.visualstudio.com
*.vo.msecnd.net
Wordt gebruikt voor het ophalen van Visual Studio Code-serverbits die zijn geïnstalleerd op het rekenproces via een installatiescript.
marketplace.visualstudio.com
vscode.blob.core.windows.net
*.gallerycdn.vsassets.io
Vereist voor het downloaden en installeren van Visual Studio Code-extensies. Deze hosts maken de externe verbinding met rekeninstanties mogelijk die worden geleverd door de Azure ML-extensie voor Visual Studio Code. Zie Verbinding maken met een Azure Machine Learning-rekenproces in Visual Studio Code voor meer informatie.
raw.githubusercontent.com/microsoft/vscode-tools-for-ai/master/azureml_remote_websocket_server/* Wordt gebruikt voor het ophalen van websocket-serverbits, die zijn geïnstalleerd op het rekenproces. De websocket-server wordt gebruikt voor het verzenden van aanvragen van de Visual Studio Code-client (bureaubladtoepassing) naar de Visual Studio Code-server die wordt uitgevoerd op het rekenproces.

Notitie

Wanneer u de Azure Machine Learning VS Code-extensie gebruikt, heeft het externe rekenproces toegang nodig tot openbare opslagplaatsen om de pakketten te installeren die vereist zijn voor de extensie. Als het rekenproces een proxy vereist voor toegang tot deze openbare opslagplaatsen of internet, moet u de omgevingsvariabelen en HTTPS_PROXY in het HTTP_PROXY~/.bashrc bestand van het rekenproces instellen en exporteren. Dit proces kan tijdens het inrichten worden geautomatiseerd met behulp van een aangepast script.

Wanneer u Azure Kubernetes Service (AKS) gebruikt met Azure Machine Learning, moet u het volgende verkeer naar het AKS-VNet toestaan:

Zie Een firewall gebruiken met Azure Machine Learning voor meer informatie over het gebruik van een firewalloplossing.

De werkruimte beveiligen met een privé-eindpunt

met Azure Private Link kunt u verbinding maken met uw werkruimte via een privé-eindpunt. Het privé-eindpunt is een set privé-IP-adressen in uw virtuele netwerk. U kunt vervolgens de toegang tot uw werkruimte beperken tot alleen via de privé-IP-adressen. Een privé-eindpunt helpt het risico op gegevensexfiltratie te verminderen.

Zie Een privé-eindpunt configureren voor meer informatie over het configureren van een privé-eindpunt voor uw werkruimte.

Waarschuwing

Het beveiligen van een werkruimte met privé-eindpunten zorgt op zichzelf niet voor end-to-end-beveiliging. U moet de stappen in de rest van dit artikel en de VNet-reeks volgen om afzonderlijke onderdelen van uw oplossing te beveiligen. Als u bijvoorbeeld een privé-eindpunt voor de werkruimte gebruikt, maar uw Azure Storage-account zich niet achter het VNet bevindt, gebruikt verkeer tussen de werkruimte en de opslag het VNet niet voor beveiliging.

Azure-opslagaccounts beveiligen

Azure Machine Learning ondersteunt opslagaccounts die zijn geconfigureerd voor het gebruik van een privé-eindpunt of service-eindpunt.

  1. Selecteer in de Azure Portal het Azure Storage-account.

  2. Gebruik de informatie in Privé-eindpunten gebruiken voor Azure Storage om privé-eindpunten toe te voegen voor de volgende opslagresources:

    • Blob
    • File
    • Wachtrij : alleen nodig als u ParallelRunStep wilt gebruiken in een Azure Machine Learning-pijplijn.
    • Tabel : alleen nodig als u ParallelRunStep wilt gebruiken in een Azure Machine Learning-pijplijn.

    Schermopname van de configuratiepagina van het privé-eindpunt met blob- en bestandsopties

    Tip

    Wanneer u een opslagaccount configureert dat niet de standaardopslag is, selecteert u het type doelsubresource dat overeenkomt met het opslagaccount dat u wilt toevoegen.

  3. Nadat u de privé-eindpunten voor de opslagresources hebt gemaakt, selecteert u het tabblad Firewalls en virtuele netwerken onder Netwerken voor het opslagaccount.

  4. Selecteer Geselecteerde netwerken en selecteer vervolgens onder Resource-exemplaren de optie Microsoft.MachineLearningServices/WorkspaceResourcetype. Selecteer uw werkruimte met exemplaarnaam. Zie Vertrouwde toegang op basis van door het systeem toegewezen beheerde identiteit voor meer informatie.

    Tip

    U kunt ook Azure-services toestaan selecteren in de lijst met vertrouwde services om toegang te krijgen tot dit opslagaccount om toegang vanuit vertrouwde services breder toe te staan. Raadpleeg Firewalls en virtuele netwerken voor Azure Storage configureren voor meer informatie.

    Het netwerkgebied op de pagina Azure Storage in de Azure Portal bij gebruik van een privé-eindpunt

  5. Selecteer Opslaan om de configuratie op te slaan.

Tip

Wanneer u een privé-eindpunt gebruikt, kunt u ook openbare toegang uitschakelen. Zie Openbare leestoegang niet toestaan voor meer informatie.

Azure Key Vault beveiligen

Azure Machine Learning maakt gebruik van een gekoppeld Key Vault-exemplaar om de volgende referenties op te slaan:

  • Het gekoppelde opslagaccount connection string
  • Wachtwoorden voor Azure Container Repository-exemplaren
  • Verbindingsreeksen met gegevensarchieven

Azure Key Vault kan worden geconfigureerd voor het gebruik van een privé-eindpunt of service-eindpunt. Voer de volgende stappen uit als u de mogelijkheden van Azure Machine Learning-experimenten wilt gebruiken met Azure Key Vault achter een virtueel netwerk:

Tip

Ongeacht of u een privé-eindpunt of service-eindpunt gebruikt, moet de sleutelkluis zich in hetzelfde netwerk bevinden als het privé-eindpunt van de werkruimte.

Zie Integreren Key Vault met Azure Private Link voor meer informatie over het gebruik van een privé-eindpunt met Azure Key Vault.

Azure Container Registry (ACR) inschakelen

Tip

Als u geen bestaande Azure Container Registry hebt gebruikt bij het maken van de werkruimte, bestaat er mogelijk geen. Standaard maakt de werkruimte geen ACR-exemplaar totdat deze er een nodig heeft. Als u het maken van een model wilt afdwingen, traint of implementeert u een model met behulp van uw werkruimte voordat u de stappen in deze sectie uitvoert.

Azure Container Registry kan worden geconfigureerd voor het gebruik van een privé-eindpunt. Gebruik de volgende stappen om uw werkruimte te configureren voor het gebruik van ACR wanneer deze zich in het virtuele netwerk bevindt:

  1. Zoek de naam van de Azure Container Registry voor uw werkruimte met behulp van een van de volgende methoden:

    VAN TOEPASSING OP:Azure CLI ml-extensie v1

    Als u de Machine Learning-extensie v1 voor Azure CLI hebt geïnstalleerd, kunt u de az ml workspace show opdracht gebruiken om de werkruimtegegevens weer te geven.

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

    Deze opdracht retourneert een waarde die vergelijkbaar is met "/subscriptions/{GUID}/resourceGroups/{resourcegroupname}/providers/Microsoft.ContainerRegistry/registries/{ACRname}". Het laatste deel van de tekenreeks is de naam van de Azure Container Registry voor de werkruimte.

  2. Beperk de toegang tot uw virtuele netwerk met behulp van de stappen in Privé verbinding maken met een Azure Container Registry. Wanneer u het virtuele netwerk toevoegt, selecteert u het virtuele netwerk en subnet voor uw Azure Machine Learning-resources.

  3. Configureer de ACR voor de werkruimte op Toegang door vertrouwde services toestaan.

  4. Maak een Azure Machine Learning-rekencluster. Dit cluster wordt gebruikt om Docker-installatiekopieën te bouwen wanneer ACR zich achter een VNet bevindt. Zie Een rekencluster maken voor meer informatie.

  5. Gebruik een van de volgende methoden om de werkruimte te configureren voor het bouwen van Docker-installatiekopieën met behulp van het rekencluster.

    Belangrijk

    De volgende beperkingen zijn van toepassing wanneer u een rekencluster gebruikt voor builds van installatiekopieën:

    • Alleen een CPU-SKU wordt ondersteund.
    • Als u een rekencluster gebruikt dat is geconfigureerd voor geen openbaar IP-adres, moet u het cluster op een of andere manier toegang geven tot het openbare internet. Internettoegang is vereist bij het openen van installatiekopieën die zijn opgeslagen in het Microsoft Container Registry, pakketten die zijn geïnstalleerd op Pypi, Conda, enzovoort. U moet door de gebruiker gedefinieerde routering (UDR) configureren om toegang te krijgen tot een openbaar IP-adres voor toegang tot internet. U kunt bijvoorbeeld het openbare IP-adres van uw firewall gebruiken of u kunt Virtual Network NAT gebruiken met een openbaar IP-adres. Zie Veilig trainen in een VNet voor meer informatie.

    U kunt de az ml workspace update opdracht gebruiken om een build-berekening in te stellen. De opdracht is hetzelfde voor zowel de v1- als v2 Azure CLI-extensies voor machine learning. Vervang in de volgende opdracht door myworkspace de naam van uw werkruimte, myresourcegroup door de resourcegroep die de werkruimte bevat en mycomputecluster door de naam van het rekencluster:

    az ml workspace update --name myworkspace --resource-group myresourcegroup --image-build-compute mycomputecluster
    

Tip

Wanneer ACR zich achter een VNet bevindt, kunt u ook openbare toegang tot het VNet uitschakelen.

Gegevensarchieven en gegevenssets

De volgende tabel bevat de services waarvoor u validatie moet overslaan:

Service Validatie overslaan vereist?
Azure Blob Storage Yes
Azure-bestandsshare Yes
Azure Data Lake Store Gen1 No
Azure Data Lake Store Gen2 Nee
Azure SQL Database Ja
PostgreSql Yes

Notitie

Azure Data Lake Store Gen1 en Azure Data Lake Store Gen2 slaan validatie standaard over, zodat u niets hoeft te doen.

Met het volgende codevoorbeeld wordt een nieuw Azure Blob-gegevensarchief gemaakt en ingesteld 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

Gegevenssets gebruiken

De syntaxis voor het overslaan van gegevenssetvalidatie is vergelijkbaar voor de volgende typen gegevenssets:

  • Bestand met scheidingstekens
  • JSON
  • Parquet
  • SQL
  • File

Met de volgende code maakt u een nieuwe JSON-gegevensset en stelt u in validate=False.

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

validate=False) 

Azure Monitor en Application Insights beveiligen

Gebruik de volgende stappen om netwerkisolatie in te schakelen voor Azure Monitor en het Application Insights-exemplaar voor de werkruimte:

  1. Werk het Application Insights-exemplaar voor uw werkruimte bij. Zie Migreren naar application insights-resources op basis van werkruimten voor stappen voor het upgraden.

    Tip

    Nieuwe werkruimten maken standaard een Application Insights-resource op basis van een werkruimte.

  2. Maak een Azure Monitor Private Link Scope en voeg het Application Insights-exemplaar uit stap 1 toe aan het bereik. Zie Uw privékoppeling voor Azure Monitor configureren voor stappen om dit te doen.

Veilig verbinding maken met uw werkruimte

Als u verbinding wilt maken met een werkruimte die is beveiligd achter een VNet, gebruikt u een van de volgende methoden:

  • Azure VPN-gateway : verbindt on-premises netwerken met het VNet via een privéverbinding. Er wordt verbinding gemaakt via het openbare internet. Er zijn twee soorten VPN-gateways die u kunt gebruiken:

  • ExpressRoute : verbindt on-premises netwerken met de cloud via een privéverbinding. Er wordt verbinding gemaakt met behulp van een connectiviteitsprovider.

  • Azure Bastion : in dit scenario maakt u een virtuele Azure-machine (ook wel een jumpbox genoemd) in het VNet. Vervolgens maakt u verbinding met de VIRTUELE machine met behulp van Azure Bastion. Met Bastion kunt u verbinding maken met de VM met behulp van een RDP- of SSH-sessie vanuit uw lokale webbrowser. Vervolgens gebruikt u de jumpbox als uw ontwikkelomgeving. Omdat het zich in het VNet bevindt, heeft het rechtstreeks toegang tot de werkruimte. Zie Zelfstudie: Een beveiligde werkruimte maken voor een voorbeeld van het gebruik van een jumpbox.

Belangrijk

Wanneer u een VPN-gateway of ExpressRoute gebruikt, moet u plannen hoe naamomzetting werkt tussen uw on-premises resources en die in het VNet. Zie Een aangepaste DNS-server gebruiken voor meer informatie.

Als u problemen ondervindt bij het maken van verbinding met de werkruimte, raadpleegt u Problemen met beveiligde werkruimteconnectiviteit oplossen.

Werkruimtediagnose

U kunt diagnostische gegevens uitvoeren op uw werkruimte vanuit Azure Machine Learning-studio of de Python SDK. Nadat de diagnose is uitgevoerd, wordt een lijst met gedetecteerde problemen geretourneerd. Deze lijst bevat koppelingen naar mogelijke oplossingen. Zie Diagnostische gegevens over werkruimten gebruiken voor meer informatie.

Volgende stappen

Dit artikel maakt deel uit van een reeks over het beveiligen van een Azure Machine Learning-werkstroom. Zie de andere artikelen in deze reeks: