Как включить аутентификацию для веб-службы ACI в службе машинного обучения Azure?

Я могу развернуть службу прогнозирования машинного обучения Azure в своей рабочей области ws, используя синтаксис

aciconfig = AciWebservice.deploy_configuration(cpu_cores=1, 
                                               memory_gb=8, 
                                               tags={"method" : "some method"}, 
                                               description='Predict something')

а потом

service = Webservice.deploy_from_image(deployment_config = aciconfig,
                                       image = image,
                                       name = service_name,
                                       workspace = ws)

как описано в документация.
Однако это делает службу общедоступной, и это не совсем оптимально.

Какой самый простой способ защитить службу ACI? Я понимаю, что передача _ 4_ параметр может выполнить эту работу, но как я могу проинструктировать клиента (скажем, с помощью curl или Postman) использовать службу впоследствии?


person Davide Fiocco    schedule 24.04.2019    source источник


Ответы (2)


См. здесь в качестве примера (на C #). Когда вы включаете аутентификацию, вам нужно будет отправить ключ API в заголовке «Авторизация» в HTTP-запросе:

client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", authKey);

См. здесь как получить ключ.

person silent    schedule 25.04.2019
comment
Если у нас есть несколько пользователей и / или приложений, которые будут использовать API, мы не должны предоставлять им всем один и тот же первичный ключ API. Как это сделать? - person Martin Thøgersen; 20.05.2019
comment
Вы можете, например, поставить вперед управление API Azure. docs.microsoft.com/en-us/azure/api-management - person silent; 20.05.2019
comment
Да, я уже смотрел на Azure API Management, но было непонятно, куда передать основной токен. Не могли бы вы немного уточнить? Ценить это. - person Martin Thøgersen; 20.05.2019
comment
См. Здесь, как добавить заголовок HTTP: docs.microsoft.com/en-us/azure/api-management/ Таким образом, вы должны выполнить авторизацию пользователя в управлении API, а затем API-интерфейс вводит один и тот же первичный ключ для всех запросов к вашей серверной службе ML. - person silent; 20.05.2019

Сначала получите первичный и вторичный ключи с помощью синтаксиса (Python), например

service.get_keys()

Если вы используете curl, синтаксис может выглядеть следующим образом:

curl -H "Content-Type:application/json" -H "Authorization: Bearer <authKey>" -X POST -d '{"data": [some data]}' http://<url>:<port>/<method>

где <authKey> - один из ключей, полученных выше.

person Davide Fiocco    schedule 27.04.2019