Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к:SQL Server
База данных Azure SQL
Управляемый экземпляр Azure SQL
Azure Synapse Analytics
Система платформы аналитики (PDW)
Конечная точка SQL аналитики в Microsoft Fabric
Хранилище в Microsoft Fabric
База данных SQL в Microsoft Fabric
Назначение
Начиная с версии 18.2.1 Microsoft OLE DB Driver for SQL Server позволяет приложениям OLE DB подключаться к базе данных Azure SQL, SQL Managed Instance Azure, Azure Synapse Analytics и Microsoft Fabric с помощью федеративного удостоверения.
К методам проверки подлинности Microsoft Entra относятся:
- Имя пользователя и пароль
- Маркер доступа
- Встроенная проверка подлинности
Версия 18.3.0 добавляет поддержку следующих методов проверки подлинности Microsoft Entra:
Интерактивная проверка подлинности
Проверка подлинности управляемого удостоверения (только из виртуальной машины Azure, настроенной с управляемым удостоверением)
В версии 18.5.0 добавлена поддержка следующего способа проверки подлинности:
- Проверка подлинности служебного принципала Microsoft Entra
Примечание.
Использование следующих режимов проверки подлинности с параметром DataTypeCompatibility (или соответствующего свойства этого элемента) со значением 80не поддерживается:
- Проверка подлинности Microsoft Entra с помощью имени пользователя и пароля
- Проверка подлинности Microsoft Entra с помощью токена доступа
- Встроенная проверка подлинности Microsoft Entra
- Интерактивная проверка подлинности Microsoft Entra
- Проверка подлинности управляемых удостоверений Microsoft Entra
- Проверка подлинности служебного принципала Microsoft Entra
Чтобы использовать проверку подлинности Microsoft Entra, необходимо настроить источник данных SQL Azure. Дополнительные сведения см. в разделе о настройке и администрировании проверки подлинности Microsoft Entra с помощью Azure SQL.
Ключевые слова и свойства строки подключения
Следующие ключевые слова строки подключения были введены для поддержки аутентификации Microsoft Entra:
| Ключевое слово строки подключения | Свойства подключения | Описание |
|---|---|---|
| Маркер доступа | SSPROP_AUTH_ACCESS_TOKEN |
Указывает токен доступа для проверки подлинности в Microsoft Entra ID. |
| Проверка подлинности | SSPROP_AUTH_MODE |
Указывает используемый метод проверки подлинности. |
Дополнительные сведения о новых ключевых словах и свойствах см. на следующих страницах:
- Использование ключевых слов в строке подключения с драйвером OLE DB для SQL Server
- Свойства инициализации и авторизации
Шифрование и проверка сертификатов
Дополнительные сведения см. в разделе Шифрование и проверка сертификатов.
Добавление графических пользовательских интерфейсов
Графический пользовательский интерфейс драйвера был улучшен, чтобы разрешить проверку подлинности Microsoft Entra. Дополнительные сведения см. в разделе:
Примеры строк подключения
В этом разделе приведены примеры новых и существующих ключевых слов строки подключения для использования со свойствами IDataInitialize::GetDataSource и DBPROP_INIT_PROVIDERSTRING.
Проверка подлинности SQL
- Использование:
IDataInitialize::GetDataSource- Новое:
Provider=MSOLEDBSQL19; Источник данных=[сервер]; Первоначальный каталог=[база данных]; Authentication=SqlPassword; Идентификатор пользователя=[имя_пользователя]; Password=[password]; Использование шифрования для Data=Обязательно
- Устарело:
Provider=MSOLEDBSQL19; Источник данных=[сервер]; Первоначальный каталог=[база данных]; Идентификатор пользователя=[имя_пользователя]; Password=[password]; Использование шифрования для Data=Обязательно
- Новое:
- Использование:
DBPROP_INIT_PROVIDERSTRING- Новое:
Server=[server];Database=[database];Authentication=SqlPassword;UID=[username];PWD=[password];Encrypt=Mandatory
- Устарело:
Server=[server];Database=[database];UID=[username];PWD=[password];Encrypt=Обязательно
- Новое:
Встроенная проверка подлинности в Windows с помощью интерфейса поставщика поддержки безопасности (SSPI)
- Использование:
IDataInitialize::GetDataSource- Новое:
Provider=MSOLEDBSQL19; Источник данных=[сервер]; Первоначальный каталог=[база данных]; Authentication=ActiveDirectoryIntegrated; Использование шифрования для Data=Обязательно
- Устарело:
Provider=MSOLEDBSQL19; Источник данных=[сервер]; Первоначальный каталог=[база данных]; Встроенная безопасность=SSPI; Использование шифрования для Data=Обязательно
- Новое:
- Использование:
DBPROP_INIT_PROVIDERSTRING- Новое:
Server=[server];Database=[database];Authentication=ActiveDirectoryIntegrated;Encrypt=Mandatory
- Устарело:
Server=[server];Database=[database];Trusted_Connection=да;Encrypt=Обязательно
- Новое:
Проверка подлинности имени пользователя и пароля Microsoft Entra
Important
Параметр аутентификации ActiveDirectoryPassword (аутентификация по паролю Microsoft Entra ID) устарел в драйверах Microsoft SQL. Этот высокорисковый сценарий аутентификации несовместим с обязательной многофакторной аутентификацией Microsoft Entra (MFA) и может не работать в арендаторах, где требуется MFA. Запланируйте переход на другой метод аутентификации Microsoft Entra.
Microsoft Entra ID проверка подлинности паролей основана на предоставлении учетных данных владельца ресурса OAuth 2.0 ( ROPC), что позволяет приложению войти в систему, напрямую обрабатывая пароль.
Microsoft рекомендует не использовать поток ROPC, так как он несовместим с MFA. В большинстве случаев более безопасные альтернативные варианты доступны и рекомендуется. Этот поток требует высокой степени доверия к приложению и несет риски, которые не присутствуют в других потоках. Используйте этот поток только в том случае, если более безопасные потоки не являются жизнеспособными. Корпорация Майкрософт отойдет от этого потока проверки подлинности с высоким риском, чтобы защитить пользователей от вредоносных атак. Дополнительные сведения см. в статье "Планирование обязательной многофакторной проверки подлинности для Azure".
Когда пользователь присутствует при входе в систему, используйте аутентификацию ActiveDirectoryInteractive или ActiveDirectoryIntegrated, чтобы записи в журнале аудита относились к вошедшему пользователю и применялись политики условного доступа.
Для сценариев взаимодействия между службами без участия пользователя следуйте рекомендациям по использованию служебной учетной записи Microsoft Entra:
- Если приложение работает в инфраструктуре Azure, используйте ActiveDirectoryMSI (или ActiveDirectoryManagedIdentity в некоторых драйверах). Управляемые удостоверения устраняют затраты на обслуживание и смену секретов и сертификатов.
- Если управляемое удостоверение недоступно (например, приложение работает вне Azure), используйте ActiveDirectoryServicePrincipal. Если драйвер это поддерживает, предпочтительнее использовать клиентский сертификат вместо секрета клиента. При использовании сертификата закрытый ключ остается на клиенте, и только подписанное утверждение отправляется в Microsoft Entra для проверки подлинности клиента. Если ключ хранится в аппаратном модуле (например, TPM или HSM) или помечен как неэкспортируемый, его нельзя экспортировать в виде строки, как это можно сделать с секретом клиента.
- Не используйте Microsoft Entra учетную запись пользователя в качестве учетной записи службы.
- Использование:
IDataInitialize::GetDataSourceProvider=MSOLEDBSQL19; Источник данных=[сервер]; Первоначальный каталог=[база данных]; Authentication=ActiveDirectoryPassword; Идентификатор пользователя=[имя_пользователя]; Password=[password]; Использование шифрования для Data=Обязательно
- Использование:
DBPROP_INIT_PROVIDERSTRINGServer=[server];Database=[database];Authentication=ActiveDirectoryPassword;UID=[username];PWD=[password];Шифрование=Обязательно
Встроенная проверка подлинности Microsoft Entra
- Использование:
IDataInitialize::GetDataSourceProvider=MSOLEDBSQL19; Источник данных=[сервер]; Первоначальный каталог=[база данных]; Authentication=ActiveDirectoryIntegrated; Использование шифрования для Data=Обязательно
- Использование:
DBPROP_INIT_PROVIDERSTRINGServer=[server];Database=[database];Authentication=ActiveDirectoryIntegrated;Encrypt=Mandatory
Проверка подлинности Microsoft Entra с помощью токена доступа
- Использование:
IDataInitialize::GetDataSourceProvider=MSOLEDBSQL19; Источник данных=[сервер]; Первоначальный каталог=[база данных]; Access Token=[маркер доступа]; Использование шифрования для Data=Обязательно
- Использование:
DBPROP_INIT_PROVIDERSTRINGПредоставление токена доступа через
DBPROP_INIT_PROVIDERSTRINGне поддерживается.
Интерактивная проверка подлинности Microsoft Entra
- Использование:
IDataInitialize::GetDataSourceProvider=MSOLEDBSQL19; Источник данных=[сервер]; Первоначальный каталог=[база данных]; Authentication=ActiveDirectoryInteractive; Идентификатор пользователя=[имя_пользователя]; Использование шифрования для Data=Обязательно
- Использование:
DBPROP_INIT_PROVIDERSTRINGServer=[server];Database=[database];Authentication=ActiveDirectoryInteractive;UID=[username];Encrypt=Mandatory
Проверка подлинности управляемого удостоверения Microsoft Entra
- Использование:
IDataInitialize::GetDataSource- Управляемое удостоверение, назначаемое пользователем:
Provider=MSOLEDBSQL19; Источник данных=[сервер]; Первоначальный каталог=[база данных]; Authentication=ActiveDirectoryMSI; Идентификатор пользователя=[идентификатор объекта]; Использование шифрования для Data=Обязательно
- Системно назначаемое управляемое удостоверение:
Provider=MSOLEDBSQL19; Источник данных=[сервер]; Первоначальный каталог=[база данных]; Authentication=ActiveDirectoryMSI; Использование шифрования для Data=Обязательно
- Управляемое удостоверение, назначаемое пользователем:
- Использование:
DBPROP_INIT_PROVIDERSTRING- Управляемое удостоверение, назначаемое пользователем:
Server=[сервер]; Database=[база данных]; Authentication=ActiveDirectoryMSI; UID=[Идентификатор объекта]; Encrypt=Обязательный
- Системно назначаемое управляемое удостоверение:
Server=[server];Database=[database];Authentication=ActiveDirectoryMSI;Encrypt=Mandatory
- Управляемое удостоверение, назначаемое пользователем:
Проверка подлинности служебного принципала Microsoft Entra
- Использование:
IDataInitialize::GetDataSourceProvider=MSOLEDBSQL19; Источник данных=[сервер]; Первоначальный каталог=[база данных]; Authentication=ActiveDirectoryServicePrincipal; Идентификатор пользователя=[идентификатор приложения (клиент)]; Password=[Application (client) secret]; Использование шифрования для Data=Обязательно
- Использование:
DBPROP_INIT_PROVIDERSTRINGServer=[сервер]; Database=[база данных]; Authentication=ActiveDirectoryServicePrincipal; UID=[Идентификатор приложения (клиента)]; PWD=[Секрет приложения (клиента)]; Encrypt=Обязательно
Примеры кода
В следующих примерах показан код, необходимый для подключения к идентификатору Microsoft Entra с ключевыми словами подключения.
Маркер доступа
#include <string>
#include <iostream>
#include <msdasc.h>
int main()
{
wchar_t azureServer[] = L"server";
wchar_t azureDatabase[] = L"mydatabase";
wchar_t accessToken[] = L"eyJ0eXAiOi...";
IDBInitialize *pIDBInitialize = nullptr;
IDataInitialize* pIDataInitialize = nullptr;
HRESULT hr = S_OK;
CoInitialize(nullptr);
// Construct the connection string.
std::wstring connString = L"Provider=MSOLEDBSQL19;Data Source=" + std::wstring(azureServer) + L";Initial Catalog=" +
std::wstring(azureDatabase) + L";Access Token=" + accessToken + L";Use Encryption for Data=Mandatory;";
hr = CoCreateInstance(CLSID_MSDAINITIALIZE, nullptr, CLSCTX_INPROC_SERVER,
IID_IDataInitialize, reinterpret_cast<LPVOID*>(&pIDataInitialize));
if (FAILED(hr))
{
std::cout << "Failed to create an IDataInitialize instance." << std::endl;
goto Cleanup;
}
hr = pIDataInitialize->GetDataSource(nullptr, CLSCTX_INPROC_SERVER, connString.c_str(),
IID_IDBInitialize, reinterpret_cast<IUnknown**>(&pIDBInitialize));
if (FAILED(hr))
{
std::cout << "Failed to get data source object." << std::endl;
goto Cleanup;
}
hr = pIDBInitialize->Initialize();
if (FAILED(hr))
{
std::cout << "Failed to establish connection." << std::endl;
goto Cleanup;
}
Cleanup:
if (pIDBInitialize)
{
pIDBInitialize->Uninitialize();
pIDBInitialize->Release();
}
if (pIDataInitialize)
{
pIDataInitialize->Release();
}
CoUninitialize();
}
Интеграция с Active Directory
#include <string>
#include <iostream>
#include <msdasc.h>
int main()
{
wchar_t azureServer[] = L"server";
wchar_t azureDatabase[] = L"mydatabase";
IDBInitialize *pIDBInitialize = nullptr;
IDataInitialize* pIDataInitialize = nullptr;
HRESULT hr = S_OK;
CoInitialize(nullptr);
// Construct the connection string.
std::wstring connString = L"Provider=MSOLEDBSQL19;Data Source=" + std::wstring(azureServer) + L";Initial Catalog=" +
std::wstring(azureDatabase) + L";Authentication=ActiveDirectoryIntegrated;Use Encryption for Data=Mandatory;";
hr = CoCreateInstance(CLSID_MSDAINITIALIZE, nullptr, CLSCTX_INPROC_SERVER,
IID_IDataInitialize, reinterpret_cast<LPVOID*>(&pIDataInitialize));
if (FAILED(hr))
{
std::cout << "Failed to create an IDataInitialize instance." << std::endl;
goto Cleanup;
}
hr = pIDataInitialize->GetDataSource(nullptr, CLSCTX_INPROC_SERVER, connString.c_str(),
IID_IDBInitialize, reinterpret_cast<IUnknown**>(&pIDBInitialize));
if (FAILED(hr))
{
std::cout << "Failed to get data source object." << std::endl;
goto Cleanup;
}
hr = pIDBInitialize->Initialize();
if (FAILED(hr))
{
std::cout << "Failed to establish connection." << std::endl;
goto Cleanup;
}
Cleanup:
if (pIDBInitialize)
{
pIDBInitialize->Uninitialize();
pIDBInitialize->Release();
}
if (pIDataInitialize)
{
pIDataInitialize->Release();
}
CoUninitialize();
}
Связанный контент
Авторизация доступа к веб-приложениям Microsoft Entra с помощью потока предоставления кода OAuth 2.0.
Сведения об аутентификации Microsoft Entra для SQL Server.
Настройте подключения к драйверам с помощью ключевых слов строки подключения, которые поддерживаются драйвером OLE DB.