Использование идентификатора Microsoft Entra
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure конечной точке аналитики платформы Аналитики Azure Synapse Analytics (PDW) в Microsoft Fabric Хранилище в Microsoft Fabric
Характер использования
Начиная с версии 18.2.1 Microsoft OLE DB Driver for SQL Server позволяет приложениям OLE DB подключаться к База данных SQL Azure, Управляемый экземпляр SQL 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:
Ключевое слово строки подключения | Свойства подключения | Description |
---|---|---|
Маркер доступа | SSPROP_AUTH_ACCESS_TOKEN |
Указывает маркер доступа для проверки подлинности в идентификаторе Microsoft Entra. |
Проверка подлинности | SSPROP_AUTH_MODE |
Указывает используемый метод проверки подлинности. |
Дополнительные сведения о новых ключевых словах и свойствах см. на следующих страницах:
- Использование ключевых слов строки подключения с драйвером OLE DB для SQL Server
- Свойства инициализации и авторизации
Шифрование и проверка сертификатов
Дополнительные сведения см. в разделе Шифрование и проверка сертификатов.
Добавление графических пользовательских интерфейсов
Графический пользовательский интерфейс драйвера был улучшен, чтобы разрешить проверку подлинности Microsoft Entra. Дополнительные сведения см. в разделе:
Примеры строк подключения
В этом разделе приведены примеры новых и существующих ключевых слов строки подключения для использования со свойствами IDataInitialize::GetDataSource
и DBPROP_INIT_PROVIDERSTRING
.
Проверка подлинности SQL
- Использование:
IDataInitialize::GetDataSource
- Новые функции:
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Authentication=SqlPassword;User ID=[username];Password=[password];Use Encryption for Data=Mandatory
- Устаревшие:
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];User ID=[username];Password=[password];Use Encryption for Data=Mandatory
- Новые функции:
- Использование:
DBPROP_INIT_PROVIDERSTRING
- Новые функции:
Server=[server];Database=[database];Authentication=SqlPassword;UID=[username];PWD=[password];Encrypt=Mandatory
- Устаревшие:
Server=[server];Database=[database];UID=[username];PWD=[password];Encrypt=Mandatory
- Новые функции:
Встроенная проверка подлинности в Windows с помощью интерфейса поставщика поддержки безопасности (SSPI)
- Использование:
IDataInitialize::GetDataSource
- Новые функции:
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Authentication=ActiveDirectoryIntegrated;Use Encryption for Data=Mandatory
- Устаревшие:
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Integrated Security=SSPI;Use Encryption for Data=Mandatory
- Новые функции:
- Использование:
DBPROP_INIT_PROVIDERSTRING
- Новые функции:
Server=[server];Database=[database];Authentication=ActiveDirectoryIntegrated;Encrypt=Mandatory
- Устаревшие:
Server=[server];Database=[database];Trusted_Connection=yes;Encrypt=Mandatory
- Новые функции:
Проверка подлинности имени пользователя и пароля Microsoft Entra
- Использование:
IDataInitialize::GetDataSource
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Authentication=ActiveDirectoryPassword;User ID=[username];Password=[password];Use Encryption for Data=Mandatory
- Использование:
DBPROP_INIT_PROVIDERSTRING
Server=[server];Database=[database];Authentication=ActiveDirectoryPassword;UID=[username];PWD=[password];Encrypt=Mandatory
Встроенная проверка подлинности Microsoft Entra
- Использование:
IDataInitialize::GetDataSource
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Authentication=ActiveDirectoryIntegrated;Use Encryption for Data=Mandatory
- Использование:
DBPROP_INIT_PROVIDERSTRING
Server=[server];Database=[database];Authentication=ActiveDirectoryIntegrated;Encrypt=Mandatory
Проверка подлинности Microsoft Entra с помощью маркера доступа
- Использование:
IDataInitialize::GetDataSource
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Access Token=[access token];Use Encryption for Data=Mandatory
- Использование:
DBPROP_INIT_PROVIDERSTRING
Предоставление маркера доступа через
DBPROP_INIT_PROVIDERSTRING
не поддерживается.
Интерактивная проверка подлинности Microsoft Entra
- Использование:
IDataInitialize::GetDataSource
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Authentication=ActiveDirectoryInteractive;User ID=[username];Use Encryption for Data=Mandatory
- Использование:
DBPROP_INIT_PROVIDERSTRING
Server=[server];Database=[database];Authentication=ActiveDirectoryInteractive;UID=[username];Encrypt=Mandatory
Проверка подлинности управляемого удостоверения Microsoft Entra
- Использование:
IDataInitialize::GetDataSource
- Управляемое удостоверение, назначаемое пользователем:
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Authentication=ActiveDirectoryMSI;User ID=[Object ID];Use Encryption for Data=Mandatory
- Управляемое удостоверение, назначаемое системой:
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Authentication=ActiveDirectoryMSI;Use Encryption for Data=Mandatory
- Управляемое удостоверение, назначаемое пользователем:
- Использование:
DBPROP_INIT_PROVIDERSTRING
- Управляемое удостоверение, назначаемое пользователем:
Server=[server];Database=[database];Authentication=ActiveDirectoryMSI;UID=[Object ID];Encrypt=Mandatory
- Управляемое удостоверение, назначаемое системой:
Server=[server];Database=[database];Authentication=ActiveDirectoryMSI;Encrypt=Mandatory
- Управляемое удостоверение, назначаемое пользователем:
Проверка подлинности субъекта-службы Microsoft Entra
- Использование:
IDataInitialize::GetDataSource
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Authentication=ActiveDirectoryServicePrincipal;User ID=[Application (client) ID];Password=[Application (client) secret];Use Encryption for Data=Mandatory
- Использование:
DBPROP_INIT_PROVIDERSTRING
Server=[server];Database=[database];Authentication=ActiveDirectoryServicePrincipal;UID=[Application (client) ID];PWD=[Application (client) secret];Encrypt=Mandatory
Примеры кода
В следующих примерах показан код, необходимый для подключения к идентификатору 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.