Zabezpieczanie Azure Machine Learning szkoleniowego za pomocą sieci wirtualnych

Z tego artykułu dowiesz się, jak zabezpieczyć środowiska szkoleniowe za pomocą sieci wirtualnej w Azure Machine Learning.

Ten artykuł jest częścią trzy z pięciu części serii, która zawiera informacje na temat zabezpieczania przepływu pracy Azure Machine Learning przepływu pracy. Zdecydowanie zalecamy przeczytanie części pierwszej: omówienie sieci wirtualnej, aby najpierw poznać ogólną architekturę.

Zobacz inne artykuły z tej serii:

1. Omówienie sieci wirtualnej > 2. Zabezpiecz obszar roboczy > 3. Zabezpieczanie środowiska szkoleniowego > 4. Zabezpieczanie środowiska wnioskowania > 5. Włączanie funkcji programu Studio

Z tego artykułu dowiesz się, jak zabezpieczyć następujące szkoleniowe zasoby obliczeniowe w sieci wirtualnej:

  • Azure Machine Learning obliczeniowy
  • Wystąpienie obliczeniowe usługi Azure Machine Learning
  • Azure Databricks
  • Maszyna wirtualna
  • Klaster usługi HDInsight

Wymagania wstępne

  • Przeczytaj artykuł Omówienie zabezpieczeń sieci, aby poznać typowe scenariusze sieci wirtualnej i ogólną architekturę sieci wirtualnej.

  • Istniejąca sieć wirtualna i podsieć do użycia z zasobami obliczeniowymi.

  • Aby wdrożyć zasoby w sieci wirtualnej lub podsieci, konto użytkownika musi mieć uprawnienia do następujących akcji w kontroli dostępu na podstawie ról (RBAC) platformy Azure:

    • "Microsoft.Network/virtualNetworks/*/read" w zasobie sieci wirtualnej.
    • "Microsoft.Network/virtualNetworks/subnet/join/action" w zasobie podsieci.

    Aby uzyskać więcej informacji na temat kontroli RBAC platformy Azure z siecią, zobacz Wbudowane role sieci

Klastry obliczeniowe & wystąpień

Aby użyć zarządzanego docelowego Azure Machine Learning obliczeniowego lub Azure Machine Learning obliczeniowego w sieci wirtualnej, należy spełnić następujące wymagania dotyczące sieci:

  • Sieć wirtualna musi znajdować się w tej samej subskrypcji i regionie co Azure Machine Learning obszaru roboczego.
  • Podsieć określona dla wystąpienia obliczeniowego lub klastra musi mieć wystarczającą liczbę nieprzypisanych adresów IP, aby obsłużyć liczbę docelowych maszyn wirtualnych. Jeśli podsieć nie ma wystarczającej ilości nieprzypisanych adresów IP, klaster obliczeniowy zostanie przydzielony częściowo.
  • Sprawdź, czy zasady zabezpieczeń lub blokady subskrypcji lub grupy zasobów sieci wirtualnej ograniczają uprawnienia do zarządzania siecią wirtualną. Jeśli planujesz zabezpieczyć sieć wirtualną przez ograniczenie ruchu, pozostaw niektóre porty otwarte dla usługi obliczeniowej. Aby uzyskać więcej informacji, zobacz sekcję Wymagane porty.
  • Jeśli zamierzasz umieścić wiele wystąpień obliczeniowych lub klastrów w jednej sieci wirtualnej, może być konieczne zażądanie zwiększenia limitu przydziału dla co najmniej jednego z zasobów.
  • Jeśli konta usługi Azure Storage dla obszaru roboczego są również zabezpieczone w sieci wirtualnej, muszą one znajdować się w tej samej sieci wirtualnej i podsieci co Azure Machine Learning obliczeniowe lub klaster. Skonfiguruj ustawienia zapory magazynu, aby umożliwić komunikację z siecią wirtualną i obliczeniami podsieci. Pamiętaj, że zaznaczenie pola wyboru "Zezwalaj zaufanym usługi firmy Microsoft na dostęp do tego konta" nie jest wystarczające, aby zezwolić na komunikację z zasobów obliczeniowych.
  • Aby funkcja Jupyter wystąpienia obliczeniowego działała, upewnij się, że komunikacja z gniazdami internetowymi nie jest wyłączona. Upewnij się, że sieć zezwala na połączenia websocket z *.instances.azureml.net i *.instances.azureml.ms.
  • Gdy wystąpienie obliczeniowe jest wdrażane w obszarze roboczym łącza prywatnego, dostęp do niego można uzyskać tylko z poziomu sieci wirtualnej. Jeśli używasz niestandardowego pliku DNS lub hosts, dodaj wpis z prywatnym adresem IP prywatnego punktu końcowego <instance-name>.<region>.instances.azureml.ms obszaru roboczego. Aby uzyskać więcej informacji, zobacz artykuł o niestandardowym systemie DNS.
  • Podsieć używana do wdrażania klastra/wystąpienia obliczeniowego nie powinna być delegowana do żadnej innej usługi, np. ACI
  • Zasady punktu końcowego usługi dla sieci wirtualnej nie działają w przypadku kont magazynu systemowego klastra obliczeniowego/wystąpienia

