Zabezpečení spravovaných online koncových bodů pomocí izolace sítě
PLATÍ PRO:Rozšíření Azure CLI ml v2 (aktuální)Python SDK azure-ai-ml v2 (aktuální)
V tomto článku použijete izolaci sítě k zabezpečení spravovaného online koncového bodu. Vytvoříte spravovaný online koncový bod, který pro zabezpečenou příchozí komunikaci používá privátní koncový bod pracovního prostoru Služby Azure Machine Learning. Pracovní prostor nakonfigurujete také se spravovanou virtuální sítí , která umožňuje pouze schválenou odchozí komunikaci pro nasazení. Nakonec vytvoříte nasazení, které pro odchozí komunikaci používá privátní koncové body spravované virtuální sítě pracovního prostoru.
Příklady, které používají starší metodu izolace sítě, najdete v souborech nasazení deploy-moe-vnet-legacy.sh (pro nasazení pomocí obecného modelu) a deploy-moe-vnet-mlflow-legacy.sh (pro nasazení pomocí modelu MLflow) v úložišti Azureml-examples Na GitHubu.
Požadavky
Pokud chcete používat Azure Machine Learning, musíte mít předplatné Azure. Pokud ještě nemáte předplatné Azure, vytvořte si napřed bezplatný účet. Vyzkoušejte si bezplatnou nebo placenou verzi služby Azure Machine Learning ještě dnes.
Nainstalujte a nakonfigurujte Azure CLI a
ml
rozšíření azure CLI. Další informace najdete v tématu Instalace, nastavení a použití rozhraní příkazového řádku (v2).Tip
Spravovaná virtuální síť Azure Machine Learning byla zavedena 23. května 2023. Pokud máte starší verzi rozšíření ml, možná ho budete muset aktualizovat, aby příklady v tomto článku fungovaly. Pokud chcete rozšíření aktualizovat, použijte následující příkaz Azure CLI:
az extension update -n ml
Příklady rozhraní příkazového řádku v tomto článku předpokládají, že používáte prostředí Bash (nebo kompatibilní). Například ze systému Linux nebo Subsystém Windows pro Linux.
Musíte mít skupinu prostředků Azure, ve které potřebujete
Contributor
přístup vy (nebo instanční objekt, který používáte). Pokud jste nakonfigurovaliml
rozšíření, budete mít takovou skupinu prostředků.Pokud chcete použít spravovanou identitu přiřazenou uživatelem k vytváření a správě online koncových bodů a online nasazení, měla by mít identita správná oprávnění. Podrobnosti o požadovaných oprávněních najdete v tématu Nastavení ověřování služby. Musíte například přiřadit správné oprávnění RBAC pro Azure Key Vault pro identitu.
Migrace ze starší verze metody izolace sítě do spravované virtuální sítě pracovního prostoru
Pokud jste dříve použili starší metodu pro izolaci sítě spravovaných online koncových bodů a chcete migrovat na použití spravované virtuální sítě pracovního prostoru k zabezpečení koncových bodů, můžete postupovat následovně:
- Vytvořte nový pracovní prostor a povolte spravovanou virtuální síť. Další informace o tom, jak nakonfigurovat spravovanou síť pro váš pracovní prostor, najdete v tématu Izolace spravované virtuální sítě pracovního prostoru.
- (Volitelné) V nastavení sítě pracovního prostoru přidejte odchozí pravidla s typem privátních koncových bodů, pokud vaše nasazení potřebují přístup k dalším privátním prostředkům, kromě účtu úložiště, služby Azure Key Vault a služby Azure Container Registry (ACR) přidruženému k pracovnímu prostoru (které se standardně přidávají).
- (Volitelné) Pokud máte v úmyslu používat registry služby Azure Machine Learning, nakonfigurujte privátní koncové body pro odchozí komunikaci s vaším registrem, jeho účtem úložiště a službou Azure Container Registry.
- Vytvořte online koncové body nebo nasazení v novém pracovním prostoru. K přímému nasazení z nich můžete využít registry služby Azure Machine Learning. Další informace naleznete v tématu Nasazení z registru.
- Aktualizujte aplikace, které vyvolávají koncové body, aby používaly identifikátory URI bodování nových online koncových bodů.
- Po ověření odstraňte online koncové body ze starého pracovního prostoru.
Pokud nepotřebujete udržovat výpočetní prostředky nebo udržovat online koncové body a nasazení ve starém pracovním prostoru tak, aby sloužily bez výpadků, můžete jednoduše odstranit všechny výpočetní prostředky v existujícím pracovním prostoru a aktualizovat pracovní prostor tak, aby umožňoval virtuální síť spravovanou pracovním prostorem.
Omezení
Příznak
v1_legacy_mode
musí být u vašeho pracovního prostoru Azure Machine Learning zakázaný (false). Pokud je tento příznak povolený, nebudete moct vytvořit spravovaný online koncový bod. Další informace najdete v článku o izolaci sítě pomocí rozhraní API v2.Pokud má váš pracovní prostor Azure Machine Learning privátní koncový bod vytvořený před 24. květnem 2022, musíte privátní koncový bod pracovního prostoru vytvořit znovu, než nakonfigurujete online koncové body tak, aby používaly privátní koncový bod. Další informace o vytvoření privátního koncového bodu pro pracovní prostor najdete v článku o konfiguraci privátního koncového bodu pro pracovní prostor Azure Machine Learning.
Tip
Pokud chcete ověřit, kdy byl pracovní prostor vytvořen, můžete zkontrolovat vlastnosti pracovního prostoru.
V sadě Studio přejděte do
Directory + Subscription + Workspace
části (vpravo nahoře v sadě Studio) a vyberteView all properties in Azure Portal
. V pravém horním rohu stránky Přehled vyberte zobrazení JSON a pak zvolte nejnovější verzi rozhraní API. Na této stránce můžete zkontrolovat hodnotuproperties.creationTime
.Alternativně můžete použít
az ml workspace show
s rozhraním příkazového řádku,my_ml_client.workspace.get("my-workspace-name")
se sadou SDK nebocurl
v pracovním prostoru s rozhraním REST API.Pokud používáte izolaci sítě s online koncovými body, můžete použít prostředky přidružené k pracovnímu prostoru (Azure Container Registry (ACR), účet úložiště, službu Key Vault a Application Insights) z jiné skupiny prostředků než pracovní prostor. Tyto prostředky ale musí patřit do stejného předplatného a tenanta jako váš pracovní prostor.
Poznámka:
Izolace sítě popsaná v tomto článku se týká operací roviny dat, to znamená operací, které jsou výsledkem bodovacích požadavků (nebo obsluhy modelu). Operace řídicí roviny (například žádosti o vytvoření, aktualizaci, odstranění nebo načtení ověřovacích klíčů) se posílají do Azure Resource Manageru přes veřejnou síť.
Příprava systému
Vytvořte proměnné prostředí používané v tomto příkladu spuštěním následujících příkazů. Nahraďte
<YOUR_WORKSPACE_NAME>
názvem, který se má použít pro váš pracovní prostor. Nahraďte<YOUR_RESOURCEGROUP_NAME>
skupinou prostředků, která bude obsahovat váš pracovní prostor.Tip
Před vytvořením nového pracovního prostoru musíte vytvořit skupinu prostředků Azure, která ji bude obsahovat. Další informace najdete v tématu Správa skupin prostředků Azure.
export RESOURCEGROUP_NAME="<YOUR_RESOURCEGROUP_NAME>" export WORKSPACE_NAME="<YOUR_WORKSPACE_NAME>"
Vytvořte pracovní prostor. Parametr
-m allow_only_approved_outbound
nakonfiguruje spravovanou virtuální síť pro pracovní prostor a blokuje odchozí provoz s výjimkou schválených cílů.az ml workspace create -g $RESOURCEGROUP_NAME -n $WORKSPACE_NAME -m allow_only_approved_outbound
Pokud chcete nasazení povolit odesílání odchozích přenosů na internet, odkomentujte následující kód a spusťte ho.
# az ml workspace create -g $RESOURCEGROUP_NAME -n $WORKSPACE_NAME -m allow_internet_outbound
Další informace o tom, jak vytvořit nový pracovní prostor nebo upgradovat stávající pracovní prostor tak, aby používal mangovanou virtuální síť, najdete v tématu Konfigurace spravované virtuální sítě pro povolení odchozího internetu.
Pokud je pracovní prostor nakonfigurovaný s privátním koncovým bodem, musí být služba Azure Container Registry pro tento pracovní prostor nakonfigurovaná tak, aby umožňovala přístup přes privátní koncový bod. Další informace najdete v článku Úrovně služby Azure Container Registry. Pracovní prostor by měl být také nastaven s
image_build_compute
vlastností, protože vytváření nasazení zahrnuje vytváření imagí. Další informace najdete v tématu Konfigurace sestavení imagí .Důležité
Když je virtuální síť spravovaná pracovním prostorem poprvé nastavená pro pracovní prostor, síť se ještě nezřídí. Než budete pokračovat v vytváření online nasazení, zřiďte síť podle pokynů Ruční zřízení spravované sítě. Vytváření online nasazení bude odmítnuto, dokud nebude zřízena spravovaná síť.
Nakonfigurujte výchozí hodnoty pro rozhraní příkazového řádku, abyste se vyhnuli předávání hodnot pro pracovní prostor a skupinu prostředků několikrát.
az configure --defaults workspace=$WORKSPACE_NAME group=$RESOURCEGROUP_NAME
Naklonujte úložiště příkladů, abyste získali ukázkové soubory pro koncový bod a nasazení, a pak přejděte do adresáře úložiště
/cli
.git clone --depth 1 https://github.com/Azure/azureml-examples cd /cli
Příkazy v tomto kurzu jsou v souboru deploy-managed-online-endpoint-workspacevnet.sh
v cli
adresáři a konfigurační soubory YAML jsou v endpoints/online/managed/sample/
podadresáři.
Vytvoření zabezpečeného spravovaného online koncového bodu
Pokud chcete vytvořit zabezpečený spravovaný online koncový bod, vytvořte koncový bod v pracovním prostoru a nastavte koncový bod public_network_access
tak, aby disabled
kontroluje příchozí komunikaci. Koncový bod pak bude muset pro příchozí komunikaci použít privátní koncový bod pracovního prostoru.
Vzhledem k tomu, že je pracovní prostor nakonfigurovaný tak, aby měl spravovanou virtuální síť, budou všechna nasazení koncového bodu používat privátní koncové body spravované virtuální sítě pro odchozí komunikaci.
Nastavte název koncového bodu.
export ENDPOINT_NAME="<YOUR_ENDPOINT_NAME>"
Vytvořte koncový bod se zakázaným
public_network_access
blokováním příchozího provozu.az ml online-endpoint create --name $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml --set public_network_access=disabled
Pokud zakážete přístup k veřejné síti pro koncový bod, jediným způsobem, jak koncový bod vyvolat, je použití privátního koncového bodu, který má přístup k pracovnímu prostoru ve vaší virtuální síti. Další informace najdete v tématu Zabezpečené příchozí žádosti o bodování a konfigurace privátního koncového bodu pro pracovní prostor Služby Azure Machine Learning.
Případně pokud chcete koncovému bodu povolit příjem žádostí o bodování z internetu, odkomentujte následující kód a spusťte ho.
# az ml online-endpoint create --name $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml
Vytvořte nasazení ve spravované virtuální síti pracovního prostoru.
az ml online-deployment create --name blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment.yml --all-traffic
Získejte stav nasazení.
az ml online-endpoint show -n $ENDPOINT_NAME
Otestujte koncový bod pomocí žádosti o bodování pomocí rozhraní příkazového řádku.
az ml online-endpoint invoke --name $ENDPOINT_NAME --request-file endpoints/online/model-1/sample-request.json
Získejte protokoly nasazení.
az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
Pokud už koncový bod nepotřebujete, odstraňte ho.
az ml online-endpoint delete --name $ENDPOINT_NAME --yes --no-wait
Odstraňte všechny prostředky vytvořené v tomto článku. Nahraďte
<resource-group-name>
názvem skupiny prostředků použitou v tomto příkladu:az group delete --resource-group <resource-group-name>
Řešení problému
Online koncový bod se nepovede vytvořit se zprávou V1LegacyMode == true
Můžete nakonfigurovat pracovní prostor Služby Azure Machine Learning, pro v1_legacy_mode
který zakážete rozhraní API v2. Spravované online koncové body jsou funkcí platformy rozhraní API v2 a nefungují, pokud v1_legacy_mode
je pro pracovní prostor povolený.
Zakázání v1_legacy_mode
najdete v tématu Izolace sítě s v2.
Důležité
Před zakázání v1_legacy_mode
se obraťte na tým zabezpečení sítě, protože ho možná z nějakého důvodu povolil.
Vytvoření online koncového bodu s ověřováním na základě klíčů selže
Pomocí následujícího příkazu vypíšete pravidla sítě trezoru klíčů Azure pro váš pracovní prostor. Nahraďte <keyvault-name>
názvem trezoru klíčů:
az keyvault network-rule list -n <keyvault-name>
Odpověď pro tento příkaz se podobá následujícímu kódu JSON:
{
"bypass": "AzureServices",
"defaultAction": "Deny",
"ipRules": [],
"virtualNetworkRules": []
}
Pokud hodnota bypass
není AzureServices
, použijte pokyny v nastavení konfigurace sítě trezoru klíčů a nastavte ho na AzureServices
.
Selhání online nasazení s chybou při stahování image
Poznámka:
Tento problém se týká použití starší verze metody izolace sítě pro spravované online koncové body, ve kterých Azure Machine Learning vytvoří spravovanou virtuální síť pro každé nasazení v rámci koncového bodu.
Zkontrolujte, jestli
egress-public-network-access
jedisabled
příznakem nasazení. Pokud je tento příznak povolený a viditelnost registru kontejneru je soukromá, očekává se toto selhání.Pomocí následujícího příkazu zkontrolujte stav připojení privátního koncového bodu. Nahraďte
<registry-name>
názvem registru kontejneru Azure pro váš pracovní prostor:az acr private-endpoint-connection list -r <registry-name> --query "[?privateLinkServiceConnectionState.description=='Egress for Microsoft.MachineLearningServices/workspaces/onlineEndpoints'].{Name:name, status:privateLinkServiceConnectionState.status}"
V kódu odpovědi ověřte, že
status
je pole nastavené naApproved
. Pokud ne, použijte k jeho schválení následující příkaz. Nahraďte<private-endpoint-name>
názvem vráceným z předchozího příkazu.az network private-endpoint-connection approve -n <private-endpoint-name>
Bodovací koncový bod nejde přeložit
Ověřte, že klient, který vydává žádost o hodnocení, je virtuální síť, která má přístup k pracovnímu prostoru Azure Machine Learning.
nslookup
Pomocí příkazu na názvu hostitele koncového bodu načtěte informace o IP adrese, například:nslookup endpointname.westcentralus.inference.ml.azure.com
Odpověď obsahuje adresu, která by měla být v rozsahu poskytovaném virtuální sítí.
Poznámka:
- V případě online koncového bodu Kubernetes by název hostitele koncového bodu měl být název hostitele CName (název domény), který je zadaný v clusteru Kubernetes.
- Pokud je koncový bod HTTP, IP adresa se nachází v identifikátoru URI koncového bodu, který můžete získat z uživatelského rozhraní studia.
- Další způsoby získání IP adresy koncového bodu najdete v online koncovém bodu Zabezpečeného Kubernetes.
Pokud příkaz
nslookup
nepřeloží název hostitele, proveďte následující akce:
Spravované online koncové body
Pomocí následujícího příkazu zkontrolujte, jestli záznam A existuje v zóně privátního názvového serveru domény (DNS) pro virtuální síť.
az network private-dns record-set list -z privatelink.api.azureml.ms -o tsv --query [].name
Výsledky by měly obsahovat položku podobnou
*.<GUID>.inference.<region>
.Pokud se žádná hodnota odvozování nevrátí, odstraňte privátní koncový bod pracovního prostoru a pak ho znovu vytvořte. Další informace najdete v tématu Konfigurace privátního koncového bodu.
Pokud pracovní prostor s privátním koncovým bodem používá vlastní server DNS, spuštěním následujícího příkazu ověřte, že překlad z vlastního DNS funguje správně.
dig endpointname.westcentralus.inference.ml.azure.com
Online koncové body Kubernetes
Zkontrolujte konfiguraci DNS v clusteru Kubernetes.
Pomocí následujícího příkazu také zkontrolujte, jestli azureml-fe funguje podle očekávání:
kubectl exec -it deploy/azureml-fe -- /bin/bash (Run in azureml-fe pod) curl -vi -k https://localhost:<port>/api/v1/endpoint/<endpoint-name>/swagger.json "Swagger not found"
V případě protokolu HTTP použijte následující příkaz:
curl https://localhost:<port>/api/v1/endpoint/<endpoint-name>/swagger.json "Swagger not found"
Pokud protokolY HTTPS curl selžou nebo vyprší časový limit, ale protokol HTTP funguje, zkontrolujte, jestli je certifikát platný.
Pokud se předchozí proces nepodaří přeložit na záznam A, ověřte, jestli překlad funguje z Azure DNS (168.63.129.16).
dig @168.63.129.16 endpointname.westcentralus.inference.ml.azure.com
Pokud předchozí příkaz proběhne úspěšně, vyřešte potíže s podmíněným předáváním privátního propojení ve vlastním DNS.
U online nasazení nejde určit skóre
Spuštěním následujícího příkazu zkontrolujte, jestli nasazení proběhlo úspěšně:
az ml online-deployment show -e <endpointname> -n <deploymentname> --query '{name:name,state:provisioning_state}'
Pokud se nasazení úspěšně dokončilo, hodnota
state
jeSucceeded
.Pokud nasazení proběhlo úspěšně, pomocí následujícího příkazu zkontrolujte, jestli je k nasazení přiřazený provoz. Nahraďte
<endpointname>
názvem vašeho koncového bodu.az ml online-endpoint show -n <endpointname> --query traffic
Odpověď z tohoto příkazu by měla obsahovat procento provozu přiřazeného k nasazením.
Tip
Tento krok není nutný, pokud k cílení na toto nasazení použijete hlavičku
azureml-model-deployment
v požadavku.Pokud jsou přiřazení provozu nebo hlavička nasazení správně nastavené, pomocí následujícího příkazu získejte protokoly pro koncový bod. Nahraďte
<endpointname>
názvem koncového bodu a<deploymentname>
nasazením.az ml online-deployment get-logs -e <endpointname> -n <deploymentname>
Zkontrolujte protokoly a zjistěte, jestli při odeslání požadavku do nasazení nedochází k potížím se spuštěním kódu bodování.
Další kroky
- Izolace sítě se spravovanými online koncovými body
- Spravovaná izolace sítě pracovního prostoru
- Kurz: Vytvoření zabezpečeného pracovního prostoru
- Bezpečné zavedení pro online koncové body
- Přístup k prostředkům Azure pomocí online koncového bodu a spravované identity
- Řešení potíží s nasazením online koncových bodů