Web hizmetleri olarak dağıtılan modeller için kimlik doğrulamasını yapılandırma
ŞUNUN IÇIN GEÇERLIDIR: Python SDK azureml v1
Azure Machine Learning, eğitilen makine öğrenmesi modellerinizi web hizmetleri olarak dağıtmanıza olanak tanır. Bu makalede, bu dağıtımlar için kimlik doğrulamasını yapılandırmayı öğrenin.
Azure Machine Learning tarafından oluşturulan model dağıtımları iki kimlik doğrulama yönteminden birini kullanacak şekilde yapılandırılabilir:
anahtar tabanlı: Web hizmetinde kimlik doğrulaması yapmak için statik anahtar kullanılır.
belirteç tabanlı: Azure Machine Learning çalışma alanından (Microsoft Entra Kimliği kullanılarak) geçici bir belirteç alınmalı ve web hizmetinde kimlik doğrulaması yapmak için kullanılmalıdır. Bu belirtecin süresi bir süre sonra dolar ve web hizmetiyle çalışmaya devam etmek için yenilenmesi gerekir.
Not
Belirteç tabanlı kimlik doğrulaması yalnızca Azure Kubernetes Service'e dağıtılırken kullanılabilir.
Anahtar tabanlı kimlik doğrulaması
Azure Kubernetes Service'te (AKS) dağıtılan web hizmetlerinde anahtar tabanlı kimlik doğrulaması varsayılan olarak etkindir .
Azure Container Instances (ACI) tarafından dağıtılan hizmetlerin anahtar tabanlı kimlik doğrulaması varsayılan olarak devre dışıdır , ancak ACI web hizmetini oluştururken ayarlayarak auth_enabled=True
etkinleştirebilirsiniz. Aşağıdaki kod, anahtar tabanlı kimlik doğrulamasının etkinleştirildiği bir ACI dağıtım yapılandırması oluşturma örneğidir.
from azureml.core.webservice import AciWebservice
aci_config = AciWebservice.deploy_configuration(cpu_cores = 1,
memory_gb = 1,
auth_enabled=True)
Ardından sınıfını kullanarak Model
dağıtımda özel ACI yapılandırmasını kullanabilirsiniz.
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)
Kimlik doğrulama anahtarlarını getirmek için kullanın aci_service.get_keys()
. Bir anahtarı yeniden oluşturmak için işlevini kullanın regen_key()
ve Birincil veya İkincil'i geçirin.
aci_service.regen_key("Primary")
# or
aci_service.regen_key("Secondary")
Belirteç tabanlı kimlik doğrulaması
Bir web hizmeti için belirteç kimlik doğrulamasını etkinleştirdiğinizde, kullanıcıların web hizmetine erişmek için bir Azure Machine Learning JSON Web Belirteci sunması gerekir. Belirtilen sürenin sonunda belirteç geçersiz olur ve çağrı yapmaya devam edilebilmesi için yenilenmesi gerekir.
- Azure Kubernetes Service'e dağıttığınızda belirteç kimlik doğrulaması varsayılan olarak devre dışı bırakılır.
- Azure Container Instances'a dağıtım yaptığınızda belirteç kimlik doğrulaması desteklenmez .
- Belirteç kimlik doğrulaması, anahtar tabanlı kimlik doğrulamasıyla aynı anda kullanılamaz.
Belirteç kimlik doğrulamasını token_auth_enabled
denetlemek için bir dağıtım oluştururken veya güncelleştirirken parametresini kullanın:
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)
Belirteç kimlik doğrulaması etkinleştirildiyse yöntemini kullanarak get_token
bir JSON Web Belirteci (JWT) ve bu belirtecin süre sonu süresini alabilirsiniz:
İpucu
Belirteci almak için hizmet sorumlusu kullanıyorsanız ve belirteci almak için gereken en düşük erişime sahip olmasını istiyorsanız, bunu çalışma alanının okuyucu rolüne atayın.
token, refresh_by = aks_service.get_token()
print(token)
Önemli
Belirtecin refresh_by
süresi dolduktan sonra yeni bir belirteç istemeniz gerekir. Python SDK'sı dışındaki belirteçleri yenilemeniz gerekiyorsa, daha önce açıklandığı gibi çağrıyı düzenli aralıklarla yapmak service.get_token()
için REST API'yi hizmet sorumlusu kimlik doğrulamasıyla birlikte kullanmak bir seçenektir.
Azure Machine Learning çalışma alanınızı Azure Kubernetes Service kümenizle aynı bölgede oluşturmanızı kesinlikle öneririz.
Belirteçle kimlik doğrulaması yapmak için web hizmeti, Azure Machine Learning çalışma alanınızın oluşturulduğu bölgeye bir çağrı yapar. Çalışma alanı bölgeniz kullanılamıyorsa, kümeniz çalışma alanınızdan farklı bir bölgede olsa bile web hizmetiniz için belirteç getiremezsiniz. Sonuç olarak, çalışma alanı bölgeniz yeniden kullanılabilir olana kadar Microsoft Entra kimlik doğrulaması kullanılamaz.
Ayrıca, kümenizin bölgesi ile çalışma alanı bölgeniz arasındaki uzaklık ne kadar büyük olursa, belirtecin alınması o kadar uzun sürer.
Sonraki adımlar
Dağıtılan modelde kimlik doğrulaması hakkında daha fazla bilgi için bkz . Web hizmeti olarak dağıtılan bir model için istemci oluşturma.