Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server
Database SQL di Azure
Istanza gestita di SQL di Azure
Azure Synapse Analytics
Piattaforma di analisi (PDW)
Endpoint di analisi SQL in Microsoft Fabric
Magazzino in Microsoft Fabric
Database SQL in Microsoft Fabric
Scopo
A partire dalla versione 18.2.1, Microsoft OLE DB Driver per SQL Server consente alle applicazioni OLE DB di connettersi al database SQL di Azure, a un'istanza gestita di SQL di Azure, a Azure Synapse Analytics e a Microsoft Fabric usando un'identità federata.
I metodi di autenticazione Microsoft Entra includono:
- Nome utente e password
- Token di accesso
- Autenticazione integrata
La versione 18.3.0 aggiunge il supporto dei seguenti metodi di autenticazione per Microsoft Entra:
Autenticazione interattiva
Autenticazione dell'identità gestita (solo dall'interno di una macchina virtuale di Azure configurata con identità gestita)
La versione 18.5.0 aggiunge il supporto dei metodi di autenticazione seguenti:
- Autenticazione del principale servizio di Microsoft Entra
Nota
L'uso delle modalità di autenticazione seguenti con DataTypeCompatibility (o la proprietà corrispondente) impostata su 80non è supportato:
- Autenticazione Microsoft Entra con nome utente e password
- Autenticazione con token di accesso di Microsoft Entra
- Autenticazione integrata di Microsoft Entra
- Autenticazione interattiva di Microsoft Entra
- Autenticazione delle identità gestite in Microsoft Entra
- Autenticazione del principale servizio di Microsoft Entra
Per usare l'autenticazione di Microsoft Entra, è necessario configurare l'origine dati Azure SQL. Per altre informazioni, vedere Configurare e gestire l'autenticazione di Microsoft Entra con Azure SQL.
Parole chiave e proprietà delle stringhe di connessione
Per supportare l'autenticazione di Microsoft Entra, sono state introdotte le seguenti parole chiave della stringa di connessione.
| Parola chiave della stringa di connessione | Proprietà di connessione | Descrizione |
|---|---|---|
| Token di accesso | SSPROP_AUTH_ACCESS_TOKEN |
Specifica un token di accesso per l'autenticazione in Microsoft Entra ID. |
| Autenticazione | SSPROP_AUTH_MODE |
Specifica il metodo di autenticazione da usare. |
Per altre informazioni sulle nuove parole chiave/proprietà, vedere le pagine seguenti:
- Utilizzo delle parole chiave delle stringhe di connessione con driver OLE DB per SQL Server
- Proprietà di inizializzazione e di autorizzazione
Crittografia e convalida di certificati
Per altre informazioni, vedere Crittografia e convalida di certificati.
Aggiunte all'interfaccia utente grafica
L'interfaccia utente grafica del driver è stata migliorata per consentire l'autenticazione di Microsoft Entra. Per altre informazioni, vedi:
Esempi di stringhe di connessione
In questa sezione vengono illustrati esempi di parole chiave della stringa di connessione nuove ed esistenti da usare con la proprietà IDataInitialize::GetDataSource e DBPROP_INIT_PROVIDERSTRING.
Autenticazione SQL
- Utilizzando
IDataInitialize::GetDataSource:- Nuovo:
Provider=MSOLEDBSQL19; Origine dati=[server]; Initial Catalog=[database]; Authentication=SqlPassword; ID utente=[nomeutente]; Password=[password]; Usare la crittografia per Data=Obbligatorio
- Deprecato:
Provider=MSOLEDBSQL19; Origine dati=[server]; Initial Catalog=[database]; ID utente=[nomeutente]; Password=[password]; Usare la crittografia per Data=Obbligatorio
- Nuovo:
- Utilizzando
DBPROP_INIT_PROVIDERSTRING:- Nuovo:
Server=[server];Database=[database];Authentication=SqlPassword;UID=[username];PWD=[password];Encrypt=Mandatory
- Deprecato:
Server=[server];Database=[database];UID=[username];PWD=[password];Encrypt=Obbligatorio
- Nuovo:
Autenticazione integrata di Windows tramite Security Support Provider Interface (SSPI)
- Utilizzando
IDataInitialize::GetDataSource:- Nuovo:
Provider=MSOLEDBSQL19; Origine dati=[server]; Initial Catalog=[database]; Authentication=ActiveDirectoryIntegrated; Uso della crittografia dei dati=Obbligatorio
- Deprecato:
Provider=MSOLEDBSQL19; Origine dati=[server]; Initial Catalog=[database]; Integrated Security=SSPI; Usare la crittografia per i dati=Obbligatorio
- Nuovo:
- Utilizzando
DBPROP_INIT_PROVIDERSTRING:- Nuovo:
Server=[server];Database=[database];Authentication=ActiveDirectoryIntegrated;Encrypt=Mandatory
- Deprecato:
Server=[server];Database=[database];Trusted_Connection=yes;Encrypt=Mandatory
- Nuovo:
Autenticazione con nome utente e password di Microsoft Entra
Importante
L'opzione di autenticazione ActiveDirectoryPassword (autenticazione Microsoft Entra ID password) è deprecata nei driver SQL Microsoft. Questo flusso di autenticazione ad alto rischio non è compatibile con l'autenticazione a Microsoft Entra più fattori (MFA) obbligatoria e potrebbe non funzionare nei tenant in cui viene applicata l'autenticazione a più fattori. Pianificare la migrazione a un metodo di autenticazione Microsoft Entra diverso.
L'autenticazione tramite password di Microsoft Entra ID si basa sul flusso di concessione Resource Owner Password Credentials (ROPC) di OAuth 2.0, che consente a un'applicazione di eseguire l'accesso dell'utente gestendone direttamente la password.
Microsoft consiglia di non usare il flusso ROPC perché non è compatibile con MFA. Nella maggior parte degli scenari sono disponibili alternative più sicure e consigliate. Questo flusso richiede un elevato livello di attendibilità nell'applicazione e comporta rischi che non sono presenti in altri flussi. Usare questo flusso solo quando non sono validi flussi più sicuri. Microsoft si sta allontanando da questo flusso di autenticazione ad alto rischio per proteggere gli utenti da attacchi dannosi. Per altre informazioni, vedere Pianificazione dell'autenticazione a più fattori obbligatoria per Azure.
Quando un utente è presente durante l'accesso, usare l'autenticazione ActiveDirectoryInteractive o ActiveDirectoryIntegrated in modo che la traccia di controllo venga attribuita all'utente che ha effettuato l'accesso e si applichino i criteri di Accesso Condizionale.
Per gli scenari non presidiati servizio-servizio, seguire le linee guida sugli account di servizio Microsoft Entra:
- Se l'applicazione viene eseguita nell'infrastruttura Azure, usare ActiveDirectoryMSI (o ActiveDirectoryManagedIdentity in alcuni driver). Le identità gestite eliminano il sovraccarico di gestione e rotazione di segreti e certificati.
- Se l'identità gestita non è disponibile( ad esempio, l'applicazione viene eseguita all'esterno di Azure), usare ActiveDirectoryServicePrincipal. Se il driver lo supporta, preferire un certificato client anziché un segreto del client. Con un certificato, la chiave privata rimane sul client e solo un'asserzione firmata viene inviata a Microsoft Entra per autenticare il client. Se la chiave viene archiviata nell'hardware (ad esempio un TPM o un modulo di protezione hardware) o contrassegnata come non esportabile, non può essere copiata come stringa nel modo in cui un segreto client può.
- Non usare un account utente Microsoft Entra come account del servizio.
- Utilizzando
IDataInitialize::GetDataSource:Provider=MSOLEDBSQL19; Origine dati=[server]; Initial Catalog=[database]; Authentication=ActiveDirectoryPassword; ID utente=[nomeutente]; Password=[password]; Usare la crittografia per Data=Obbligatorio
- Utilizzando
DBPROP_INIT_PROVIDERSTRING:Server=[server];Database=[database];Authentication=ActiveDirectoryPassword;UID=[username];PWD=[password];Encrypt=Mandatory
Autenticazione integrata di Microsoft Entra
- Utilizzando
IDataInitialize::GetDataSource:Provider=MSOLEDBSQL19; Origine dati=[server]; Initial Catalog=[database]; Authentication=ActiveDirectoryIntegrated; Uso della crittografia dei dati=Obbligatorio
- Utilizzando
DBPROP_INIT_PROVIDERSTRING:Server=[server];Database=[database];Authentication=ActiveDirectoryIntegrated;Encrypt=Mandatory
Autenticazione con token di accesso di Microsoft Entra
- Utilizzando
IDataInitialize::GetDataSource:Provider=MSOLEDBSQL19; Origine dati=[server]; Initial Catalog=[database]; Token di accesso=[token di accesso]; Usare la crittografia per Data=Obbligatorio
- Utilizzando
DBPROP_INIT_PROVIDERSTRING:L'invio del token di accesso tramite
DBPROP_INIT_PROVIDERSTRINGnon è supportato
Autenticazione interattiva di Microsoft Entra
- Utilizzando
IDataInitialize::GetDataSource:Provider=MSOLEDBSQL19; Origine dati=[server]; Initial Catalog=[database]; Authentication=ActiveDirectoryInteractive; ID utente=[nomeutente]; Usare la crittografia per Data=Obbligatorio
- Utilizzando
DBPROP_INIT_PROVIDERSTRING:Server=[server];Database=[database];Authentication=ActiveDirectoryInteractive;UID=[username];Encrypt=Mandatory
Autenticazione tramite identità gestita con Microsoft Entra
- Utilizzando
IDataInitialize::GetDataSource:- Identità gestita assegnata dall'utente:
Provider=MSOLEDBSQL19; Origine dati=[server]; Initial Catalog=[database]; Authentication=ActiveDirectoryMSI; ID utente=[ID oggetto]; Usare la crittografia per Data=Obbligatorio
- Identità gestita assegnata dal sistema:
Provider=MSOLEDBSQL19; Origine dati=[server]; Initial Catalog=[database]; Authentication=ActiveDirectoryMSI; Uso della crittografia per i dati=Obbligatorio
- Identità gestita assegnata dall'utente:
- Utilizzando
DBPROP_INIT_PROVIDERSTRING:- Identità gestita assegnata dall'utente:
Server=[server]; Database=[database]; Authentication=ActiveDirectoryMSI; UID=[ID oggetto]; Encrypt=Obbligatorio
- Identità gestita assegnata dal sistema:
Server=[server];Database=[database];Authentication=ActiveDirectoryMSI;Encrypt=Mandatory
- Identità gestita assegnata dall'utente:
Autenticazione del principale servizio di Microsoft Entra
- Utilizzando
IDataInitialize::GetDataSource:Provider=MSOLEDBSQL19; Origine dati=[server]; Initial Catalog=[database]; Authentication=ActiveDirectoryServicePrincipal; ID utente=[ID applicazione (client)]; Password=[Segreto applicazione (client)]; Usare la crittografia per Data=Obbligatorio
- Utilizzando
DBPROP_INIT_PROVIDERSTRING:Server=[server]; Database=[database]; Authentication=ActiveDirectoryServicePrincipal; UID=[ID applicazione (client)]; PWD=[Segreto applicazione (client)]; Encrypt=Obbligatorio
Esempi di codice
L'esempio seguente mostra il codice necessario per connettersi a Microsoft Entra ID con le parole chiave di connessione.
Token di accesso
#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();
}
Integrato in 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();
}
Contenuto correlato
Informazioni sull'autenticazione di Microsoft Entra in SQL Server.
Configurare le connessioni driver usando le parole chiave della stringa di connessione supportate dal driver OLE DB.