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 aml
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:
- Törölje a munkaterület összes számítását.
- 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.
- 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).
- (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égetView 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ékeketproperties.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 vagycurl
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
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>"
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.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
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_access
disabled
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.
Adja meg a végpont nevét.
export ENDPOINT_NAME="<YOUR_ENDPOINT_NAME>"
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
Ü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
Az üzembe helyezés állapotának lekérése.
az ml online-endpoint show -n $ENDPOINT_NAME
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
Üzembehelyezési naplók lekérése.
az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
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
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_mode
mó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.
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ó.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ítvaApproved
. 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
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.
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.
Ha a parancs nem oldja fel a
nslookup
gazdagép nevét:Felügyelt online végpont esetén:
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>
.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.
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:
Ellenőrizze a DNS-konfigurációt a Kubernetes-fürtben.
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
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ő leszSucceeded
: .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.
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.