Porada

Wystąpienie Machine Learning obliczeniowego lub klaster automatycznie przydziela dodatkowe zasoby sieciowe w grupie zasobów zawierającej sieć wirtualną. Dla każdego wystąpienia obliczeniowego lub klastra usługa przydziela następujące zasoby:

  • Jedna sieciowa grupa zabezpieczeń
  • Jeden publiczny adres IP. Jeśli masz zasady platformy Azure zabraniające tworzenia publicznych adresów IP, wdrożenie klastra/wystąpień nie powiedzie się
  • Jeden równoważenie obciążenia

W przypadku klastrów te zasoby są usuwane (i tworzone ponownie) za każdym razem, gdy klaster jest skalowany w dół do 0 węzłów, jednak w przypadku wystąpienia zasoby są przechowywane do momentu całkowitego usunięcia wystąpienia (zatrzymanie nie powoduje usunięcia zasobów). Te zasoby są ograniczone przez limity zasobów subskrypcji. Jeśli grupa zasobów sieci wirtualnej jest zablokowana, usunięcie klastra obliczeniowego/wystąpienia obliczeniowego nie powiedzie się. Nie można usunąć usługi równoważenia obciążenia, dopóki klaster obliczeniowy/wystąpienie nie zostanie usunięte. Upewnij się również, że nie ma żadnych zasad platformy Azure, które zabraniają tworzenia sieciowych grup zabezpieczeń.

Wymagane porty

Jeśli planujesz zabezpieczanie sieci wirtualnej przez ograniczenie ruchu sieciowego do/z publicznego Internetu, musisz zezwolić na komunikację przychodzących z Azure Batch sieci.

Usługa Batch dodaje sieciowe grupy zabezpieczeń na poziomie interfejsów sieciowych (NIC) dołączonych do maszyn wirtualnych. Te sieciowe grupy zabezpieczeń automatycznie konfigurują reguły ruchu przychodzącego i wychodzącego, aby zezwolić na następujący ruch:

  • Przychodzący ruch TCP na portach 29876 i 29877 z tagu usługi BatchNodeManagement. Ruch przez te porty jest szyfrowany i używany przez Azure Batch do komunikacji harmonogram/węzeł.

    Reguła ruchu przychodzącego, która używa tagu usługi BatchNodeManagement

  • (Opcjonalnie) Ruch przychodzący TCP na porcie 22, aby zezwolić na dostęp zdalny. Użyj tego portu tylko wtedy, gdy chcesz nawiązać połączenie przy użyciu protokołu SSH w publicznym adresie IP.

  • Ruch wychodzący na dowolny port do sieci wirtualnej.

  • Ruch wychodzący na dowolny port do Internetu.

  • W przypadku przychodzącego ruchu TCP wystąpienia obliczeniowego na porcie 44224 z tagu usługi AzureMachineLearning. Ruch przez ten port jest szyfrowany i używany przez Azure Machine Learning do komunikacji z aplikacjami uruchomionymi w wystąpieniach obliczeniowych.

Ważne

Zachowaj ostrożność przy modyfikowaniu lub dodawaniu reguły ruchu przychodzącego lub wychodzącego w sieciowych grupach zabezpieczeń skonfigurowanych za pomocą usługi Batch. Jeśli sieciowa chmurze blokuje komunikację z węzłami obliczeniowymi, usługa obliczeniowa ustawia stan węzłów obliczeniowych na nienadzorowane.

Na poziomie podsieci nie trzeba określać sieciowych Azure Batch, ponieważ usługa Azure Batch sieciowych konfiguruje własne sieciowe sieciowe sieciowe sieci. Jeśli jednak podsieć, która zawiera Azure Machine Learning obliczeniową, ma skojarzone sieciowe sieciowe sieciowe sieciowe lub zaporę, musisz również zezwolić na ruch wymieniony wcześniej.

Konfiguracja reguły sieciowej sieciowej Azure Portal jest wyświetlana na następujących obrazach:

Reguły sieciowej sieciowej środowisko obliczeniowe usługi Machine Learning

