Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к: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
Примечание.
Опция аутентификации ActiveDirectoryPassword (аутентификация с помощью пароля Microsoft Entra ID) устарела.
Пароль в Microsoft Entra ID основан на учётных данных владельца ресурса (ROPC) OAuth 2.0, что позволяет приложению выполнить вход пользователя, непосредственно обрабатывая их пароль.
Корпорация Майкрософт рекомендует не использовать поток ROPC; Он несовместим с многофакторной проверкой подлинности (MFA). В большинстве случаев более безопасные альтернативные варианты доступны и рекомендуется. Этот поток требует высокой степени доверия к приложению и несет риски, которые не присутствуют в других потоках. Этот поток следует использовать только в том случае, если более безопасные потоки не являются жизнеспособными. Корпорация Майкрософт отойдет от этого потока проверки подлинности с высоким риском, чтобы защитить пользователей от вредоносных атак. Дополнительные сведения см. в статье "Планирование обязательной многофакторной проверки подлинности для Azure".
Если контекст пользователя доступен, используйте аутентификацию с помощью ActiveDirectoryInteractive.
Если контекст пользователя недоступен и приложение работает в инфраструктуре Azure, используйте ActiveDirectoryMSI (или ActiveDirectoryManagedIdentity в некоторых драйверах). Управляемое удостоверение устраняет затраты на обслуживание и смену секретов и сертификатов. Если вы не можете использовать управляемое удостоверение, используйте проверку подлинности ActiveDirectoryServicePrincipal.
Предупреждение
Не используйте аутентификацию субъекта-службы, если контекст пользователя доступен. Доступ только для приложений по своей природе обладает высоким уровнем привилегий, часто предоставляя доступ ко всей арендуемой среде и потенциально позволяя злоумышленнику получать доступ к данным клиентов любого пользователя.
- Использование:
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.