Zabezpečení prostředí odvozování ve službě Azure Machine Learning s využitím virtuálních sítí (v1)
PLATÍ PRO: Python SDK azureml v1
PLATÍ PRO: Rozšíření Azure CLI ml v1
V tomto článku se dozvíte, jak zabezpečit prostředí odvozování pomocí virtuální sítě ve službě Azure Machine Learning. Tento článek je specifický pro pracovní postup nasazení sady SDK/CLI v1 nasazení modelu jako webové služby.
Tip
Tento článek je součástí série o zabezpečení pracovního postupu služby Azure Machine Learning. Podívejte se na další články v této sérii:
- Přehled virtuální sítě
- Zabezpečení prostředků pracovního prostoru
- Zabezpečení trénovacího prostředí
- Povolení funkcí studia
- Použití vlastní služby DNS
- Použití brány firewall
Kurz vytvoření zabezpečeného pracovního prostoru najdete v tématu Kurz: Vytvoření zabezpečeného pracovního prostoru, šablony Bicep nebo šablony Terraformu.
V tomto článku se dozvíte, jak zabezpečit následující prostředky odvozování ve virtuální síti:
- Výchozí cluster Azure Kubernetes Service (AKS)
- Privátní cluster AKS
- Cluster AKS s privátním propojením
Požadavky
Přečtěte si článek s přehledem zabezpečení sítě a seznamte se s běžnými scénáři virtuální sítě a celkovou architekturou virtuální sítě.
Existující virtuální síť a podsíť pro použití s výpočetními prostředky.
Pokud chcete nasadit prostředky do virtuální sítě nebo podsítě, musí mít váš uživatelský účet oprávnění k následujícím akcím v řízení přístupu na základě role v Azure (Azure RBAC):
- Microsoft.Network/*/read v prostředku virtuální sítě. Toto oprávnění není potřeba pro nasazení šablon Azure Resource Manageru (ARM).
- "Microsoft.Network/virtualNetworks/join/action" u prostředku virtuální sítě.
- Prostředek podsítě "Microsoft.Network/virtualNetworks/subnets/join/action".
Další informace o Azure RBAC se sítěmi najdete v předdefinovaných rolích sítě.
Důležité
Některé příkazy Azure CLI v tomto článku používají azure-cli-ml
rozšíření (nebo v1) pro Azure Machine Learning. Podpora rozšíření v1 skončí 30. září 2025. Do tohoto data budete moct nainstalovat a používat rozšíření v1.
Doporučujeme přejít na ml
rozšíření (nebo v2) před 30. zářím 2025. Další informace o rozšíření v2 najdete v tématu Rozšíření Azure ML CLI a Python SDK v2.
Omezení
Azure Container Instances
Pokud je pracovní prostor služby Azure Machine Learning nakonfigurovaný s privátním koncovým bodem, nasazení do Azure Container Instances ve virtuální síti se nepodporuje. Místo toho zvažte použití spravovaného online koncového bodu s izolací sítě.
Azure Kubernetes Service
- Pokud je cluster AKS za virtuální sítí, váš pracovní prostor a jeho přidružené prostředky (úložiště, trezor klíčů, Azure Container Registry) musí mít ve stejné virtuální síti jako virtuální síť clusteru AKS privátní koncové body nebo koncové body služby. Přečtěte si kurz vytvoření zabezpečeného pracovního prostoru pro přidání těchto privátních koncových bodů nebo koncových bodů služby do virtuální sítě.
- Pokud má váš pracovní prostor privátní koncový bod, cluster Azure Kubernetes Service musí být ve stejné oblasti Azure jako pracovní prostor.
- Azure Machine Learning nepodporuje používání veřejného plně kvalifikovaného názvu domény (FQDN) s privátním clusterem AKS.
Azure Kubernetes Service
Důležité
Pokud chcete použít cluster AKS ve virtuální síti, nejprve postupujte podle požadavků v tématu Konfigurace pokročilých sítí ve službě Azure Kubernetes Service (AKS).
Pokud chcete do svého pracovního prostoru přidat AKS do virtuální sítě, postupujte následovně:
Přihlaste se k studio Azure Machine Learning a vyberte své předplatné a pracovní prostor.
Na levé straně vyberte Výpočty , odvozovat clustery z centra a pak vyberte + Nový. Nakonec vyberte AksCompute.
V dialogovém okně Vytvořit AksCompute vyberte Vytvořit nový, umístění a velikost virtuálního počítače, které chcete použít pro cluster. Nakonec vyberte Další.
V části Konfigurovat nastavení zadejte název výpočetních prostředků, vyberte účel clusteru, počet uzlů a pak vyberte Upřesnit, abyste zobrazili nastavení sítě. V oblasti Konfigurace virtuální sítě nastavte následující hodnoty:
Nastavte virtuální síť, která se má použít.
Tip
Pokud váš pracovní prostor používá privátní koncový bod pro připojení k virtuální síti, pole pro výběr virtuální sítě je neaktivní.
Nastavte podsíť pro vytvoření clusteru.
Do pole Rozsah adres služby Kubernetes Service zadejte rozsah adres služby Kubernetes. Tento rozsah adres používá rozsah IP adres CIDR (Classless Inter-Domain Routing) k definování IP adres dostupných pro cluster. Nesmí se překrývat s žádnými rozsahy IP adres podsítě (například 10.0.0.0/16).
Do pole IP adresa služby DNS Kubernetes zadejte IP adresu služby DNS Kubernetes. Tato IP adresa se přiřadí službě DNS Kubernetes. Musí být v rozsahu adres služby Kubernetes (například 10.0.0.10).
Do pole adresa mostu Dockeru zadejte adresu mostu Dockeru. Tato IP adresa je přiřazena do Mostu Dockeru. Nesmí být v žádném rozsahu IP adres podsítě ani v rozsahu adres služby Kubernetes (například 172.18.0.1/16).
Když do AKS nasadíte model jako webovou službu, vytvoří se bodovací koncový bod pro zpracování požadavků odvozování. Ujistěte se, že skupina zabezpečení sítě (NSG), která řídí virtuální síť, má pro IP adresu koncového bodu bodování povolené příchozí pravidlo zabezpečení, pokud ho chcete volat mimo virtuální síť.
Pokud chcete najít IP adresu koncového bodu bodování, podívejte se na identifikátor URI bodování nasazené služby. Informace o zobrazení hodnoticího identifikátoru URI najdete v tématu Využití modelu nasazeného jako webová služba.
Důležité
Ponechte výchozí pravidla odchozích přenosů pro skupinu zabezpečení sítě. Další informace najdete ve výchozích pravidlech zabezpečení ve skupinách zabezpečení.
Důležité
IP adresa zobrazená na obrázku pro bodovací koncový bod se bude pro vaše nasazení lišit. Zatímco stejnou IP adresu sdílí všechna nasazení do jednoho clusteru AKS, každý cluster AKS bude mít jinou IP adresu.
Sadu Azure Machine Learning SDK můžete také použít k přidání služby Azure Kubernetes Service do virtuální sítě. Pokud už máte cluster AKS ve virtuální síti, připojte ho k pracovnímu prostoru, jak je popsáno v postupu nasazení do AKS. Následující kód vytvoří novou instanci AKS v default
podsíti virtuální sítě s názvem mynetwork
:
PLATÍ PRO: Python SDK azureml v1
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 dokončení procesu vytváření můžete spustit odvozování nebo vyhodnocování modelu v clusteru AKS za virtuální sítí. Další informace najdete v tématu Postup nasazení do AKS.
Další informace o používání řízení přístupu na základě role s Kubernetes najdete v tématu Použití Azure RBAC pro autorizaci Kubernetes.
Role Přispěvatel sítě
Důležité
Pokud vytvoříte nebo připojíte cluster AKS tím, že poskytnete virtuální síť, kterou jste vytvořili dříve, musíte instančnímu objektu (SP) nebo spravované identitě clusteru AKS udělit roli Přispěvatel sítě skupině prostředků, která obsahuje virtuální síť.
Pokud chcete přidat identitu jako přispěvatel sítě, postupujte následovně:
K vyhledání instančního objektu nebo ID spravované identity pro AKS použijte následující příkazy Azure CLI. Nahraďte
<aks-cluster-name>
názvem clusteru. Nahraďte<resource-group-name>
názvem skupiny prostředků, která obsahuje cluster AKS:az aks show -n <aks-cluster-name> --resource-group <resource-group-name> --query servicePrincipalProfile.clientId
Pokud tento příkaz vrátí hodnotu
msi
, pomocí následujícího příkazu identifikujte ID objektu zabezpečení pro spravovanou identitu:az aks show -n <aks-cluster-name> --resource-group <resource-group-name> --query identity.principalId
K vyhledání ID skupiny prostředků, která obsahuje vaši virtuální síť, použijte následující příkaz. Nahraďte
<resource-group-name>
názvem skupiny prostředků, která obsahuje virtuální síť:az group show -n <resource-group-name> --query id
Pokud chcete přidat instanční objekt nebo spravovanou identitu jako přispěvatel sítě, použijte následující příkaz. Nahraďte
<SP-or-managed-identity>
ID vráceným pro instanční objekt nebo spravovanou identitu. Nahraďte<resource-group-id>
ID vrácené pro skupinu prostředků, která obsahuje virtuální síť:az role assignment create --assignee <SP-or-managed-identity> --role 'Network Contributor' --scope <resource-group-id>
Další informace o použití interního nástroje pro vyrovnávání zatížení s AKS najdete v tématu Použití interního nástroje pro vyrovnávání zatížení se službou Azure Kubernetes Service.
Zabezpečení provozu virtuální sítě
Existují dva přístupy k izolaci provozu do a z clusteru AKS do virtuální sítě:
- Privátní cluster AKS: Tento přístup používá Azure Private Link k zabezpečení komunikace s clusterem pro operace nasazení a správy.
- Interní nástroj pro vyrovnávání zatížení AKS: Tento přístup nakonfiguruje koncový bod pro vaše nasazení do AKS tak, aby používal privátní IP adresu v rámci virtuální sítě.
Privátní cluster AKS
Clustery AKS mají ve výchozím nastavení řídicí rovinu nebo server rozhraní API s veřejnými IP adresami. AKS můžete nakonfigurovat tak, aby používala rovinu privátního řízení vytvořením privátního clusteru AKS. Další informace najdete v tématu Vytvoření privátního clusteru Azure Kubernetes Service.
Po vytvoření privátního clusteru AKS připojte cluster k virtuální síti, abyste ho mohli používat se službou Azure Machine Learning.
Interní nástroj pro vyrovnávání zatížení AKS
Nasazení AKS ve výchozím nastavení používají veřejný nástroj pro vyrovnávání zatížení. V této části se dozvíte, jak nakonfigurovat AKS tak, aby používala interní nástroj pro vyrovnávání zatížení. Interní (nebo privátní) nástroj pro vyrovnávání zatížení se používá, pokud jsou jako front-end povoleny pouze privátní IP adresy. Interní nástroje pro vyrovnávání zatížení se používají k vyrovnávání zatížení provozu ve virtuální síti.
Privátní nástroj pro vyrovnávání zatížení je povolený konfigurací AKS tak, aby používal interní nástroj pro vyrovnávání zatížení.
Povolení privátního nástroje pro vyrovnávání zatížení
Důležité
Privátní IP adresu nelze povolit při vytváření clusteru Azure Kubernetes Service v studio Azure Machine Learning. Můžete ho vytvořit s interním nástrojem pro vyrovnávání zatížení při použití sady Python SDK nebo rozšíření Azure CLI pro strojové učení.
Následující příklady ukazují, jak vytvořit nový cluster AKS s privátní ip adresou nebo interním nástrojem pro vyrovnávání zatížení pomocí sady SDK a rozhraní příkazového řádku:
PLATÍ PRO: Python SDK azureml v1
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)
Při připojování existujícího clusteru k vašemu pracovnímu prostoru nakonfigurujte nástroj pro vyrovnávání zatížení pomocí load_balancer_type
parametrů load_balancer_subnet
AksCompute.attach_configuration().
Informace o připojení clusteru najdete v tématu Připojení existujícího clusteru AKS.
Omezení odchozího připojení z virtuální sítě
Pokud nechcete používat výchozí odchozí pravidla a chcete omezit odchozí přístup virtuální sítě, musíte povolit přístup ke službě Azure Container Registry. Ujistěte se například, že vaše skupiny zabezpečení sítě (NSG) obsahují pravidlo, které umožňuje přístup ke značce služby AzureContainerRegistry.RegionName , kde {RegionName} je název oblasti Azure.
Další kroky
Tento článek je součástí série o zabezpečení pracovního postupu služby Azure Machine Learning. Podívejte se na další články v této sérii: