Felügyelt online végpontok védelme hálózati elkülönítéssel

ÉRVÉNYES:Azure CLI ml-bővítmény v2 (aktuális)Python SDK azure-ai-ml v2 (aktuális)

Ebben a cikkben hálózatelkülönítést fog használni egy felügyelt online végpont védelméhez. Létrehoz egy felügyelt online végpontot, amely egy Azure Machine Tanulás-munkaterület privát végpontját használja a biztonságos bejövő kommunikációhoz. A munkaterületet egy felügyelt virtuális hálózattal is konfigurálja, amely csak jóváhagyott kimenő kommunikációt tesz lehetővé az üzemelő példányok számára. Végül létre fog hozni egy üzembe helyezést, amely a munkaterület felügyelt virtuális hálózatának privát végpontjait használja a kimenő kommunikációhoz.

Az örökölt módszert a hálózatelkülönítéshez használó példákért tekintse meg az üzembehelyezési fájlokat deploy-moe-vnet-legacy.sh (általános modell használatával történő üzembe helyezéshez) és deploy-moe-vnet-mlflow-legacy.sh (MLflow-modell használatával történő üzembe helyezéshez) az azureml-példák GitHub-adattárában.

Előfeltételek

  • Az Azure Machine Tanulás használatához Azure-előfizetéssel kell rendelkeznie. Ha még nincs Azure-előfizetése, kezdés előtt hozzon létre egy ingyenes fiókot. Próbálja ki ma az Azure Machine ingyenes vagy fizetős verzióját Tanulás.

  • Telepítse és konfigurálja az Azure CLI-t és az ml Azure CLI-bővítményt. További információ: A parancssori felület (v2) telepítése, beállítása és használata.

    Tipp.

    Az Azure Machine Tanulás felügyelt virtuális hálózatát 2023. május 23-án vezették be. Ha rendelkezik az ml-bővítmény régebbi verziójával, előfordulhat, hogy frissítenie kell, hogy a cikkben szereplő példák működjenek. A bővítmény frissítéséhez használja a következő Azure CLI-parancsot:

    az extension update -n ml
    
  • A cikkben szereplő CLI-példák feltételezik, hogy a Bash (vagy kompatibilis) rendszerhéjat használja. Például linuxos rendszerből vagy Linuxos Windows-alrendszer.

  • Rendelkeznie kell egy Azure-erőforráscsoporttal, amelyben Önnek (vagy a használt szolgáltatásnévnek) hozzáféréssel kell rendelkeznie Contributor . Ha konfigurálta a ml bővítményt, akkor egy ilyen erőforráscsoportot fog létrehozni.

  • Ha felhasználó által hozzárendelt felügyelt identitást szeretne használni az online végpontok és az online üzemelő példányok létrehozásához és kezeléséhez, az identitásnak megfelelő engedélyekkel kell rendelkeznie. A szükséges engedélyekkel kapcsolatos részletekért lásd : Szolgáltatáshitelesítés beállítása. Az identitáshoz például hozzá kell rendelnie a megfelelő RBAC-engedélyt az Azure Key Vaulthoz.

Migrálás régi hálózatelkülönítési módszerről felügyelt virtuális hálózatra

Ha korábban az örökölt módszert használta a felügyelt online végpontok hálózatelkülönítéséhez, és a végpontok védelme érdekében munkaterület által felügyelt virtuális hálózatra szeretne migrálni, kövesse az alábbi lépéseket:

  1. Törölje a munkaterület összes számítását.
  2. Felügyelt virtuális hálózat engedélyezése a munkaterületen. A felügyelt hálózat munkaterülethez való konfigurálásáról további információt a Munkaterület felügyelt virtuális hálózat elkülönítése című témakörben talál.
  3. Konfigurálja a privát végpontokat a felügyelt online végpontok által elérni kívánt privát erőforrások felé irányuló kimenő kommunikációhoz. Ezek a privát erőforrások közé tartozik egy tárfiók, az Azure Key Vault és az Azure Container Registry (ACR).
  4. (Nem kötelező) Ha egy felhasználói beállításjegyzékkel integrál, konfiguráljon privát végpontokat a regisztrációs adatbázissal, a tárfiókjával és az ACR-jével való kimenő kommunikációhoz.

Korlátozások

  • A v1_legacy_mode jelzőt le kell tiltani (hamis) az Azure Machine Learning-munkaterületen. A felügyelt online végpont létrehozása nem lehetséges, amíg ez a jelző engedélyezve van. További információ: Hálózatelkülönítés v2 API-val.

  • Ha az Azure Machine Tanulás-munkaterületén 2022. május 24. előtt létrehozott privát végpont található, akkor az online végpontok privát végpont használatára való konfigurálása előtt újra létre kell hoznia a munkaterület privát végpontját. További információ a privát végpont létrehozásáról munkaterület számára: Privát végpont konfigurálása Azure Machine Learning-munkaterület számára.

    Tipp.

    A munkaterület létrehozásának ellenőrzéséhez ellenőrizze a munkaterület tulajdonságait.

    A Studióban lépjen a Directory + Subscription + Workspace szakaszra (a Studio jobb felső sarkában), és válassza a lehetőséget View all properties in Azure Portal. Válassza ki a JSON nézetet az Áttekintés lap jobb felső sarkában, majd válassza ki a legújabb API-verziót. Ezen a lapon ellenőrizheti az értékeket properties.creationTime.

    Másik lehetőségként használhatja az ml workspace show a parancssori felülettel, my_ml_client.workspace.get("my-workspace-name") az SDK-val vagy curl a REST API-val rendelkező munkaterületen.

  • Ha online végpontokkal használ hálózati elkülönítést, a munkaterülethez társított erőforrásokat (Azure Container Registry (ACR), Storage-fiókot, Key Vaultot és alkalmazás-Elemzések) a munkaterületétől eltérő erőforráscsoportból használhatja. Ezeknek az erőforrásoknak azonban ugyanahhoz az előfizetéshez és bérlőhöz kell tartoznia, mint a munkaterületnek.

Feljegyzés

A cikkben ismertetett hálózatelkülönítés az adatsík-műveletekre, vagyis a pontozási kérelmekből (vagy modellkiszolgálókból) származó műveletekre vonatkozik. A vezérlősík műveleteit (például a hitelesítési kulcsok létrehozására, frissítésére, törlésére vagy lekérésére irányuló kéréseket) a rendszer a nyilvános hálózaton keresztül küldi el az Azure Resource Managernek.

A rendszer előkészítése

  1. Hozza létre a példában használt környezeti változókat az alábbi parancsok futtatásával. Cserélje le <YOUR_WORKSPACE_NAME> a munkaterülethez használandó névre. Cserélje le <YOUR_RESOURCEGROUP_NAME> a munkaterületet tartalmazó erőforráscsoportra.

    Tipp.

    új munkaterület létrehozása előtt létre kell hoznia egy Azure-erőforráscsoportot, amely tartalmazza azt. További információ: Azure-erőforráscsoportok kezelése.

    export RESOURCEGROUP_NAME="<YOUR_RESOURCEGROUP_NAME>"
    export WORKSPACE_NAME="<YOUR_WORKSPACE_NAME>"
    
  2. Hozza létre a munkaterületet. A -m allow_only_approved_outbound paraméter konfigurál egy felügyelt virtuális hálózatot a munkaterülethez, és letiltja a kimenő forgalmat, kivéve a jóváhagyott célhelyeket.

    az ml workspace create -g $RESOURCEGROUP_NAME -n $WORKSPACE_NAME -m allow_only_approved_outbound
    

    Ha azt szeretné, hogy az üzemelő példány kimenő forgalmat küldjön az internetre, bontsa ki a következő kódot, és futtassa helyette.

    # az ml workspace create -g $RESOURCEGROUP_NAME -n $WORKSPACE_NAME -m allow_internet_outbound
    

    További információ arról, hogyan hozhat létre új munkaterületet, vagy hogyan frissítheti a meglévő munkaterületet egy rugalmas virtuális hálózat használatára, olvassa el a Felügyelt virtuális hálózat konfigurálása az internet kimenő forgalmának engedélyezéséhez című témakört.

    Ha a munkaterület privát végponttal van konfigurálva, a munkaterület Azure Container Registry-jének prémium szintűre kell konfigurálnia, hogy a privát végponton keresztül engedélyezze a hozzáférést. További információ: az Azure Container Registry szolgáltatásszintjei. Emellett a munkaterületet a tulajdonsággal együtt kell beállítani, mivel az image_build_compute üzembe helyezéshez képeket kell létrehozni. További információ: Kép buildek konfigurálása.

  3. Konfigurálja a parancssori felület alapértelmezett értékeit, hogy ne adja meg többször a munkaterület és az erőforráscsoport értékeit.

    az configure --defaults workspace=$WORKSPACE_NAME group=$RESOURCEGROUP_NAME
    
  4. Klónozza a példák adattárát a végpont és az üzembe helyezés példafájljainak lekéréséhez, majd nyissa meg az adattár könyvtárát /cli .

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

Az oktatóanyagban szereplő parancsok a deploy-managed-online-endpoint-workspacevnet.sh könyvtár fájljában cli találhatók, a YAML konfigurációs fájljai pedig az endpoints/online/managed/sample/ alkönyvtárban találhatók.

Biztonságos felügyelt online végpont létrehozása

Biztonságos online felügyelt végpont létrehozásához hozza létre a végpontot a munkaterületen, és állítsa be a végpontot public_network_accessdisabled a bejövő kommunikáció szabályozására. A végpontnak ezután a munkaterület privát végpontját kell használnia a bejövő kommunikációhoz.

Mivel a munkaterület felügyelt virtuális hálózatra van konfigurálva, a végpont minden üzemelő példánya a felügyelt virtuális hálózat privát végpontjait fogja használni a kimenő kommunikációhoz.

  1. Adja meg a végpont nevét.

    export ENDPOINT_NAME="<YOUR_ENDPOINT_NAME>"
    
  2. Hozzon létre egy végpontot public_network_access letiltva a bejövő forgalom blokkolásához.

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

    Ha letiltja a végpont nyilvános hálózati hozzáférését, a végpont meghívásának egyetlen módja egy privát végpont használata, amely hozzáfér a munkaterülethez a virtuális hálózaton. További információkért tekintse meg a biztonságos bejövő pontozási kérelmeket, és konfiguráljon egy privát végpontot egy Azure Machine Tanulás-munkaterülethez.

    Másik lehetőségként, ha engedélyezni szeretné a végpontnak, hogy pontozási kéréseket fogadjon az internetről, bontsa ki a következő kódot, és futtassa helyette.

    # az ml online-endpoint create --name $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml
    
  3. Üzembe helyezés létrehozása a munkaterület által felügyelt virtuális hálózaton.

    az ml online-deployment create --name blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment.yml --all-traffic
    
  4. Az üzembe helyezés állapotának lekérése.

    az ml online-endpoint show -n $ENDPOINT_NAME
    
  5. Tesztelje a végpontot egy pontozási kéréssel a parancssori felület használatával.

    az ml online-endpoint invoke --name $ENDPOINT_NAME --request-file endpoints/online/model-1/sample-request.json
    
  6. Üzembehelyezési naplók lekérése.

    az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
    
  7. Ha már nincs rá szüksége, törölje a végpontot.

    az ml online-endpoint delete --name $ENDPOINT_NAME --yes --no-wait
    
  8. Törölje a cikkben létrehozott összes erőforrást. Cserélje le <resource-group-name> a példában használt erőforráscsoport nevére:

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

Hibaelhárítás

Az online végpont létrehozása meghiúsul a következő üzenettel: V1LegacyMode == true

Az Azure Machine Tanulás munkaterület konfigurálható a v2 API-kat letiltó beállításhozv1_legacy_mode. A felügyelt online végpontok a v2 API platform egyik funkciója, és nem működnek, ha v1_legacy_mode engedélyezve vannak a munkaterületen.

Fontos

A letiltás előtt forduljon a hálózati biztonsági csapathoz v1_legacy_mode. Lehet, hogy a hálózati biztonsági csapat okkal engedélyezte.

További információ a letiltás v1_legacy_modemódjáról: Hálózatelkülönítés a v2-vel.

Az online végpont kulcsalapú hitelesítéssel való létrehozása meghiúsul

Az alábbi paranccsal listázhatja a munkaterülethez tartozó Azure Key Vault hálózati szabályait. Cserélje le <keyvault-name> a kulcstartó nevére:

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

A parancs válasza hasonló a következő JSON-dokumentumhoz:

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

Ha az érték bypass nemAzureServices, a Key Vault hálózati beállításainak konfigurálásához használja az útmutatótAzureServices.

Az online üzemelő példányok egy rendszerkép letöltésével kapcsolatos hibaüzenettel meghiúsulnak

Feljegyzés

Ez a probléma akkor érvényes, ha a felügyelt online végpontok örökölt hálózatelkülönítési módszerét használja, amelyben az Azure Machine Tanulás létrehoz egy felügyelt virtuális hálózatot a végpontok alatt lévő minden egyes üzembe helyezéshez.

  1. Ellenőrizze, hogy a egress-public-network-access jelző le van-e tiltva az üzembe helyezéshez. Ha ez a jelző engedélyezve van, és a tárolóregisztrációs adatbázis láthatósága privát, akkor ez a hiba várható.

  2. A privát végpontkapcsolat állapotának ellenőrzéséhez használja az alábbi parancsot. Cserélje le <registry-name> a munkaterületHez tartozó Azure Container Registry nevére:

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

    A válaszdokumentumban ellenőrizze, hogy a status mező be van-e állítva Approved. Ha nincs jóváhagyva, a következő paranccsal hagyja jóvá. Cserélje le <private-endpoint-name> az előző parancsból visszaadott névre:

    az network private-endpoint-connection approve -n <private-endpoint-name>
    

A pontozási végpont nem oldható fel

  1. Ellenőrizze, hogy a pontozási kérelmet kiállító ügyfél olyan virtuális hálózat-e, amely hozzáfér az Azure Machine Tanulás-munkaterülethez.

  2. nslookup A végpont állomásneve parancsával kérje le az IP-cím adatait:

    nslookup endpointname.westcentralus.inference.ml.azure.com
    

    A válasz tartalmaz egy címet. Ennek a címnek a virtuális hálózat által megadott tartományban kell lennie

    Feljegyzés

    Kubernetes online végpont esetén a végpont gazdagépneve a Kubernetes-fürtben megadott CName (tartománynév). Http-végpont esetén az IP-címet a végpont URI-ja tartalmazza, amelyet közvetlenül a Studio felhasználói felületén érhet el. A végpont IP-címének lekérésére további módszerek találhatók a Biztonságos Kubernetes online végpontján.

  3. Ha a parancs nem oldja fel a nslookup gazdagép nevét:

    Felügyelt online végpont esetén:

    1. Ellenőrizze, hogy létezik-e A rekord a virtuális hálózat privát DNS-zónájában.

      A rekordok ellenőrzéséhez használja a következő parancsot:

      az network private-dns record-set list -z privatelink.api.azureml.ms -o tsv --query [].name
      

      Az eredményeknek tartalmazniuk kell egy, a következőhöz hasonló bejegyzést *.<GUID>.inference.<region>.

    2. Ha nem ad vissza következtetési értéket, törölje a munkaterület privát végpontját, majd hozza létre újra. További információ: Privát végpont konfigurálása.

    3. Ha a privát végponttal rendelkező munkaterület egyéni DNS használatával van beállítva: A munkaterület használata egyéni DNS-kiszolgálóval, a következő paranccsal ellenőrizheti, hogy a feloldás megfelelően működik-e az egyéni DNS-ből.

      dig endpointname.westcentralus.inference.ml.azure.com
      

    Kubernetes online végpont esetén:

    1. Ellenőrizze a DNS-konfigurációt a Kubernetes-fürtben.

    2. Emellett ellenőrizheti, hogy az azureml-fe a várt módon működik-e, használja a következő parancsot:

      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"
      

      HTTP-hez használja a

      curl https://localhost:<port>/api/v1/endpoint/<endpoint-name>/swagger.json
      "Swagger not found"
      

    Ha a curl HTTP-k meghiúsulnak (például időtúllépés), de a HTTP működik, ellenőrizze, hogy a tanúsítvány érvényes-e.

    Ha ez nem oldható fel A rekordra, ellenőrizze, hogy a feloldás működik-e az Azure DNS-ből (168.63.129.16).

    dig @168.63.129.16 endpointname.westcentralus.inference.ml.azure.com
    

    Ha ez sikeres, akkor elháríthatja az egyéni DNS-alapú privát kapcsolat feltételes továbbítójának hibaelhárítását.

Az online üzemelő példányok nem pontozhatók

  1. Az alábbi paranccsal ellenőrizheti, hogy az üzembe helyezés sikeresen megtörtént-e:

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

    Ha az üzembe helyezés sikeresen befejeződött, az érték a state következő lesz Succeeded: .

  2. Ha az üzembe helyezés sikeres volt, az alábbi paranccsal ellenőrizze, hogy a forgalom hozzá van-e rendelve az üzemelő példányhoz. Cserélje le <endpointname> a végpont nevére:

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

    Tipp.

    Erre a lépésre nincs szükség, ha a azureml-model-deployment kérés fejlécét használja az üzemelő példány megcélzásához.

    A parancs válaszának fel kell sorolnia az üzemelő példányokhoz rendelt forgalom százalékos arányát.

  3. Ha a forgalom-hozzárendelések (vagy az üzembehelyezési fejléc) megfelelően vannak beállítva, az alábbi paranccsal kérje le a végpont naplóit. Cserélje le <endpointname> a végpont nevére és <deploymentname> az üzembe helyezésre:

    az ml online-deployment get-logs  -e <endpointname> -n <deploymentname> 
    

    Tekintse át a naplókat, és ellenőrizze, hogy probléma van-e a pontozási kód futtatásával, amikor kérelmet küld az üzembe helyezéshez.

Következő lépések