Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Base de Dados SQL do Azure
Instância Gerida do Azure SQL
Azure Synapse Analytics
Sistema de Plataforma de Análise (PDW)
Ponto de Extremidade de Análise SQL no Microsoft Fabric
Armazém no Microsoft Fabric
Base de Dados SQL no Microsoft Fabric
Propósito
A partir da versão 18.2.1, o Microsoft OLE DB Driver for SQL Server permite que aplicações OLE DB se liguem ao Base de Dados SQL do Azure, Azure SQL Managed Instance, Azure Synapse Analytics e Microsoft Fabric usando uma identidade federada .
Os métodos de autenticação Microsoft Entra incluem:
- Nome de utilizador e palavra-passe
- Token de acesso
- Autenticação integrada
A versão 18.3.0 adiciona suporte para os seguintes métodos de autenticação Microsoft Entra:
Autenticação interativa
Autenticação de identidade gerida (apenas a partir de uma Máquina Virtual Azure configurada com Identidade Gerida)
A versão 18.5.0 adiciona suporte para o seguinte método de autenticação:
- Autenticação do principal de serviço Microsoft Entra
Observação
Utilizar os seguintes modos de autenticação com DataTypeCompatibility (ou a sua propriedade correspondente) definido como 80não é suportado:
- Autenticação Microsoft Entra usando nome de utilizador e palavra-passe
- Autenticação do Microsoft Entra com token de acesso
- Autenticação integrada do Microsoft Entra
- Autenticação interativa Microsoft Entra
- Autenticação de identidades geridas por Microsoft Entra
- Autenticação do principal de serviço Microsoft Entra
Para utilizar a autenticação Microsoft Entra, deve configurar a sua fonte de dados SQL do Azure. Para obter mais informações, consulte Configurar e gerir a autenticação do Microsoft Entra com o SQL do Azure.
Palavras-chave e propriedades da cadeia de ligação
As seguintes palavras-chave de cadeia de ligação foram introduzidas para suportar a autenticação Microsoft Entra:
| Palavra-chave de cadeia de ligação | Propriedade de Conexão | Description |
|---|---|---|
| Token de Acesso | SSPROP_AUTH_ACCESS_TOKEN |
Especifica um token de acesso para autenticação ao Microsoft Entra ID. |
| Authentication | SSPROP_AUTH_MODE |
Especifica o método de autenticação a utilizar. |
Para mais informações sobre as novas palavras-chave/propriedades, consulte as seguintes páginas:
- Usando chaves de conexão com o driver OLE DB para SQL Server
- Propriedades de inicialização e autorização
Criptografia e validação de certificado
Consulte Encriptação e validação de certificados para mais informações.
Adições à interface gráfica
A interface gráfica do driver foi melhorada para permitir a autenticação Microsoft Entra. Para obter mais informações, consulte:
Exemplo de cadeias de conexão
Esta secção mostra exemplos de palavras-chave de cadeias de conexão existentes e novas a serem usadas com as propriedades IDataInitialize::GetDataSource e DBPROP_INIT_PROVIDERSTRING.
Autenticação SQL
- Usando
IDataInitialize::GetDataSource:- Novo:
Provider=MSOLEDBSQL19; Data Source=[servidor]; Catálogo Inicial=[base de dados]; Autenticação=SQLPassword; ID de utilizador=[nome de utilizador]; Palavra-passe=[palavra-passe]; Usar Encriptação para Dados=Obrigatório
- Descontinuado:
Provider=MSOLEDBSQL19; Data Source=[servidor]; Catálogo Inicial=[base de dados]; ID de utilizador=[nome de utilizador]; Palavra-passe=[palavra-passe]; Usar Encriptação para Dados=Obrigatório
- Novo:
- Usando
DBPROP_INIT_PROVIDERSTRING:- Novo:
Servidor=[servidor]; Base de dados=[base de dados]; Autenticação=SQLPassword; UID=[nome de utilizador]; PWD=[palavra-passe]; Encriptação=Obrigatório
- Descontinuado:
Servidor=[servidor]; Base de dados=[base de dados]; UID=[nome de utilizador]; PWD=[palavra-passe]; Encriptação=Obrigatório
- Novo:
Autenticação integrada do Windows usando a Interface do Provedor de Suporte de Segurança (SSPI)
- Usando
IDataInitialize::GetDataSource:- Novo:
Provider=MSOLEDBSQL19; Data Source=[servidor]; Catálogo Inicial=[base de dados]; Autenticação=ActiveDirectoryIntegrated; Usar Encriptação para Dados=Obrigatório
- Descontinuado:
Provider=MSOLEDBSQL19; Data Source=[servidor]; Catálogo Inicial=[base de dados]; Segurança Integrada=SSPI; Usar Encriptação para Dados=Obrigatório
- Novo:
- Usando
DBPROP_INIT_PROVIDERSTRING:- Novo:
Servidor=[servidor]; Base de dados=[base de dados]; Autenticação=ActiveDirectoryIntegrated; Encriptação=Obrigatório
- Descontinuado:
Servidor=[servidor]; Base de dados=[base de dados]; Trusted_Connection=sim; Encriptação=Obrigatório
- Novo:
Autenticação por nome de utilizador e palavra-passe Microsoft Entra
Importante
A opção de autenticação ActiveDirectoryPassword (autenticação por palavra-passe do Microsoft Entra ID) está obsoleta nos drivers SQL da Microsoft. Este fluxo de autenticação de alto risco é incompatível com a autenticação multifator (MFA) obrigatória da Microsoft Entra e pode não funcionar em inquilinos onde a MFA é aplicada. Planeio migrar para um método de autenticação Microsoft Entra diferente.
A autenticação por palavra-passe do Microsoft Entra ID baseia-se na concessão OAuth 2.0 Resource Owner Password Credentials (ROPC), que permite a uma aplicação iniciar a sessão do utilizador processando diretamente a respetiva palavra-passe.
A Microsoft recomenda que não uses o fluxo ROPC porque é incompatível com o MFA. Na maioria dos cenários, alternativas mais seguras estão disponíveis e são recomendadas. Este fluxo exige um elevado grau de confiança na aplicação e acarreta riscos que não existem noutros fluxos. Use este fluxo apenas quando fluxos mais seguros não forem viáveis. A Microsoft está a afastar-se deste fluxo de autenticação de alto risco para proteger os utilizadores de ataques maliciosos. Para mais informações, consulte Planeamento para autenticação multifator obrigatória para Azure.
Quando um utilizador estiver presente no início de sessão, utilize a autenticação ActiveDirectoryInteractive ou ActiveDirectoryIntegrated para que o registo de auditoria seja atribuído ao utilizador com sessão iniciada e as políticas de Acesso Condicional se apliquem.
Para cenários de serviço para serviço não supervisionados, siga as orientações sobre contas de serviço do Microsoft Entra:
- Se a sua aplicação correr na infraestrutura Azure, use o ActiveDirectoryMSI (ou o ActiveDirectoryManagedIdentity em alguns drivers). As identidades geridas eliminam a sobrecarga de manter e rotacionar segredos e certificados.
- Se a identidade gerida não estiver disponível (por exemplo, se a aplicação estiver a ser executada fora do Azure), use o ActiveDirectoryServicePrincipal. Quando o driver o permite, prefira um certificado de cliente em vez de um segredo de cliente. Com um certificado, a chave privada permanece no cliente e apenas uma asserção assinada é enviada à Microsoft Entra para autenticar o cliente. Se a chave estiver armazenada em hardware (como um TPM ou HSM) ou marcada como não exportável, não pode ser extraída sob a forma de uma cadeia de caracteres, da mesma forma que um segredo do cliente pode.
- Não use uma conta de utilizador Microsoft Entra como conta de serviço.
- Usando
IDataInitialize::GetDataSource:Provider=MSOLEDBSQL19; Data Source=[servidor]; Catálogo Inicial=[base de dados]; Autenticação=ActiveDirectoryPassword; ID de utilizador=[nome de utilizador]; Palavra-passe=[palavra-passe]; Usar Encriptação para Dados=Obrigatória
- Usando
DBPROP_INIT_PROVIDERSTRING:Servidor=[servidor]; Base de dados=[base de dados]; Autenticação=ActiveDirectoryPassword; UID=[nome de utilizador]; PWD=[palavra-passe]; Encrypt=Mandatory
Autenticação integrada do Microsoft Entra
- Usando
IDataInitialize::GetDataSource:Provider=MSOLEDBSQL19; Data Source=[servidor]; Catálogo Inicial=[base de dados]; Autenticação=ActiveDirectoryIntegrated; Usar Encriptação para Dados=Obrigatório
- Usando
DBPROP_INIT_PROVIDERSTRING:Servidor=[servidor]; Base de dados=[base de dados]; Autenticação=ActiveDirectoryIntegrated; Encriptação=Obrigatório
Autenticação Microsoft Entra usando um token de acesso
- Usando
IDataInitialize::GetDataSource:Provider=MSOLEDBSQL19; Data Source=[servidor]; Catálogo Inicial=[base de dados]; Access Token=[access token]; Usar Encriptação para Dados=Obrigatório
- Usando
DBPROP_INIT_PROVIDERSTRING:Fornecer token de acesso através de
DBPROP_INIT_PROVIDERSTRINGnão é suportado
Autenticação interativa Microsoft Entra
- Usando
IDataInitialize::GetDataSource:Provider=MSOLEDBSQL19; Data Source=[servidor]; Catálogo Inicial=[base de dados]; Autenticação=ActiveDirectoryInteractive; ID de utilizador=[nome de utilizador]; Usar Encriptação para Dados=Obrigatório
- Usando
DBPROP_INIT_PROVIDERSTRING:Servidor=[servidor]; Base de dados=[base de dados]; Autenticação=ActiveDirectoryInteractive; UID=[nome de utilizador]; Encriptação=Obrigatório
Autenticação de identidade gerida pelo Microsoft Entra
- Usando
IDataInitialize::GetDataSource:- Identidade gerida atribuída pelo utilizador:
Provider=MSOLEDBSQL19; Data Source=[servidor]; Catálogo Inicial=[base de dados]; Autenticação=ActiveDirectoryMSI; ID do utilizador=[ID do objeto]; Usar Encriptação para Dados=Obrigatório
- Identidade gerida atribuída ao sistema:
Provider=MSOLEDBSQL19; Data Source=[servidor]; Catálogo Inicial=[base de dados]; Autenticação=ActiveDirectoryMSI; Usar Encriptação para Dados=Obrigatório
- Identidade gerida atribuída pelo utilizador:
- Usando
DBPROP_INIT_PROVIDERSTRING:- Identidade gerida atribuída pelo utilizador:
Servidor=[servidor]; Base de dados=[base de dados]; Autenticação=ActiveDirectoryMSI; UID=[ID do objeto]; Encriptação=Obrigatório
- Identidade gerida atribuída ao sistema:
Servidor=[servidor]; Base de dados=[base de dados]; Autenticação=ActiveDirectoryMSI; Encriptação=Obrigatório
- Identidade gerida atribuída pelo utilizador:
Autenticação do principal de serviço Microsoft Entra
- Usando
IDataInitialize::GetDataSource:Provider=MSOLEDBSQL19; Data Source=[servidor]; Catálogo Inicial=[base de dados]; Autenticação=ActiveDirectoryServicePrincipal; ID do utilizador=[ID da aplicação (cliente)]; Password=[Application (cliente) secreto]; Usar Encriptação para Dados=Obrigatório
- Usando
DBPROP_INIT_PROVIDERSTRING:Servidor=[servidor]; Base de dados=[base de dados]; Autenticação=ActiveDirectoryServicePrincipal; UID=[ID da aplicação (cliente]; PWD=[Secreto da aplicação (cliente)]; Encriptação=Obrigatório
Exemplos de código
Os exemplos seguintes mostram o código necessário para se ligar ao Microsoft Entra ID com palavras-chave de ligaçã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();
}
Active Directory Integrado
#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 a autenticação Microsoft Entra para SQL Server.
Configure as ligações do driver usando as palavras-chave strings de conexão que o driver OLE DB suporta.