Uso de Microsoft Entra ID
Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) Punto de conexión de análisis SQL en Microsoft Fabric Almacenamiento en Microsoft Fabric
Fin
A partir de la versión 18.2.1, Microsoft OLE DB Driver for SQL Server permite que las aplicaciones OLE DB se conecten a la base de datos de Azure SQL, Azure SQL Managed Instance, Azure Synapse Analytics y Microsoft Fabric mediante una identidad federada.
Los métodos de autenticación de Microsoft Entra son:
- Nombre de usuario y contraseña
- Access token
- Autenticación integrada
La versión 18.3.0 agrega compatibilidad con los siguientes métodos de autenticación de Microsoft Entra:
Autenticación interactiva
Autenticación de identidad administrada (solo desde una máquina virtual de Azure configurada para identidad administrada)
La versión 18.5.0 agrega compatibilidad con los siguientes métodos de autenticación:
- Autenticación de entidad de servicio de Microsoft Entra
Nota:
No se admite el uso de DataTypeCompatibility
los siguientes modos de autenticación con (o 80
su propiedad correspondiente) establecer en no es compatible
- Autenticación de Microsoft Entra mediante el nombre de usuario y la contraseña
- Autenticación de Microsoft Entra mediante token de acceso
- Autenticación integrada de Microsoft Entra
- Autenticación interactiva de Microsoft Entra
- Autenticación de identidades administradas de Microsoft Entra
- Autenticación de entidad de servicio de Microsoft Entra
Para usar la autenticación de Microsoft Entra, debes configurar el origen de datos de Azure SQL. Para obtener más información, consulte Configuración y administración de la autenticación de Microsoft Entra con Azure SQL.
Palabras clave de cadena de conexión y propiedades
Se han agregado las siguientes palabras clave de cadena de conexión para admitir la autenticación de Microsoft Entra:
Palabra clave de cadena de conexión | Propiedad Conexión | Descripción |
---|---|---|
Token de acceso | SSPROP_AUTH_ACCESS_TOKEN |
Especifica un token de acceso para autenticarse en microsoft Entra ID. |
Autenticación | SSPROP_AUTH_MODE |
Especifica el método de autenticación que se va a utilizar. |
Para más información sobre las nuevas palabras clave y propiedades, consulte:
- Uso de palabras clave de cadena de conexión con el controlador OLE DB para SQL Server
- Propiedades de inicialización y autorización
Cifrado y validación de certificados
Consulte Cifrado y validación de certificados para obtener más información.
Adiciones de GUI
La interfaz gráfica de usuario del driver se ha mejorado para permitir la autenticación de Microsoft Entra. Para más información, vea:
- Cuadro de diálogo de inicio de sesión de SQL Server
- Configuración de vínculo de datos universal (UDL)
Ejemplos de cadena de conexión
En esta sección se muestran ejemplos de palabras clave de cadena de conexión nuevas y existentes que se van a utilizar con IDataInitialize::GetDataSource
y la propiedad DBPROP_INIT_PROVIDERSTRING
.
Autenticación SQL
- Con
IDataInitialize::GetDataSource
- Nuevo:
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Authentication=SqlPassword;User ID=[username];Password=[password];Use Encryption for Data=Mandatory
- En desuso:
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];User ID=[username];Password=[password];Use Encryption for Data=Mandatory
- Nuevo:
- Con
DBPROP_INIT_PROVIDERSTRING
- Nuevo:
Server=[server];Database=[database];Authentication=SqlPassword;UID=[username];PWD=[password];Encrypt=Mandatory
- En desuso:
Server=[server];Database=[database];UID=[username];PWD=[password];Encrypt=Mandatory
- Nuevo:
Autenticación integrada de Windows mediante la interfaz del proveedor de compatibilidad para seguridad (SSPI)
- Con
IDataInitialize::GetDataSource
- Nuevo:
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Authentication=ActiveDirectoryIntegrated;Use Encryption for Data=Mandatory
- En desuso:
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Integrated Security=SSPI;Use Encryption for Data=Mandatory
- Nuevo:
- Con
DBPROP_INIT_PROVIDERSTRING
- Nuevo:
Server=[server];Database=[database];Authentication=ActiveDirectoryIntegrated;Encrypt=Mandatory
- En desuso:
Server=[server];Database=[database];Trusted_Connection=yes;Encrypt=Mandatory
- Nuevo:
Nombre de usuario y contraseña de Microsoft Entra
- Con
IDataInitialize::GetDataSource
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Authentication=ActiveDirectoryPassword;User ID=[username];Password=[password];Use Encryption for Data=Mandatory
- Con
DBPROP_INIT_PROVIDERSTRING
Server=[server];Database=[database];Authentication=ActiveDirectoryPassword;UID=[username];PWD=[password];Encrypt=Mandatory
Autenticación integrada de Microsoft Entra
- Con
IDataInitialize::GetDataSource
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Authentication=ActiveDirectoryIntegrated;Use Encryption for Data=Mandatory
- Con
DBPROP_INIT_PROVIDERSTRING
Server=[server];Database=[database];Authentication=ActiveDirectoryIntegrated;Encrypt=Mandatory
Autenticación de Microsoft Entra mediante un token de acceso
- Con
IDataInitialize::GetDataSource
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Access Token=[access token] ;Use Encryption for Data=Mandatory
- Con
DBPROP_INIT_PROVIDERSTRING
no se admite el suministro del token de acceso a través de
DBPROP_INIT_PROVIDERSTRING
Autenticación interactiva de Microsoft Entra
- Con
IDataInitialize::GetDataSource
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Authentication=ActiveDirectoryInteractive;User ID=[username];Use Encryption for Data=Mandatory
- Con
DBPROP_INIT_PROVIDERSTRING
Server=[server];Database=[database];Authentication=ActiveDirectoryInteractive;UID=[username];Encrypt=Mandatory
Autenticación de identidad administrada de Microsoft Entra
- Con
IDataInitialize::GetDataSource
- Identidad administrada asignada por el usuario:
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Authentication=ActiveDirectoryMSI;User ID=[Object ID];Use Encryption for Data=Mandatory
- Identidad administrada asignada por el sistema:
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Authentication=ActiveDirectoryMSI;Use Encryption for Data=Mandatory
- Identidad administrada asignada por el usuario:
- Con
DBPROP_INIT_PROVIDERSTRING
- Identidad administrada asignada por el usuario:
Server=[server];Database=[database];Authentication=ActiveDirectoryMSI;UID=[Object ID];Encrypt=Mandatory
- Identidad administrada asignada por el sistema:
Server=[server];Database=[database];Authentication=ActiveDirectoryMSI;Encrypt=Mandatory
- Identidad administrada asignada por el usuario:
Autenticación de entidad de servicio de Microsoft Entra
- Con
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
- Con
DBPROP_INIT_PROVIDERSTRING
Server=[server];Database=[database];Authentication=ActiveDirectoryServicePrincipal;UID=[Application (client) ID];PWD=[Application (client) secret];Encrypt=Mandatory
Ejemplos de código
En los siguientes ejemplos se muestra el código necesario para conectarse a Microsoft Entra ID con palabras clave de conexión.
Token de acceso
#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();
}
Integrado en 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();
}
Contenido relacionado
Obtén información sobre la autenticación de Microsoft Entra en SQL Server.
Configuración de las conexiones de controlador mediante palabras clave de cadena de conexión que el controlador OLE DB admite.