В Python возможно ли подключиться к Azure SQL Server с помощью проверки подлинности с помощью пароля Active Directory? - PullRequest
0 голосов
/ 29 декабря 2018

Я попытался подключиться к серверу sql с использованием библиотеки pyodbc,

driver= '{ODBC Driver 17 for SQL Server}'
cnxn = pyodbc.connect('DRIVER='+driver+';SERVER='+host+';PORT=1443;DATABASE='+database+';UID='+user+';PWD='+ password+';Authentication=ActiveDirectoryPassword')

В приведенном выше коде я выбрал ActiveDirectoryPassword (AAD) в качестве типа аутентификации, поскольку у меня есть только доступ AAD. Но получаю следующеесообщение об ошибке.

InterfaceError: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)')

Когда я изменил драйвер на ODBC Driver 13, получаю другое сообщение об ошибке.

driver= '{ODBC Driver 13 for SQL Server}'
cnxn = pyodbc.connect('DRIVER='+driver+';SERVER='+host+';PORT=1443;DATABASE='+database+';UID='+user+';PWD='+ password+';Authentication=ActiveDirectoryPassword')

На этот раз я получил следующее сообщение об ошибке.

OperationalError: ('08001', '[08001] [Microsoft][ODBC Driver 13 for SQL Server]SQL Server Network Interfaces: The Microsoft Online Services Sign-In Assistant could not be found. Install it from http://go.microsoft.com/fwlink/?LinkId=234947. If it is already present, repair the installation. [2].  (2) (SQLDriverConnect); [08001] [Microsoft][ODBC Driver 13 for SQL Server]Client unable to establish connection (2); [08001] [Microsoft][ODBC Driver 13 for SQL Server]Invalid connection string attribute (0)')

Можно ли подключиться к серверу Azure SQL с помощью pyodbc с аутентификацией AAD?если это возможно, как правильно аутентифицировать сервер SQL с помощью AAD?

1 Ответ

0 голосов
/ 31 декабря 2018

Во-первых, согласно подразделу Additional considerations официального документа Use Azure Active Directory Authentication for authentication with SQL, как показано ниже, pyodbc может подключаться к базе данных SQL Azure с проверкой подлинности AAD.

ODBC версии 13.1 поддерживает проверку подлинности Azure Active Directory, однако bcp.exe не может подключиться с использованием проверки подлинности Azure Active Directory, поскольку он использует более старый поставщик ODBC.

Затем существует официальный документ дляSQL Server Using Azure Active Directory with the ODBC Driver представил, как и некоторые ограничения, если не в Windows.

Драйвер Microsoft ODBC для SQL Server с версией 13.1 или выше позволяетПриложения ODBC для подключаются к экземпляру SQL Azure с использованием федеративного удостоверения в Azure Active Directory с именем пользователя / паролем , токеном доступа Azure Active Directory или встроенной аутентификацией Windows (только для драйвера Windows).Для драйвера ODBC версии 13.1 проверка подлинности с помощью токена доступа Azure Active Directory выполняется только для Windows.Драйвер ODBC версии 17 и выше поддерживает эту аутентификацию на всех платформах (Windows, Linux и Mac).

И это

достигается за счет использования нового DSN и подключениястроковые ключевые слова и атрибуты подключения.

Необходимо следовать документу, чтобы настроить некоторые параметры для включения нового DSN, а затем подключить SQL Azure со строкой подключения.

Driver={ODBC Driver 13 for SQL Server};Server={server};UID=myuser;PWD=myPass;Authentication=ActiveDirectoryPassword

и обратите внимание на это.

Чтобы подключиться с использованием имени пользователя и пароля учетной записи Azure Active Directory, укажите Authentication = ActiveDirectoryPassword в строке подключения и UID и PWD ключевые слова с именем пользователя и паролем, соответственно.

Между тем, как и другие ресурсы, они кажутся устаревшими, но блог подробно описан для конфигурацииМногофакторная аутентификация в SQL Azure и документ по уценке, введенный для Connecting to SQL Database By Using Azure Active Directory Authentication.

Кроме того, для Linux и Mac блог подать заявку на другое решение, которое может быть полезно для создания подключения к SQL Server.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...