Konfigurace ověřování pro modely nasazené jako webové služby
PLATÍ PRO: Python SDK azureml v1
Azure Machine Learning umožňuje nasadit trénované modely strojového učení jako webové služby. V tomto článku se dozvíte, jak nakonfigurovat ověřování pro tato nasazení.
Nasazení modelů vytvořená službou Azure Machine Learning je možné nakonfigurovat tak, aby používala jednu ze dvou metod ověřování:
na základě klíče: Statický klíč se používá k ověření ve webové službě.
na základě tokenů: Dočasný token se musí získat z pracovního prostoru Azure Machine Learning (pomocí ID Microsoft Entra) a použít k ověření ve webové službě. Platnost tohoto tokenu vyprší po určité době a je nutné ho aktualizovat, aby bylo možné pokračovat v práci s webovou službou.
Poznámka:
Ověřování na základě tokenů je k dispozici pouze při nasazování do služby Azure Kubernetes Service.
Ověřování na základě klíčů
Webové služby nasazené ve službě Azure Kubernetes Service (AKS) mají ve výchozím nastavení povolené ověřování založené na klíčích.
Nasazené služby Azure Container Instances (ACI) mají ve výchozím nastavení zakázané ověřování založené na klíčích, ale můžete ho povolit nastavením auth_enabled=True
při vytváření webové služby ACI. Následující kód je příkladem vytvoření konfigurace nasazení ACI s povoleným ověřováním založeným na klíči.
from azureml.core.webservice import AciWebservice
aci_config = AciWebservice.deploy_configuration(cpu_cores = 1,
memory_gb = 1,
auth_enabled=True)
Pak můžete použít vlastní konfiguraci ACI v nasazení pomocí Model
třídy.
from azureml.core.model import Model, InferenceConfig
inference_config = InferenceConfig(entry_script="score.py",
environment=myenv)
aci_service = Model.deploy(workspace=ws,
name="aci_service_sample",
models=[model],
inference_config=inference_config,
deployment_config=aci_config)
aci_service.wait_for_deployment(True)
K načtení ověřovacích klíčů použijte aci_service.get_keys()
. K opětovnému vygenerování klíče použijte regen_key()
funkci a předejte primární nebo sekundární klíč.
aci_service.regen_key("Primary")
# or
aci_service.regen_key("Secondary")
Ověřování na základě tokenů
Když povolíte ověřování tokenů pro webovou službu, musí uživatelé pro přístup k webové službě předložit webový token JSON služby Azure Machine Learning. Platnost tokenu po zadané době vyprší a je potřeba ji obnovit, pokud chcete provádět další volání.
- Při nasazování do služby Azure Kubernetes Service je ve výchozím nastavení zakázané ověřování tokenů.
- Při nasazování do služby Azure Container Instances se ověřování tokenů nepodporuje .
- Ověřování tokenů se nedá používat současně s ověřováním na základě klíčů.
Pokud chcete řídit ověřování tokenů, použijte parametr token_auth_enabled
při vytváření nebo aktualizaci nasazení:
from azureml.core.webservice import AksWebservice
from azureml.core.model import Model, InferenceConfig
# Create the config
aks_config = AksWebservice.deploy_configuration()
# Enable token auth and disable (key) auth on the webservice
aks_config = AksWebservice.deploy_configuration(token_auth_enabled=True, auth_enabled=False)
aks_service_name ='aks-service-1'
# deploy the model
aks_service = Model.deploy(workspace=ws,
name=aks_service_name,
models=[model],
inference_config=inference_config,
deployment_config=aks_config,
deployment_target=aks_target)
aks_service.wait_for_deployment(show_output = True)
Pokud je povolené ověřování tokenů, můžete metodu get_token
použít k načtení webového tokenu JSON (JWT) a času vypršení platnosti tokenu:
Tip
Pokud k získání tokenu použijete instanční objekt a chcete, aby měl minimální požadovaný přístup k načtení tokenu, přiřaďte ho k roli čtenáře pracovního prostoru.
token, refresh_by = aks_service.get_token()
print(token)
Důležité
Po uplynutí doby refresh_by
tokenu je potřeba vyžádat si nový token. Pokud potřebujete aktualizovat tokeny mimo sadu Python SDK, jednou z možností je použít rozhraní REST API s ověřováním instančního objektu k pravidelnému service.get_token()
volání, jak je popsáno výše.
Důrazně doporučujeme vytvořit pracovní prostor Azure Machine Learning ve stejné oblasti jako cluster Azure Kubernetes Service.
K ověření pomocí tokenu webová služba zavolá oblast, ve které se vytvoří váš pracovní prostor Azure Machine Learning. Pokud vaše oblast pracovního prostoru není dostupná, nebudete moct načíst token pro webovou službu, i když je váš cluster v jiné oblasti než váš pracovní prostor. Výsledkem je, že ověřování Microsoft Entra není k dispozici, dokud nebude vaše oblast pracovního prostoru znovu dostupná.
Čím větší je vzdálenost mezi oblastí clusteru a oblastí vašeho pracovního prostoru, tím déle bude načtení tokenu trvat.
Další kroky
Další informace o ověřování nasazeného modelu najdete v tématu Vytvoření klienta pro model nasazený jako webová služba.
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro