Попытка подключиться к базе данных SQL Azure из Azure ML Service с использованием аутентификации MSI (без имени пользователя и пароля подключаться к базе данных Azure) - PullRequest
1 голос
/ 31 октября 2019

Я пытаюсь подключить База данных SQL Azure из Служба машинного обучения Azure с Аутентификацией MSI (без имени пользователя и пароля).

Я пытаюсь модели машинного обучения в службе машинного обучения Azure. Для этого мне нужны данные, поэтому я хочу подключить базу данных SQL Azure из службы машинного обучения Azure с помощью MSI-аутентификации.

Но я получил ошибку ниже:-

 "error": {"message": "Activity Failed:\n{\n    \"error\": {\n        \"code\": \"UserError\",\n        \"message\": \"User program failed with KeyError: 'MSI_ENDPOINT'\",\n

Проверьте приведенный ниже код, который я использовал для подключения к базе данных.

import logging
import struct
import pyodbc
import os
import requests


class AzureDbConnect:
    def __init__(self):
        print("Inside msi database")
        msi_endpoint = os.environ["MSI_ENDPOINT"]
        msi_secret = os.environ["MSI_SECRET"]

        resource_uri = 'https://database.windows.net/'

        logging.info(msi_endpoint)
        print(msi_endpoint)
        logging.info(msi_secret)
        print(msi_secret)
        print("Inside token")

        token_auth_uri = f"{msi_endpoint}?resource={resource_uri}&api-version=2017-09-01"
        head_msi = {'Secret': msi_secret}
        resp = requests.get(token_auth_uri, headers=head_msi)
        access_token = resp.json()['access_token']
        logging.info(access_token)
        print("Token is :- ")
        print(access_token)

        accesstoken = bytes(access_token, 'utf-8')
        exptoken = b""
        for i in accesstoken:
            exptoken += bytes({i})
            exptoken += bytes(1)
        tokenstruct = struct.pack("=i", len(exptoken)) + exptoken

        conn = pyodbc.connect("Driver={ODBC Driver 17 for SQL Server};"
                              "Server=tcp:<Server Name>"
                              "1433;Database=<Database Name>",
                              attrs_before={1256: bytearray(tokenstruct)})

        print(conn)

        self.sql_db = conn.cursor()

Есть ли способ подключения Azure, базы данных SQL из машинного обучения AzureСлужба с проверкой подлинности MSI?

1 Ответ

0 голосов
/ 01 ноября 2019

В настоящее время MSI-аутентификация не поддерживается для подключения Azure SQL DB из Azure ML. В будущем планируется добавить эту карту. Обычно это можно сделать при настройке принципалов службы в БД. В приложении приведено пошаговое руководство для получения этой настройки для Azure ML.

enter image description here

enter image description here

...