gpt4 book ai didi

python - 尝试使用 MSI 身份验证从 Azure ML 服务连接 Azure SQL 数据库(无需用户名和密码即可连接 Azure 数据库)

转载 作者:太空宇宙 更新时间:2023-11-03 20:12:26 33 4
gpt4 key购买 nike

我正在尝试使用 MSI 身份验证(无需用户名和密码)从 Azure 机器学习服务连接 Azure SQL 数据库

我正在尝试在 Azure 机器学习服务上建立机器学习模型,目的是我需要数据,这就是我想要使用 MSI 身份验证从 Azure 机器学习服务连接 Azure SQL 数据库的原因。

但是我遇到了以下错误:-

 "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()

有没有办法通过 MSI 身份验证从 Azure 机器学习服务连接 Azure、SQL 数据库?

最佳答案

目前不支持 MSI 身份验证从 Azure ML 连接 Azure SQL DB, future 将添加此功能。通常,这与在数据库中设置服务主体有关,附件是为 Azure ML 进行此设置的分步指南。

enter image description here

enter image description here

关于python - 尝试使用 MSI 身份验证从 Azure ML 服务连接 Azure SQL 数据库(无需用户名和密码即可连接 Azure 数据库),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58642295/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com