Reguły sieciowej sieciowej środowisko obliczeniowe usługi Machine Learning

Ograniczanie łączności wychodzącej z sieci wirtualnej

Jeśli nie chcesz używać domyślnych reguł ruchu wychodzącego i chcesz ograniczyć dostęp wychodzący do sieci wirtualnej, wykonaj następujące czynności:

  • Odmawiaj wychodzącego połączenia internetowego przy użyciu reguł sieciowej sieciowej sieciowej sieci.

  • W przypadku wystąpienia obliczeniowego lub klastra obliczeniowego ogranicz ruch wychodzący do następujących elementów:

    • Azure Storage przy użyciu tagu usługi Storage.RegionName. Gdzie {RegionName} to nazwa regionu świadczenia usługi Azure.
    • Azure Container Registry, używając tagu usługi AzureContainerRegistry.RegionName. Gdzie {RegionName} to nazwa regionu świadczenia usługi Azure.
    • Azure Machine Learning, używając tagu usługi AzureMachineLearning
    • Azure Resource Manager, używając tagu usługi AzureResourceManager
    • Azure Active Directory, używając tagu usługi AzureActiveDirectory

Konfiguracja reguły sieciowej sieciowej Azure Portal jest pokazana na poniższej ilustracji:

Reguły sieciowej sieciowej środowisko obliczeniowe usługi Machine Learning

Uwaga

Jeśli planujesz używanie domyślnych obrazów platformy Docker dostarczanych przez firmę Microsoft i włączanie zależności zarządzanych przez użytkownika, musisz również użyć następujących tagów usługi:

  • MicrosoftContainerRegistry
  • AzureFrontDoor.FirstParty

Ta konfiguracja jest potrzebna, gdy masz kod podobny do następujących fragmentów kodu w ramach skryptów trenowania:

Trenowania aplikacji RunConfig

# create a new runconfig object
run_config = RunConfiguration()

# configure Docker 
run_config.environment.docker.enabled = True
# For GPU, use DEFAULT_GPU_IMAGE
run_config.environment.docker.base_image = DEFAULT_CPU_IMAGE 
run_config.environment.python.user_managed_dependencies = True

Szkolenie estymatora

est = Estimator(source_directory='.',
                script_params=script_params,
                compute_target='local',
                entry_script='dummy_train.py',
                user_managed=True)
run = exp.submit(est)

Wymuszone tunelowanie

Jeśli używasz wymuszonego tunelowania z Azure Machine Learning obliczeniowymi, musisz zezwolić na komunikację z publicznym Internetem z podsieci zawierającej zasób obliczeniowy. Ta komunikacja służy do planowania zadań i uzyskiwania dostępu do usługi Azure Storage.

Można to zrobić na dwa sposoby:

  • Użyj Translator adresów sieciowych usługi Virtual Network. Brama nat zapewnia wychodzące połączenie internetowe dla co najmniej jednej podsieci w sieci wirtualnej. Aby uzyskać więcej informacji, zobacz Projektowanie sieci wirtualnych za pomocą zasobów bramy nat.

  • Dodaj trasy zdefiniowane przez użytkownika (trasy zdefiniowane przez użytkownika) do podsieci zawierającej zasób obliczeniowy. Ustanów UDR dla każdego adresu IP używanego przez usługę Azure Batch w regionie, w którym istnieją zasoby. Te funkcje zdefiniowane przez użytkownika umożliwiają usłudze Batch komunikowanie się z węzłami obliczeniowymi w celu planowania zadań. Dodaj również adres IP dla Azure Machine Learning service, ponieważ jest to wymagane w celu uzyskania dostępu do wystąpień obliczeniowych. Podczas dodawania adresu IP dla Azure Machine Learning service należy dodać adres IP dla regionów podstawowego i pomocniczego platformy Azure. Region podstawowy jest regionem, w którym znajduje się obszar roboczy.

    Aby znaleźć region pomocniczy, zobacz Zapewnianie ciągłości działania i & odzyskiwania po awarii przy użyciu sparowanych regionów platformy Azure. Jeśli na przykład twoja Azure Machine Learning service wschodniego usa 2, region pomocniczy to Środkowe usa.

    Aby uzyskać listę adresów IP usługi Batch i usługi Azure Machine Learning service, użyj jednej z następujących metod:

    • Pobierz zakresy adresów IP platformy Azure i tagi usług, a następnie wyszukaj w pliku i BatchNodeManagement.<region> , gdzie znajduje się Region platformy AzureMachineLearning.<region> <region> Azure.

    • Pobierz informacje za pomocą interfejsu wiersza polecenia platformy Azure. Poniższy przykład pobiera informacje o adresie IP i filtruje informacje dla regionu Wschodnie usa 2 (podstawowy) i Środkowe usa (pomocniczy):

      az network list-service-tags -l "East US 2" --query "values[?starts_with(id, 'Batch')] | [?properties.region=='eastus2']"
      # Get primary region IPs
      az network list-service-tags -l "East US 2" --query "values[?starts_with(id, 'AzureMachineLearning')] | [?properties.region=='eastus2']"
      # Get secondary region IPs
      az network list-service-tags -l "Central US" --query "values[?starts_with(id, 'AzureMachineLearning')] | [?properties.region=='centralus']"
      

      Porada

      Jeśli używasz regionu US-Wirginia, US-Arizona regionów lub regionów Chiny Wschodnie-2, te polecenia nie zwracają adresów IP. Zamiast tego użyj jednego z następujących linków, aby pobrać listę adresów IP:

    Podczas dodawania tras UDR zdefiniuj trasę dla każdego powiązanego prefiksu adresu IP usługi Batch i ustaw typ następnego przeskoku na Internet. Na poniższej ilustracji przedstawiono przykład tej czynności UDR w Azure Portal:

    Przykład nazwy UDR dla prefiksu adresu

    Ważne

    Adresy IP mogą zmieniać się z czasem.

    Oprócz wszelkich zdefiniowanego przez Ciebie środowisk UDR ruch wychodzący do usługi Azure Storage musi być dozwolony za pośrednictwem lokalnego urządzenia sieciowego. W szczególności adresy URL dla tego ruchu mają następujące formy: <account>.table.core.windows.net <account>.queue.core.windows.net , i <account>.blob.core.windows.net .

    Aby uzyskać więcej informacji, zobacz Create an Azure Batch pool in a virtual network (Tworzenie puli zasobów w sieci wirtualnej).

Tworzenie klastra obliczeniowego w sieci wirtualnej

Aby utworzyć środowisko obliczeniowe usługi Machine Learning klastra, należy wykonać następujące czynności:

  1. Zaloguj się do Azure Machine Learning studio, a następnie wybierz swoją subskrypcję i obszar roboczy.

  2. Wybierz pozycję Compute po lewej stronie.

  3. Wybierz pozycję Klastry szkoleniowe w środku, a następnie wybierz pozycję + .

  4. W oknie dialogowym Nowy klaster szkoleniowy rozwiń sekcję Ustawienia zaawansowane.

  5. Aby skonfigurować ten zasób obliczeniowy do korzystania z sieci wirtualnej, wykonaj następujące czynności w sekcji Konfigurowanie sieci wirtualnej:

    1. Z listy rozwijanej Grupa zasobów wybierz grupę zasobów zawierającą sieć wirtualną.
    2. Z listy rozwijanej Sieć wirtualna wybierz sieć wirtualną zawierającą podsieć.
    3. Z listy rozwijanej Podsieć wybierz podsieć do użycia.

    Ustawienia sieci wirtualnej dla środowisko obliczeniowe usługi Machine Learning

Klaster danych można również środowisko obliczeniowe usługi Machine Learning za pomocą zestawu AZURE MACHINE LEARNING SDK. Poniższy kod tworzy nowy klaster środowisko obliczeniowe usługi Machine Learning w podsieci sieci default wirtualnej o nazwie mynetwork :

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

# The Azure virtual network name, subnet, and resource group
vnet_name = 'mynetwork'
subnet_name = 'default'
vnet_resourcegroup_name = 'mygroup'

# Choose a name for your CPU cluster
cpu_cluster_name = "cpucluster"

# Verify that cluster does not exist already
try:
    cpu_cluster = ComputeTarget(workspace=ws, name=cpu_cluster_name)
    print("Found existing cpucluster")
except ComputeTargetException:
    print("Creating new cpucluster")

    # Specify the configuration for the new cluster
    compute_config = AmlCompute.provisioning_configuration(vm_size="STANDARD_D2_V2",
                                                           min_nodes=0,
                                                           max_nodes=4,
                                                           vnet_resourcegroup_name=vnet_resourcegroup_name,
                                                           vnet_name=vnet_name,
                                                           subnet_name=subnet_name)

    # Create the cluster with the specified name and configuration
    cpu_cluster = ComputeTarget.create(ws, cpu_cluster_name, compute_config)

    # Wait for the cluster to be completed, show the output log
    cpu_cluster.wait_for_completion(show_output=True)

Po zakończeniu procesu tworzenia model jest trenowany przy użyciu klastra w eksperymencie. Aby uzyskać więcej informacji, zobacz Wybieranie docelowego obiektu obliczeniowego i używanie go do trenowania.

