Using Microsoft Entra ID
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)
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 ou à Instância Gerenciada de SQL do Azure usando uma identidade federada. Os novos 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();
}
Próximas etapas
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.
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários