Sdílet prostřednictvím


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=Truepř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.