Uwaga

Można użyć maszyn wirtualnych o niskim priorytecie do uruchamiania niektórych lub wszystkich obciążeń. Zobacz, jak utworzyć maszynę wirtualną o niskim priorytecie.

Uzyskiwanie dostępu do danych w notesie wystąpienia obliczeniowego

Jeśli używasz notesów w wystąpieniu Azure Compute, upewnij się, że notes jest uruchomiony w zasobie obliczeniowym za taką samą siecią wirtualną i podsiecią co dane.

Wystąpienie obliczeniowe należy skonfigurować tak, aby podczas tworzenia było w tej samej sieci wirtualnej, w obszarze Ustawienia zaawansowane Skonfiguruj > sieć wirtualną. Nie można dodać istniejącego wystąpienia obliczeniowego do sieci wirtualnej.

Azure Databricks

Aby można Azure Databricks w sieci wirtualnej z obszarem roboczym, należy spełnić następujące wymagania:

  • Sieć wirtualna musi znajdować się w tej samej subskrypcji i regionie co Azure Machine Learning obszaru roboczego.
  • Jeśli konta usługi Azure Storage dla obszaru roboczego są również zabezpieczone w sieci wirtualnej, muszą znajdować się w tej samej sieci wirtualnej co Azure Databricks wirtualnej.
  • Oprócz podsieci databricks-private i databricks-public używanych przez usługę Azure Databricks wymagana jest również domyślna podsieć utworzona dla sieci wirtualnej.

Aby uzyskać szczegółowe informacje na temat Azure Databricks z siecią wirtualną, zobacz Deploy Azure Databricks in your Azure Virtual Network (Wdrażanie aplikacji w usłudze Azure Virtual Network).

Maszyna wirtualna lub klaster usługi HDInsight

Ważne

Azure Machine Learning obsługuje tylko maszyny wirtualne z systemem Ubuntu.

W tej sekcji dowiesz się, jak używać maszyny wirtualnej lub klastra Azure HDInsight w sieci wirtualnej z obszarem roboczym.

Tworzenie maszyny wirtualnej lub klastra usługi HDInsight

Utwórz maszynę wirtualną lub klaster usługi HDInsight przy użyciu interfejsu Azure Portal interfejsu wiersza polecenia platformy Azure i umieść klaster w sieci wirtualnej platformy Azure. Aby uzyskać więcej informacji, zobacz następujące artykuły:

Konfigurowanie portów sieciowych

Zezw Azure Machine Learning na komunikację z portem SSH na maszynie wirtualnej lub w klastrze, skonfiguruj wpis źródłowy dla sieciowej grupy zabezpieczeń. Port SSH to zwykle port 22. Aby zezwolić na ruch z tego źródła, wykonaj następujące czynności:

  1. Z listy rozwijanej Źródło wybierz pozycję Tag usługi.

  2. Z listy rozwijanej Tag usługi źródłowej wybierz pozycję AzureMachineLearning.

    Reguły ruchu przychodzącego do eksperymentowania na maszynie wirtualnej lub klastrze usługi HDInsight w sieci wirtualnej

  3. Z listy rozwijanej Zakresy portów źródłowych wybierz pozycję * .

  4. Z listy rozwijanej Miejsce docelowe wybierz pozycję Dowolne.

  5. Z listy rozwijanej Zakresy portów docelowych wybierz pozycję 22.

  6. W obszarze Protokół wybierz pozycję Dowolne.

  7. W obszarze Akcja wybierz pozycję Zezwalaj.

Zachowaj domyślne reguły ruchu wychodzącego dla sieciowej grupy zabezpieczeń. Aby uzyskać więcej informacji, zobacz domyślne reguły zabezpieczeń w tece Grupy zabezpieczeń.

Jeśli nie chcesz używać domyślnych reguł ruchu wychodzącego i chcesz ograniczyć dostęp wychodzący do sieci wirtualnej, zobacz sekcję Ograniczanie łączności wychodzącej z sieci wirtualnej.

Dołączanie maszyny wirtualnej lub klastra usługi HDInsight

Dołącz maszynę wirtualną lub klaster usługi HDInsight do Azure Machine Learning roboczego. Aby uzyskać więcej informacji, zobacz Konfigurowanie docelowych obiektów obliczeniowych do trenowania modelu.

Następne kroki

Ten artykuł jest trzeci z pięciu części serii sieci wirtualnych. Zobacz pozostałe artykuły, aby dowiedzieć się, jak zabezpieczyć sieć wirtualną:

Zobacz również artykuł na temat używania niestandardowego systemu DNS do rozpoznawania nazw.