Zabezpieczanie środowiska wnioskowania usługi Azure Machine Learning za pomocą sieci wirtualnych (wersja 1)
DOTYCZY: Zestaw SDK języka Python w wersji 1
DOTYCZY: Rozszerzenie interfejsu wiersza polecenia platformy Azure w wersji 1
Z tego artykułu dowiesz się, jak zabezpieczyć środowiska wnioskowania za pomocą sieci wirtualnej w usłudze Azure Machine Learning. Ten artykuł jest specyficzny dla przepływu pracy wdrażania zestawu SDK/interfejsu wiersza polecenia w wersji 1 podczas wdrażania modelu jako usługi internetowej.
Napiwek
Ten artykuł jest częścią serii dotyczącej zabezpieczania przepływu pracy usługi Azure Machine Learning. Zobacz inne artykuły z tej serii:
- Omówienie sieci wirtualnej
- Zabezpieczanie zasobów obszaru roboczego
- Zabezpieczanie środowiska szkoleniowego
- Włączanie funkcji programu Studio
- Używanie niestandardowego systemu DNS
- Korzystanie z zapory
Aby zapoznać się z samouczkiem dotyczącym tworzenia bezpiecznego obszaru roboczego, zobacz Samouczek: tworzenie bezpiecznego obszaru roboczego, szablonu Bicep lub szablonu narzędzia Terraform.
Z tego artykułu dowiesz się, jak zabezpieczyć następujące zasoby wnioskowania w sieci wirtualnej:
- Domyślny klaster usługi Azure Kubernetes Service (AKS)
- Prywatny klaster usługi AKS
- Klaster usługi AKS z linkiem prywatnym
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 opartej na rolach platformy Azure (Azure RBAC):
- "Microsoft.Network/*/read" w zasobie sieci wirtualnej. To uprawnienie nie jest wymagane w przypadku wdrożeń szablonów usługi Azure Resource Manager (ARM).
- "Microsoft.Network/virtualNetworks/join/action" w zasobie sieci wirtualnej.
- "Microsoft.Network/virtualNetworks/subnets/join/action" w zasobie podsieci.
Aby uzyskać więcej informacji na temat kontroli dostępu opartej na rolach platformy Azure z siecią, zobacz Wbudowane role sieciowe
Ważne
Niektóre polecenia interfejsu wiersza polecenia platformy Azure w tym artykule używają azure-cli-ml
rozszerzenia , lub w wersji 1 dla usługi Azure Machine Learning. Obsługa rozszerzenia w wersji 1 zakończy się 30 września 2025 r. Będzie można zainstalować rozszerzenie v1 i używać go do tej daty.
Zalecamy przejście do ml
rozszerzenia , lub w wersji 2 przed 30 września 2025 r. Aby uzyskać więcej informacji na temat rozszerzenia w wersji 2, zobacz Rozszerzenie interfejsu wiersza polecenia usługi Azure ML i zestaw Python SDK w wersji 2.
Ograniczenia
Azure Container Instances
Gdy obszar roboczy usługi Azure Machine Learning jest skonfigurowany przy użyciu prywatnego punktu końcowego, wdrażanie w usłudze Azure Container Instances w sieci wirtualnej jest nieobsługiwane. Zamiast tego rozważ użycie zarządzanego punktu końcowego online z izolacją sieci.
Azure Kubernetes Service
- Jeśli klaster usługi AKS znajduje się za siecią wirtualną, obszar roboczy i skojarzone z nim zasoby (magazyn, magazyn kluczy, usługa Azure Container Registry) muszą mieć prywatne punkty końcowe lub punkty końcowe usługi w tej samej sieci wirtualnej co sieć wirtualna klastra usługi AKS. Przeczytaj samouczek dotyczący tworzenia bezpiecznego obszaru roboczego , aby dodać te prywatne punkty końcowe lub punkty końcowe usługi do sieci wirtualnej.
- Jeśli obszar roboczy ma prywatny punkt końcowy, klaster usługi Azure Kubernetes Service musi znajdować się w tym samym regionie świadczenia usługi Azure co obszar roboczy.
- Używanie publicznej w pełni kwalifikowanej nazwy domeny (FQDN) z prywatnym klastrem usługi AKS nie jest obsługiwane w usłudze Azure Machine Learning.
Azure Kubernetes Service
Ważne
Aby użyć klastra usługi AKS w sieci wirtualnej, najpierw postępuj zgodnie z wymaganiami wstępnymi w temacie Konfigurowanie zaawansowanej sieci w usłudze Azure Kubernetes Service (AKS).
Aby dodać usługę AKS w sieci wirtualnej do obszaru roboczego, wykonaj następujące kroki:
Zaloguj się do usługi Azure Machine Learning Studio, a następnie wybierz swoją subskrypcję i obszar roboczy.
Wybierz pozycję Obliczenia po lewej stronie, Klastry wnioskowania z centrum, a następnie wybierz pozycję + Nowy. Na koniec wybierz pozycję AksCompute.
W oknie dialogowym Tworzenie aplikacji AksCompute wybierz pozycję Utwórz nową, lokalizację i rozmiar maszyny wirtualnej do użycia dla klastra. Na koniec wybierz pozycję Dalej.
W sekcji Konfigurowanie ustawień wprowadź nazwę obliczeniową, wybierz pozycję Cel klastra, Liczba węzłów, a następnie wybierz pozycję Zaawansowane, aby wyświetlić ustawienia sieciowe. W obszarze Konfigurowanie sieci wirtualnej ustaw następujące wartości:
Ustaw sieć wirtualną do użycia.
Napiwek
Jeśli obszar roboczy używa prywatnego punktu końcowego do nawiązania połączenia z siecią wirtualną, pole Wyboru sieci wirtualnej jest wyszarzone.
Ustaw podsieć, aby utworzyć klaster.
W polu Zakres adresów usługi Kubernetes Service wprowadź zakres adresów usługi Kubernetes. Ten zakres adresów używa zakresu adresów IP notacji międzydomenowej bezklasowej (CIDR) do zdefiniowania adresów IP, które są dostępne dla klastra. Nie może nakładać się na żadne zakresy adresów IP podsieci (na przykład 10.0.0.0/16).
W polu Adres IP usługi DNS usługi Kubernetes wprowadź adres IP usługi DNS kubernetes. Ten adres IP jest przypisywany do usługi DNS Kubernetes. Musi znajdować się w zakresie adresów usługi Kubernetes (na przykład 10.0.0.10).
W polu Adres mostka platformy Docker wprowadź adres mostka platformy Docker. Ten adres IP jest przypisywany do mostka platformy Docker. Nie może znajdować się w żadnym zakresie adresów IP podsieci ani w zakresie adresów usługi Kubernetes (na przykład 172.18.0.1/16).
Podczas wdrażania modelu jako usługi internetowej w usłudze AKS tworzony jest punkt końcowy oceniania do obsługi żądań wnioskowania. Upewnij się, że sieciowa grupa zabezpieczeń, która kontroluje sieć wirtualną, ma włączoną regułę zabezpieczeń dla ruchu przychodzącego dla adresu IP punktu końcowego oceniania, jeśli chcesz wywołać ją spoza sieci wirtualnej.
Aby znaleźć adres IP punktu końcowego oceniania, zapoznaj się z identyfikatorem URI oceniania dla wdrożonej usługi. Aby uzyskać informacje na temat wyświetlania identyfikatora URI oceniania, zobacz Korzystanie z modelu wdrożonego jako usługa internetowa.
Ważne
Zachowaj domyślne reguły ruchu wychodzącego dla sieciowej grupy zabezpieczeń. Aby uzyskać więcej informacji, zobacz domyślne reguły zabezpieczeń w grupach zabezpieczeń.
Ważne
Adres IP pokazany na obrazie punktu końcowego oceniania będzie inny dla wdrożeń. Chociaż ten sam adres IP jest współużytkowany przez wszystkie wdrożenia w jednym klastrze usługi AKS, każdy klaster usługi AKS będzie miał inny adres IP.
Możesz również użyć zestawu SDK usługi Azure Machine Learning, aby dodać usługę Azure Kubernetes Service w sieci wirtualnej. Jeśli masz już klaster usługi AKS w sieci wirtualnej, dołącz go do obszaru roboczego zgodnie z opisem w temacie Jak wdrożyć w usłudze AKS. Poniższy kod tworzy nowe wystąpienie usługi AKS w default
podsieci sieci wirtualnej o nazwie mynetwork
:
DOTYCZY: Zestaw SDK języka Python w wersji 1
from azureml.core.compute import ComputeTarget, AksCompute
# Create the compute configuration and set virtual network information
config = AksCompute.provisioning_configuration(location="eastus2")
config.vnet_resourcegroup_name = "mygroup"
config.vnet_name = "mynetwork"
config.subnet_name = "default"
config.service_cidr = "10.0.0.0/16"
config.dns_service_ip = "10.0.0.10"
config.docker_bridge_cidr = "172.17.0.1/16"
# Create the compute target
aks_target = ComputeTarget.create(workspace=ws,
name="myaks",
provisioning_configuration=config)
Po zakończeniu procesu tworzenia można uruchomić wnioskowanie lub ocenianie modelu w klastrze usługi AKS za siecią wirtualną. Aby uzyskać więcej informacji, zobacz How to deploy to AKS (Jak wdrożyć w usłudze AKS).
Aby uzyskać więcej informacji na temat korzystania z kontroli dostępu opartej na rolach z platformą Kubernetes, zobacz Używanie kontroli dostępu opartej na rolach na potrzeby autoryzacji na platformie Kubernetes.
Rola współautora sieci
Ważne
Jeśli tworzysz lub dołączasz klaster usługi AKS, podając wcześniej utworzoną sieć wirtualną, musisz przyznać jednostce usługi (SP) lub tożsamości zarządzanej dla klastra usługi AKS rolę Współautor sieci do grupy zasobów zawierającej sieć wirtualną.
Aby dodać tożsamość jako współautora sieci, wykonaj następujące kroki:
Aby znaleźć jednostkę usługi lub identyfikator tożsamości zarządzanej dla usługi AKS, użyj następujących poleceń interfejsu wiersza polecenia platformy Azure. Zastąp
<aks-cluster-name>
ciąg nazwą klastra. Zastąp<resource-group-name>
ciąg nazwą grupy zasobów, która zawiera klaster usługi AKS:az aks show -n <aks-cluster-name> --resource-group <resource-group-name> --query servicePrincipalProfile.clientId
Jeśli to polecenie zwróci wartość
msi
, użyj następującego polecenia, aby zidentyfikować identyfikator podmiotu zabezpieczeń tożsamości zarządzanej:az aks show -n <aks-cluster-name> --resource-group <resource-group-name> --query identity.principalId
Aby znaleźć identyfikator grupy zasobów zawierającej sieć wirtualną, użyj następującego polecenia. Zastąp
<resource-group-name>
ciąg nazwą grupy zasobów, która zawiera sieć wirtualną:az group show -n <resource-group-name> --query id
Aby dodać jednostkę usługi lub tożsamość zarządzaną jako współautor sieci, użyj następującego polecenia. Zastąp element
<SP-or-managed-identity>
identyfikatorem zwróconym dla jednostki usługi lub tożsamości zarządzanej. Zastąp<resource-group-id>
element identyfikatorem zwróconym dla grupy zasobów zawierającej sieć wirtualną:az role assignment create --assignee <SP-or-managed-identity> --role 'Network Contributor' --scope <resource-group-id>
Aby uzyskać więcej informacji na temat korzystania z wewnętrznego modułu równoważenia obciążenia w usłudze AKS, zobacz Używanie wewnętrznego modułu równoważenia obciążenia z usługą Azure Kubernetes Service.
Zabezpieczanie ruchu sieci wirtualnej
Istnieją dwa podejścia do izolowania ruchu do i z klastra usługi AKS do sieci wirtualnej:
- Prywatny klaster AKS: to podejście używa usługi Azure Private Link do zabezpieczania komunikacji z klastrem na potrzeby operacji wdrażania/zarządzania.
- Wewnętrzny moduł równoważenia obciążenia usługi AKS: to podejście umożliwia skonfigurowanie punktu końcowego dla wdrożeń w usłudze AKS pod kątem używania prywatnego adresu IP w sieci wirtualnej.
Prywatny klaster usługi AKS
Domyślnie klastry usługi AKS mają płaszczyznę sterowania lub serwer interfejsu API z publicznymi adresami IP. Usługę AKS można skonfigurować tak, aby korzystała z prywatnej płaszczyzny sterowania, tworząc prywatny klaster usługi AKS. Aby uzyskać więcej informacji, zobacz Tworzenie prywatnego klastra usługi Azure Kubernetes Service.
Po utworzeniu prywatnego klastra usługi AKS dołącz klaster do sieci wirtualnej do użycia z usługą Azure Machine Learning.
Wewnętrzny moduł równoważenia obciążenia usługi AKS
Domyślnie wdrożenia usługi AKS używają publicznego modułu równoważenia obciążenia. W tej sekcji dowiesz się, jak skonfigurować usługę AKS do korzystania z wewnętrznego modułu równoważenia obciążenia. Wewnętrzny (lub prywatny) moduł równoważenia obciążenia jest używany, gdy jako fronton mogą być dozwolone tylko prywatne adresy IP. Wewnętrzne moduły równoważenia obciążenia służą do równoważenia obciążenia ruchu wewnątrz sieci wirtualnej
Prywatny moduł równoważenia obciążenia jest włączony przez skonfigurowanie usługi AKS do korzystania z wewnętrznego modułu równoważenia obciążenia.
Włączanie prywatnego modułu równoważenia obciążenia
Ważne
Nie można włączyć prywatnego adresu IP podczas tworzenia klastra usługi Azure Kubernetes Service w usłudze Azure Machine Learning Studio. Można go utworzyć za pomocą wewnętrznego modułu równoważenia obciążenia podczas korzystania z zestawu SDK języka Python lub rozszerzenia interfejsu wiersza polecenia platformy Azure na potrzeby uczenia maszynowego.
W poniższych przykładach pokazano, jak utworzyć nowy klaster usługi AKS z prywatnym adresem IP/wewnętrznym modułem równoważenia obciążenia przy użyciu zestawu SDK i interfejsu wiersza polecenia:
DOTYCZY: Zestaw SDK języka Python w wersji 1
import azureml.core
from azureml.core.compute import AksCompute, ComputeTarget
# Verify that cluster does not exist already
try:
aks_target = AksCompute(workspace=ws, name=aks_cluster_name)
print("Found existing aks cluster")
except:
print("Creating new aks cluster")
# Subnet to use for AKS
subnet_name = "default"
# Create AKS configuration
prov_config=AksCompute.provisioning_configuration(load_balancer_type="InternalLoadBalancer")
# Set info for existing virtual network to create the cluster in
prov_config.vnet_resourcegroup_name = "myvnetresourcegroup"
prov_config.vnet_name = "myvnetname"
prov_config.service_cidr = "10.0.0.0/16"
prov_config.dns_service_ip = "10.0.0.10"
prov_config.subnet_name = subnet_name
prov_config.load_balancer_subnet = subnet_name
prov_config.docker_bridge_cidr = "172.17.0.1/16"
# Create compute target
aks_target = ComputeTarget.create(workspace = ws, name = "myaks", provisioning_configuration = prov_config)
# Wait for the operation to complete
aks_target.wait_for_completion(show_output = True)
Podczas dołączania istniejącego klastra do obszaru roboczego użyj load_balancer_type
parametrów i load_balancer_subnet
AksCompute.attach_configuration(), aby skonfigurować moduł równoważenia obciążenia.
Aby uzyskać informacje na temat dołączania klastra, zobacz Dołączanie istniejącego klastra usługi AKS.
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 sieci wirtualnej, musisz zezwolić na dostęp do usługi Azure Container Registry. Upewnij się na przykład, że sieciowe grupy zabezpieczeń zawierają regułę zezwalającą na dostęp do tagu usługi AzureContainerRegistry.RegionName , w którym "{RegionName} jest nazwą regionu platformy Azure.
Następne kroki
Ten artykuł jest częścią serii dotyczącej zabezpieczania przepływu pracy usługi Azure Machine Learning. Zobacz inne artykuły z tej serii: