Sdílet prostřednictvím


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 se dozvíte, jak pomocí izolace sítě zlepšit zabezpečení online koncového bodu spravovaného službou Azure Machine Learning. Izolace sítě pomáhá zabezpečit příchozí a odchozí komunikaci do a z vašeho koncového bodu.

Pokud chcete pomoct zabezpečit příchozí komunikaci, můžete vytvořit spravovaný online koncový bod, který používá privátní koncový bod pracovního prostoru Azure Machine Learning. Pokud chcete povolit jenom schválenou odchozí komunikaci pro nasazení, můžete nakonfigurovat pracovní prostor se spravovanou virtuální sítí. V tomto článku se dozvíte, jak pomocí těchto kroků zlepšit zabezpečení koncových bodů. Také ukazuje, jak vytvořit nasazení, které používá privátní koncové body spravované virtuální sítě pracovního prostoru pro odchozí komunikaci.

Pokud dáváte přednost použití starší verze metody izolace sítě, projděte si následující příklady souborů nasazení v úložišti GitHub s příklady azureml-examples :

Požadavky

  • Předplatné služby Azure. Pokud nemáte předplatné Azure, vytvořte si bezplatný účet před zahájením.

  • Rozhraní příkazového řádku Azure a rozšíření Azure CLIml, nainstalované a nakonfigurované. Další informace najdete v tématu Instalace a nastavení rozhraní příkazového řádku (v2).

    Návod

    Funkce spravované virtuální sítě azure Machine Learning byla představena 23. května 2023. Pokud máte starší verzi ml rozšíření, možná ji 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
    
  • Prostředí Bash nebo kompatibilní prostředí, například prostředí v systému Linux nebo subsystému Windows pro Linux. Příklady Azure CLI v tomto článku předpokládají, že používáte tento typ shellu.

  • Skupina prostředků Azure, ve které vy nebo služební principál, který používáte, máte přístup přispěvatele. Pokyny k vytvoření skupiny prostředků najdete v části Příprava.

  • Spravovaná identita přiřazená uživatelem s příslušnými oprávněními, pokud chcete použít spravovanou identitu k vytváření a správě online koncových bodů a online nasazení. Podrobné informace o požadovaných oprávněních najdete v tématu Nastavení ověřování mezi Azure Machine Learning a dalšími službami. Například musíte udělit své spravované identitě konkrétní oprávnění Azure pro řízení přístupu na základě role (Azure RBAC) pro Azure Key Vault.

Migrace ze starší verze metody izolace sítě do spravované virtuální sítě pracovního prostoru

Pokud používáte starší metodu izolace sítě spravovaných online koncových bodů a chcete migrovat do spravované virtuální sítě pro zabezpečení koncových bodů, postupujte takto:

  1. 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 virtuální sítě spravované pracovním prostorem.
  2. (Volitelné) Pokud vaše nasazení přistupují k privátním prostředkům jiným než Azure Storage, Key Vault a Azure Container Registry, přidejte do nastavení sítě vašeho pracovního prostoru pravidla odchozích přenosů. Konkrétně je síť ve výchozím nastavení nakonfigurovaná s pravidly pro Azure Storage, Key Vault a Container Registry. Přidejte pravidla s privátními koncovými body pro všechny ostatní soukromé prostředky, které používáte.
  3. (Volitelné) Pokud máte v úmyslu používat registr služby Azure Machine Learning, nakonfigurujte privátní koncové body pro odchozí komunikaci s vaším registrem, jeho účtem úložiště a jeho instancí služby Container Registry.
  4. Vytvořte online koncové body a nasazení v novém pracovním prostoru. Pokud používáte registry služby Azure Machine Learning, můžete z nich přímo nasadit komponenty. Další informace najdete v tématu Nasazení modelu z registru do online koncového bodu v pracovním prostoru.
  5. Aktualizujte aplikace, které vyvolávají koncové body, aby aplikace používaly identifikátory URI bodování nových online koncových bodů.
  6. Po ověření nových koncových bodů odstraňte online koncové body ve starém pracovním prostoru.

Pokud během migrace nepotřebujete předcházet výpadkům, můžete použít jednodušší přístup. Pokud ve starém pracovním prostoru nepotřebujete udržovat výpočetní instance, online koncové body a nasazení, můžete výpočetní instance odstranit a pak aktualizovat pracovní prostor tak, aby umožňoval spravovanou virtuální síť.

Omezení

  • Příznak v1_legacy_mode musí být nastaven na false pro vypnutí staršího režimu v1 ve vašem pracovním prostoru služby Azure Machine Learning. Pokud je toto nastavení zapnuté, nemůžete vytvořit spravovaný online koncový bod. Další informace najdete v tématu Změna izolace sítě pomocí nové platformy rozhraní API v Azure Resource Manageru.

  • Pokud má váš pracovní prostor Azure Machine Learning privátní koncový bod vytvořený před 24. květnem 2022, musíte tento privátní koncový bod vytvořit znovu, než nakonfigurujete online koncové body tak, aby používaly privátní koncové body. Další informace o vytvoření privátního koncového bodu pro váš pracovní prostor najdete v tématu Konfigurace privátního koncového bodu pro pracovní prostor Azure Machine Learning.

    Návod

    Pokud chcete zobrazit datum vytvoření pracovního prostoru, můžete zkontrolovat vlastnosti pracovního prostoru.

    1. V nástroji Azure Machine Learning Studio přejděte do pravého horního rohu a vyberte název pracovního prostoru.
    2. V okně Adresář + Předplatné + Pracovní prostor vyberte Zobrazit všechny vlastnosti na webu Azure Portal.
    3. Na stránce Přehled webu Azure Portal přejděte do pravého horního rohu a vyberte Zobrazení JSON.
    4. V okně JSON prostředku v části Verze rozhraní API vyberte nejnovější verzi rozhraní API.
    5. properties V části kódu JSON zkontrolujte creationTime hodnotu.

    Případně použijte jednu z následujících metod:

    • Python SDK: Workspace.get(name=<workspace-name>, subscription_id=<subscription-ID>, resource_group=<resource-group-name>).get_details()
    • REST API: curl https://management.azure.com/subscriptions/<subscription-ID>/resourceGroups/<resource-group-name>/providers/Microsoft.MachineLearningServices/workspaces/?api-version=2023-10-01 -H "Authorization:Bearer <access-token>"
    • PowerShell:Get-AzMLWorkspace -Name <workspace-name> -ResourceGroupName <resource-group-name>
  • Pokud k zabezpečení online koncových bodů použijete izolaci sítě, můžete použít prostředky spojené s pracovním prostorem z jiné skupiny prostředků než skupina prostředků vašeho pracovního prostoru. Tyto prostředky ale musí patřit do stejného předplatného a tenanta jako váš pracovní prostor. Mezi prostředky přidružené k pracovnímu prostoru patří Azure Container Registry, Azure Storage, Azure Key Vault a Application Insights.

Poznámka:

Tento článek popisuje izolaci sítě, která se vztahuje na operace roviny dat. Tyto operace jsou výsledkem bodovacích požadavků nebo obsluhy modelu. Operace řídicí roviny, jako jsou žá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

  1. Vytvořte proměnné prostředí spuštěním následujících příkazů. Nahraďte <resource-group-name> skupinou prostředků pro váš pracovní prostor. Nahraďte <workspace-name> názvem pracovního prostoru.

    export RESOURCEGROUP_NAME="<resource-group-name>"
    export WORKSPACE_NAME="<workspace-name>"
    
  2. 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 spravovanou virtuální síť, najdete v tématu Konfigurace spravované virtuální sítě pro povolení odchozího internetu.

  3. Zřiďte spravovanou virtuální síť. Pokyny a další informace najdete v tématu Ruční zřízení spravované virtuální sítě.

    Důležité

    Při prvním nastavení spravované virtuální sítě pro pracovní prostor není síť zprovozněna. Dokud nezřídíte spravovanou síť, nemůžete vytvářet online implementace.

  4. Nakonfigurujte registr kontejneru přidružený k pracovnímu prostoru tak, aby používal cenový plán Premium. Toto nastavení je potřeba k poskytnutí přístupu k registru prostřednictvím privátního koncového bodu. Další informace najdete v článku Úrovně služby Azure Container Registry.

  5. Nakonfigurujte pracovní prostor tak, aby k vytváření imagí používal výpočetní cluster nebo výpočetní instanci. Vlastnost image_build_compute můžete použít k tomuto účelu. Další informace a pokyny najdete v tématu Konfigurace sestavení obrazu.

  6. Nakonfigurujte výchozí hodnoty pro Azure CLI, abyste se vyhnuli předávání hodnot pro pracovní prostor a skupinu prostředků vícekrát.

    az configure --defaults workspace=$WORKSPACE_NAME group=$RESOURCEGROUP_NAME
    
  7. 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 CLI úložiště.

    git clone --depth 1 https://github.com/Azure/azureml-examples
    cd azureml-examples/cli
    

Příkazy v tomto článku jsou v souboru deploy-managed-online-endpoint-workspacevnet.sh v adresáři CLI. Konfigurační soubory YAML jsou v podadresáři endpoints/online/managed/sample/.

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 ve svém pracovním prostoru. Pak nastavíte hodnotu koncového bodu public_network_access tak, aby disabled řídila příchozí komunikaci.

Toto nastavení přinutí online koncový bod používat privátní koncový bod pracovního prostoru pro příchozí komunikaci. Jediným způsobem, jak vyvolat online koncový bod, 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ích žádostí o bodování a konfigurace privátního koncového bodu pro pracovní prostor Služby Azure Machine Learning.

Vzhledem k tomu, že je pracovní prostor nakonfigurovaný tak, aby měl spravovanou virtuální síť, všechna nasazení koncových bodů používají privátní koncové body spravované virtuální sítě pro odchozí komunikaci.

  1. Nastavte název koncového bodu:

    export ENDPOINT_NAME="<YOUR_ENDPOINT_NAME>"
    
  2. Vytvořte koncový bod s public_network_access nastaveným na disabled ke blokování příchozího provozu:

    Poznámka:

    Odkazovaný skript používá konfigurační soubory YAML z klonovaného úložiště. Po klonování úložiště se ujistěte, že jste ve správném adresáři (cli), nebo zadejte úplnou cestu k souborům YAML. Před spuštěním příkazů v Azure Cloud Shellu ověřte, že jsou soubory přístupné ve vašem cloudovém úložišti.

    az ml online-endpoint create --name $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml --set public_network_access=disabled
    

    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
    

Testování koncového bodu

  1. 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
    

    Pokud se zobrazí chyba týkající se selhání autorizace, zkontrolujte konfiguraci sítě pro účet úložiště pracovního prostoru. Možná budete muset upravit nastavení přístupu k veřejné síti, aby měl pracovní prostor přístup k účtu úložiště.

  2. Získejte stav nasazení:

    az ml online-endpoint show -n $ENDPOINT_NAME
    
  3. Otestujte koncový bod odesláním žádosti o bodování:

    az ml online-endpoint invoke --name $ENDPOINT_NAME --request-file endpoints/online/model-1/sample-request.json
    
  4. Získejte protokoly nasazení:

    az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
    

Vyčistěte zdroje

  1. Pokud už koncový bod nepotřebujete, odstraňte ho spuštěním následujícího příkazu.

    az ml online-endpoint delete --name $ENDPOINT_NAME --yes --no-wait
    
  2. Pokud už pracovní prostor, jeho přidružené prostředky a ostatní prostředky ve vaší skupině prostředků nepotřebujete, odstraňte je. Nahraďte <resource-group-name> názvem skupiny prostředků, která obsahuje váš pracovní prostor.

    az group delete --resource-group <resource-group-name>
    

Řešení problému

Vytvoření online koncového bodu selže se zprávou o režimu kompatibility verze v1.

Spravované online koncové body jsou funkcí platformy rozhraní API služby Azure Machine Learning v2. Pokud je váš pracovní prostor Azure Machine Learning nakonfigurovaný pro starší režim verze 1, spravované online koncové body nefungují. Konkrétně platí, že pokud v1_legacy_mode je nastavení pracovního prostoru nastavené na true, je zapnutý starší režim verze 1 a pro rozhraní API v2 neexistuje žádná podpora.

Pokud chcete zjistit, jak vypnout starší verzi režimu v1, přečtěte si téma Změna izolace sítě pomocí nové platformy rozhraní API v Azure Resource Manageru.

Důležité

Obraťte se na svůj tým zabezpečení sítě, než nastavíte v1_legacy_mode na false, protože starší režim verze 1 může být zapnutý z nějakého důvodu.

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 <key-vault-name> názvem trezoru klíčů.

az keyvault network-rule list -n <key-vault-name>

Odpověď pro tento příkaz se podobá následujícímu kódu JSON:

{
    "bypass": "AzureServices",
    "defaultAction": "Deny",
    "ipRules": [],
    "virtualNetworkRules": []
}

bypass Pokud hodnota neníAzureServices, použijte pokyny v tématu Konfigurace nastavení sítě služby Azure Key Vault a nastavte ho na AzureServices.

Nasazení online neúspěšné kvůli chybě při stahování obrazu

Poznámka:

