Usar a ID do Microsoft Entra
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics PDW (Analytics Platform System) Ponto de extremidade de análise do SQL Warehouse no Microsoft Fabric
Finalidade
Na versão 18.2.1, o Driver do Microsoft OLE DB para SQL Server permite que aplicativos OLE DB se conectem ao Banco de Dados SQL do Azure, Instância Gerenciada de SQL do Azure, Azure Synapse Analytics e Microsoft Fabric usando uma identidade federada.
Os métodos de autenticação do Microsoft Entra incluem:
- Nome de usuário e senha
- Token de acesso
- Autenticação integrada
A versão 18.3.0 adiciona suporte para os seguintes métodos de autenticação do Microsoft Entra:
Autenticação interativa
A autenticação da Identidade Gerenciada (somente de dentro de uma Máquina Virtual do Azure configurada para a Identidade Gerenciada)
A versão 18.5.0 adiciona suporte para os seguintes métodos de autenticação:
- Autenticação de entidade de serviço do Microsoft Entra
Observação
O uso dos seguintes modos de autenticação não é compatível com o uso de DataTypeCompatibility
(ou sua propriedade correspondente) definida como 80
:
- Autenticação do Microsoft Entra usando nome de usuário e senha
- Autenticação do Microsoft Entra usando token de acesso
- Autenticação integrada do Microsoft Entra
- Autenticação interativa do Microsoft Entra
- Autenticação de identidades gerenciadas pelo Microsoft Entra
- Autenticação de entidade de serviço do Microsoft Entra
Para usar a autenticação do Microsoft Entra, você precisa configurar sua fonte de dados do SQL do Azure. Para obter mais informações, consulte Configurar e gerenciar a autenticação do Microsoft Entra com o SQL do Azure.
Palavras-chave e propriedades da cadeia de conexão
As seguintes palavras-chave da cadeia de conexão foram introduzidas para dar suporte à autenticação do Microsoft Entra:
Palavras-chave da cadeia de conexão | Propriedade Connection | Descrição |
---|---|---|
Token de acesso | SSPROP_AUTH_ACCESS_TOKEN |
Especifica um token de acesso para autenticar no Microsoft Entra ID. |
Autenticação | SSPROP_AUTH_MODE |
Especifica método de autenticação a ser usado. |
Para obter mais informações sobre as novas palavras-chave/propriedades, confira as seguintes páginas:
- Uso de palavras-chave de cadeia de conexão com o Driver do OLE DB para SQL Server
- Propriedades de inicialização e autorização
Criptografia e validação de certificado
Para obter mais informações, confira Criptografia e validação de certificado.
Adições de GUI
A interface gráfica do usuário do driver foi aprimorada para permitir a autenticação do Microsoft Entra. Para saber mais, veja:
Cadeias de conexão de exemplo
Esta seção mostra exemplos de palavras-chave de cadeia de conexão novas e existentes que serão usadas com IDataInitialize::GetDataSource
e a propriedade DBPROP_INIT_PROVIDERSTRING
.
Autenticação SQL
- Usando:
IDataInitialize::GetDataSource
- Novo:
Provedor=MSOLEDBSQL19;Fonte de dados=[server];Catálogo inicial=[database];Autenticaação=SqlPassword;ID do usuário=[username];Senha=[password];Usar criptografia para dados=obrigatório
- Preterido:
Provedor=MSOLEDBSQL19;Fonte de dados=[server];Catálogo inicial=[database];ID do usuário=[username];Senha=[password];Usar criptografia para dados=obrigatório
- Novo:
- Usando:
DBPROP_INIT_PROVIDERSTRING
- Novo:
Servidor=[server];Banco de dados=[database];Autenticação=SqlPassword;UID=[username];Senha=[password];Criptografia=obrigatório
- Preterido:
Servidor=[server];Banco de dados=[database];UID=[username];Senha=[password];Criptografia=obrigatório
- Novo:
Autenticação Integrada do Windows usando a interface SSPI
- Usando:
IDataInitialize::GetDataSource
- Novo:
Provedor=MSOLEDBSQL19;Fonte de dados=[server];Catálogo inicial=[database];Autenticação=ActiveDirectoryIntegrated;Usar criptografia para dados=obrigatório
- Preterido:
Provedor=MSOLEDBSQL19;Fonte de dados=[server];Catálogo inicial=[database];Segurança integrada=SSPI;Usar criptografia para dados=obrigatório
- Novo:
- Usando:
DBPROP_INIT_PROVIDERSTRING
- Novo:
Servidor=[server];Banco de dados=[database];Autenticação=ActiveDirectoryIntegrated;Criptografia=obrigatório
- Preterido:
Servidor=[server];Banco de dados=[database];Conexão_Confiável=sim;Criptografia=obrigatório
- Novo:
Autenticação por nome de usuário e senha do Microsoft Entra
- Usando:
IDataInitialize::GetDataSource
Provedor=MSOLEDBSQL19;Fonte de dados=[server];Catálogo inicial=[database];Autenticação=ActiveDirectoryPassword;ID do usuário=[username];Senha=[password];Usar criptografia para dados=obrigatório
- Usando:
DBPROP_INIT_PROVIDERSTRING
Servidor=[server];Banco de dados=[database];Autenticação=ActiveDirectoryPassword;UID=[username];Senha=[password];Criptografia=obrigatório
Autenticação integrada do Microsoft Entra
- Usando:
IDataInitialize::GetDataSource
Provedor=MSOLEDBSQL19;Fonte de dados=[server];Catálogo inicial=[database];Autenticação=ActiveDirectoryIntegrated;Usar criptografia para dados=obrigatório
- Usando:
DBPROP_INIT_PROVIDERSTRING
Servidor=[server];Banco de dados=[database];Autenticação=ActiveDirectoryIntegrated;Criptografia=obrigatório
Autenticação do Microsoft Entra usando um token de acesso
- Usando:
IDataInitialize::GetDataSource
Provedor=MSOLEDBSQL19;Fonte de dados=[server];Catálogo inicial=[database];Token de acesso=[access token] ;Usar criptografia para dados=obrigatório
- Usando:
DBPROP_INIT_PROVIDERSTRING
O fornecimento de um token de acesso por meio de
DBPROP_INIT_PROVIDERSTRING
não é um procedimento compatível
Autenticação interativa do Microsoft Entra
- Usando:
IDataInitialize::GetDataSource
Provedor=MSOLEDBSQL19;Fonte de dados=[server];Catálogo inicial=[database];Autenticaçaõ=ActiveDirectoryInteractive;ID do usuário=[username];Usar criptografia para dados=obrigatório
- Usando:
DBPROP_INIT_PROVIDERSTRING
Servidor=[servidor];Banco de dados=[banco de dados];Autenticação=ActiveDirectoryInteractive;UID=[nome de usuário];Criptografia=sim
Autenticação de identidade gerenciada pelo Microsoft Entra
- Usando:
IDataInitialize::GetDataSource
- Identidade gerenciada atribuída pelo usuário:
Provedor=MSOLEDBSQL19;Fonte de dados=[server];Catálogo inicial=[database];Autenticação=ActiveDirectoryMSI;ID do usuário=[Object ID];Usar criptografia de dados=obrigatório
- Identidade gerenciada atribuída pelo sistema:
Provedor=MSOLEDBSQL19;Fonte de dados=[server];Catálogo inicial=[database];Autenticação=ActiveDirectoryMSI;Usar criptografia de dados=obrigatório
- Identidade gerenciada atribuída pelo usuário:
- Usando:
DBPROP_INIT_PROVIDERSTRING
- Identidade gerenciada atribuída pelo usuário:
Servidor=[servidor];Banco de dados=[banco de dados];Autenticação=ActiveDirectoryMSI;UID=[ID do Objeto];Criptografia=obrigatório
- Identidade gerenciada atribuída pelo sistema:
Servidor=[server];Banco de dados=[database];Autenticação=ActiveDirectoryMSI;Criptografia=obrigatório
- Identidade gerenciada atribuída pelo usuário:
Autenticação de entidade de serviço do Microsoft Entra
- Usando:
IDataInitialize::GetDataSource
Provedor=MSOLEDBSQL19;Fonte de dados=[server];Catálogo inicial=[database];Autenticação=ActiveDirectoryServicePrincipal;ID do usuário=[Application (client) ID];Senha=[Application (client) secret];Usar criptografia de dados=obrigatório
- Usando:
DBPROP_INIT_PROVIDERSTRING
Servidor=[server];Banco de dados=[database];Autenticação=ActiveDirectoryServicePrincipal;UID=[Application (client) ID];Senha=[Application (client) secret];Criptografia=obrigatório
Exemplos de código
Os exemplos a seguir mostram o código necessário para se conectar ao Microsoft Entra ID com palavras-chave de conexão.
Token de acesso
#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 ao 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();
}
Conteúdo relacionado
Saiba mais sobre suporte a autenticação do Microsoft Entra para SQL Server
Configure conexões de driver usando palavras-chave da cadeia de conexão compatíveis com o driver OLE DB.