Tento problém se týká použití starší metody izolace sítě pro spravované online koncové body. V této metodě Azure Machine Learning vytvoří spravovanou virtuální síť pro každé nasazení v rámci koncového bodu.

  1. Zkontrolujte, jestli má příznak egress-public-network-access hodnotu disabled pro nasazení. Pokud je tento příznak povolený a viditelnost registru kontejneru je soukromá, očekává se toto selhání.

  2. Pomocí následujícího příkazu zkontrolujte stav připojení privátního koncového bodu. Nahraďte <registry-name> názvem služby Azure Container Registry pro váš pracovní prostor:

    az acr private-endpoint-connection list -r <registry-name> --query "[?privateLinkServiceConnectionState.description=='Egress for Microsoft.MachineLearningServices/workspaces/onlineEndpoints'].{ID:id, status:privateLinkServiceConnectionState.status}"
    

    V kódu odpovědi ověřte, že status je pole nastavené na Approved. Pokud hodnota není Approved, použijte následující příkaz ke schválení připojení. Nahraďte ID, které vrací předchozí příkaz, za <private-endpoint-connection-ID>.

    az network private-endpoint-connection approve --id <private-endpoint-connection-ID> --description "Approved"
    

Koncový bod pro skórování nelze vyřešit

  1. 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.

  2. Pomocí příkazu nslookup na názvu hostitele koncového bodu načtěte informace o IP adrese:

    nslookup <endpoint-name>.<endpoint-region>.inference.ml.azure.com
    

    Například příkaz může vypadat nějak takto:

    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 měl být název hostitele koncového bodu CName (název domény), který je zadaný v clusteru Kubernetes.
    • Pokud koncový bod používá protokol 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 tématu Aktualizace DNS pomocí plně kvalifikovaného názvu domény.
  3. Pokud příkaz nslookup nepřeloží název hostitele, proveďte akce v jedné z následujících částí.

Spravované online koncové body

  1. Pomocí následujícího příkazu zkontrolujte, jestli záznam A existuje v zóně DNS (Private Domain Name System) 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>.

  2. Pokud se nevrátí žádná hodnota odvozování, 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.

  3. Pokud pracovní prostor s privátním koncovým bodem používá vlastní server DNS, spusťte následující příkaz k ověření, že rozlišení z tohoto serveru funguje správně:

    dig <endpoint-name>.<endpoint-region>.inference.ml.azure.com
    

Koncové body Kubernetes online

  1. Zkontrolujte konfiguraci DNS v clusteru Kubernetes.

  2. Zkontrolujte, azureml-fejestli směrovač odvozovací služby Azure Machine Learning funguje podle očekávání. Pokud chcete provést tuto kontrolu, proveďte následující kroky:

    1. V podu azureml-fe spusťte následující příkaz:

      kubectl exec -it deploy/azureml-fe -- /bin/bash
      
    2. Spusťte jeden z následujících příkazů:

      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"
      
  3. Pokud příkaz HTTPS curl selže nebo vyprší časový limit, ale příkaz HTTP funguje, zkontrolujte, jestli je certifikát platný.

  4. Pokud se předchozí proces nepodaří přeložit na záznam A, pomocí následujícího příkazu ověřte, jestli překlad funguje z virtuální veřejné IP adresy Azure DNS 168.63.129.16:

    dig @168.63.129.16 <endpoint-name>.<endpoint-region>.inference.ml.azure.com
    
  5. Pokud předchozí příkaz proběhne úspěšně, vyřešte potíže s podmíněným předáváním pro Azure Private Link ve vlastním DNS.

U online nasazení nejde určit skóre

  1. Spuštěním následujícího příkazu zobrazte stav nasazení, které nelze ohodnotit.

    az ml online-deployment show -e <endpoint-name> -n <deployment-name> --query '{name:name,state:provisioning_state}' 
    

    Hodnota Succeeded pole state označuje úspěšné nasazení.

  2. V případě úspěšného nasazení pomocí následujícího příkazu zkontrolujte, jestli je k nasazení přiřazený provoz:

    az ml online-endpoint show -n <endpoint-name>  --query traffic
    

    Odpověď na tento příkaz by měla obsahovat procentuální podíl provozu přiřazený každému nasazení.

    Návod

    Tento krok není nutný, pokud k cílení na toto nasazení použijete hlavičku azureml-model-deployment v požadavku.

  3. 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:

    az ml online-deployment get-logs  -e <endpoint-name> -n <deployment-name> 
    
  4. Zkontrolujte protokoly a zjistěte, jestli při odeslání požadavku do nasazení došlo k potížím se spuštěním kódu bodování.