Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
Azure SQL-Datenbank
Verwaltete Azure SQL-Instanz
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL-Analyseendpunkt in Microsoft Fabric
Lagerhaus in Microsoft Fabric
SQL-Datenbank in Microsoft Fabric
Zweck
Ab Version 18.2.1 ermöglicht der Microsoft OLE DB-Treiber für SQL Server, dass OLE DB-Anwendungen über einen Identitätsverbund eine Verbindung mit einer Azure SQL-Datenbank, Azure SQL Managed Instance, Azure Synapse Analytics und Microsoft Fabric herstellen.
Microsoft Entra Authentifizierungsmethoden beinhalten:
- Benutzername und Kennwort
- Zugriffstoken
- Integrierte Authentifizierung
Mit Version 18.3.0 kommt Unterstützung für die folgenden Microsoft Entra-Authentifizierungsmethoden hinzu:
Interaktive Authentifizierung
Authentifizierung mittels verwalteter Identitäten (nur von einer Azure Virtual Machine, die mit verwalteter Identität konfiguriert ist)
Mit Version 18.5.0 wird Unterstützung für die folgenden Authentifizierungsmethoden hinzugefügt:
- Microsoft Entra-Dienstprinzipal-Authentifizierung
Hinweis
Die Verwendung der folgenden Authentifizierungsmodi, wenn DataTypeCompatibility (oder eine entsprechende Eigenschaft) auf 80 festgelegt ist, wird nicht unterstützt:
- Microsoft Entra-Authentifizierung mit Benutzername und Kennwort
- Microsoft Entra-Authentifizierung mit Zugriffstoken
- Integrierte Microsoft Entra-Authentifizierung
- Interaktive Microsoft Entra-Authentifizierung
- Microsoft Entra-Authentifizierung mit verwalteten Identitäten
- Microsoft Entra-Dienstprinzipal-Authentifizierung
Um die Microsoft Entra-Authentifizierung verwenden zu können, müssen Sie Ihre Azure SQL-Datenquelle konfigurieren. Weitere Informationen finden Sie unter Konfigurieren und Verwalten der Microsoft Entra-Authentifizierung mit Azure SQL.
Schlüsselwörter und Eigenschaften von Verbindungsstrings
Zur Unterstützung der Microsoft Entra-Authentifizierung wurden die folgenden Schlüsselwörter für Verbindungszeichenfolgen eingeführt:
| Verbindungsparameter-Schlüsselwort | Verbindungseigenschaft | BESCHREIBUNG |
|---|---|---|
| Zugriffstoken | SSPROP_AUTH_ACCESS_TOKEN |
Gibt ein Zugriffstoken für die Authentifizierung bei Microsoft Entra ID an. |
| Authentifizierung | SSPROP_AUTH_MODE |
Gibt die zu verwendende Authentifizierungsmethode an. |
Weitere Informationen zu den neuen Schlüsselwörtern/Eigenschaften finden Sie auf den folgenden Seiten:
- Verwenden von Verbindungszeichenfolgen-Schlüsselwörtern mit dem OLE DB-Treiber für SQL Server
- Initialisierungs- und Autorisierungseigenschaften
Verschlüsselung und Zertifikatüberprüfung
Weitere Informationen finden Sie unter Verschlüsselung und Zertifikatüberprüfung.
GUI-Ergänzungen
Die grafische Benutzeroberfläche des Treibers wurde erweitert, um die Microsoft Entra-Authentifizierung zu ermöglichen. Weitere Informationen finden Sie unter:
Exemplarische Verbindungszeichenfolgen
Dieser Abschnitt enthält Beispiele für neue und vorhandene Schlüsselwörter in Verbindungszeichenfolgen, die mit den Eigenschaften IDataInitialize::GetDataSource und DBPROP_INIT_PROVIDERSTRING verwendet werden können.
SQL-Authentifizierung
- Verwendung von
IDataInitialize::GetDataSource:- Neu:
Provider=MSOLEDBSQL19; Datenquelle=[Server]; Initial Catalog=[database]; Authentication=SqlPassword; Benutzer-ID=[Benutzername]; Password=[password]; Verschlüsselung für Data=Obligatorisch verwenden
- Veraltet:
Provider=MSOLEDBSQL19; Datenquelle=[Server]; Initial Catalog=[database]; Benutzer-ID=[Benutzername]; Password=[password]; Verschlüsselung für Data=Obligatorisch verwenden
- Neu:
- Verwendung von
DBPROP_INIT_PROVIDERSTRING:- Neu:
Server=[server];Database=[database];Authentication=SqlPassword;UID=[username];PWD=[password];Encrypt=Mandatory
- Veraltet:
Server=[server];Database=[database];UID=[username];PWD=[password];Encrypt=Erforderlich
- Neu:
Integrierte Windows-Authentifizierung unter Verwendung der Security Support Provider-Schnittstelle (SSPI)
- Verwendung von
IDataInitialize::GetDataSource:- Neu:
Provider=MSOLEDBSQL19; Datenquelle=[Server]; Initial Catalog=[database]; Authentication=ActiveDirectoryIntegrated; Verschlüsselung für Data=Obligatorisch verwenden
- Veraltet:
Provider=MSOLEDBSQL19; Datenquelle=[Server]; Initial Catalog=[database]; Integrierte Sicherheit=SSPI; Verschlüsselung für Data=Obligatorisch verwenden
- Neu:
- Verwendung von
DBPROP_INIT_PROVIDERSTRING:- Neu:
Server=[server];Database=[database];Authentication=ActiveDirectoryIntegrated;Encrypt=Mandatory
- Veraltet:
Server=[server];Database=[database];Trusted_Connection=yes;Verschlüsselung=Erforderlich
- Neu:
Microsoft Entra-Authentifizierung mit Benutzername und Kennwort
Important
Die ActiveDirectoryPassword-Authentifizierungsoption (Microsoft Entra ID Kennwortauthentifizierung) ist in den Microsoft SQL-Treibern veraltet. Dieser Hochrisiko-Authentifizierungsfluss ist mit der verpflichtenden Microsoft Entra-Mehrstufigen Authentifizierung (MFA) nicht kompatibel und funktioniert möglicherweise nicht in Mandanten, in denen MFA erzwungen wird. Planen Sie die Migration zu einer anderen Microsoft Entra Authentifizierungsmethode.
Microsoft Entra ID Kennwortauthentifizierung basiert auf der OAuth 2.0 Resource Owner Password Credentials (ROPC)-Erteilung, die es einer Anwendung ermöglicht, sich beim Benutzer direkt anzumelden, indem es sein Kennwort direkt verarbeitet.
Microsoft empfiehlt, den ROPC-Fluss nicht zu verwenden, da er nicht mit MFA kompatibel ist. In den meisten Szenarien sind sicherere Alternativen verfügbar und empfohlen. Dieser Fluss erfordert ein hohes Vertrauen in die Anwendung und trägt Risiken, die in anderen Flüssen nicht vorhanden sind. Verwenden Sie diesen Fluss nur, wenn sicherere Flüsse nicht lebensfähig sind. Microsoft entfernt sich von diesem Authentifizierungsfluss mit hohem Risiko, um Benutzer vor böswilligen Angriffen zu schützen. Weitere Informationen finden Sie unter Planung für die obligatorische mehrstufige Authentifizierung für Azure.
Wenn ein Benutzer bei der Anmeldung vorhanden ist, verwenden Sie die ActiveDirectoryInteractive- oder ActiveDirectoryIntegrated-Authentifizierung, sodass die Attribute des Überwachungspfads für den angemeldeten Benutzer und die Richtlinien für bedingten Zugriff gelten.
Befolgen Sie für unbeaufsichtigte Dienst-zu-Dienst-Szenarien die Microsoft Entra Richtlinien für das Dienstkonto:
- Wenn Ihre Anwendung in Azure Infrastruktur ausgeführt wird, verwenden Sie ActiveDirectoryMSI (oder ActiveDirectoryManagedIdentity in einigen Treibern). Verwaltete Identitäten beseitigen den Aufwand für die Verwaltung und Rotation von Geheimnissen und Zertifikaten.
- Wenn verwaltete Identität nicht verfügbar ist (z. B. wird die Anwendung außerhalb Azure ausgeführt), verwenden Sie ActiveDirectoryServicePrincipal. Wo der Treiber dies unterstützt, bevorzugen Sie ein Clientzertifikat über einen geheimen Clientschlüssel. Bei einem Zertifikat bleibt der private Schlüssel auf dem Client, und nur eine signierte Assertion wird an Microsoft Entra gesendet, um den Client zu authentifizieren. Wenn der Schlüssel in Hardware gespeichert ist (z. B. in einem TPM oder HSM) oder als nicht exportierbar gekennzeichnet ist, kann er nicht wie ein Clientgeheimnis als Zeichenfolge extrahiert werden.
- Verwenden Sie kein Microsoft Entra Benutzerkonto als Dienstkonto.
- Verwendung von
IDataInitialize::GetDataSource:Provider=MSOLEDBSQL19; Datenquelle=[Server]; Initial Catalog=[database]; Authentication=ActiveDirectoryPassword; Benutzer-ID=[Benutzername]; Password=[password]; Verschlüsselung für Data=Obligatorisch verwenden
- Verwendung von
DBPROP_INIT_PROVIDERSTRING:Server=[server];Database=[database];Authentication=ActiveDirectoryPassword;UID=[username];PWD=[password];Verschlüsseln=Verpflichtend
Integrierte Microsoft Entra-Authentifizierung
- Verwendung von
IDataInitialize::GetDataSource:Provider=MSOLEDBSQL19; Datenquelle=[Server]; Initial Catalog=[database]; Authentication=ActiveDirectoryIntegrated; Verschlüsselung für Data=Obligatorisch verwenden
- Verwendung von
DBPROP_INIT_PROVIDERSTRING:Server=[server];Database=[database];Authentication=ActiveDirectoryIntegrated;Encrypt=Mandatory
Microsoft Entra-Authentifizierung mit Zugriffstoken
- Verwendung von
IDataInitialize::GetDataSource:Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Access Token=[access token];Verbindungssicherheit erzwingen=Vorgeschrieben
- Verwendung von
DBPROP_INIT_PROVIDERSTRING:Die Bereitstellung von Zugriffstoken über
DBPROP_INIT_PROVIDERSTRINGwird nicht unterstützt.
Interaktive Microsoft Entra-Authentifizierung
- Verwendung von
IDataInitialize::GetDataSource:Provider=MSOLEDBSQL19; Datenquelle=[Server]; Initial Catalog=[database]; Authentication=ActiveDirectoryInteractive; Benutzer-ID=[Benutzername]; Verschlüsselung für Data=Obligatorisch verwenden
- Verwendung von
DBPROP_INIT_PROVIDERSTRING:Server=[server];Database=[database];Authentication=ActiveDirectoryInteractive;UID=[username];Encrypt=Mandatory
Microsoft Entra-Authentifizierung mit verwalteter Identität
- Verwendung von
IDataInitialize::GetDataSource:- Benutzerseitig zugewiesene verwaltete Identität:
Provider=MSOLEDBSQL19; Datenquelle=[Server]; Initial Catalog=[database]; Authentication=ActiveDirectoryMSI; Benutzer-ID=[Objekt-ID]; Verschlüsselung für Data=Obligatorisch verwenden
- Systemseitig zugewiesene verwaltete Identität:
Provider=MSOLEDBSQL19; Datenquelle=[Server]; Initial Catalog=[database]; Authentication=ActiveDirectoryMSI; Verschlüsselung für Data=Obligatorisch verwenden
- Benutzerseitig zugewiesene verwaltete Identität:
- Verwendung von
DBPROP_INIT_PROVIDERSTRING:- Benutzerseitig zugewiesene verwaltete Identität:
Server=[Server]; Database=[database]; Authentication=ActiveDirectoryMSI; UID=[Objekt-ID]; Encrypt=Obligatorisch
- Systemseitig zugewiesene verwaltete Identität:
Server=[server];Database=[database];Authentication=ActiveDirectoryMSI;Encrypt=Mandatory
- Benutzerseitig zugewiesene verwaltete Identität:
Microsoft Entra-Dienstprinzipal-Authentifizierung
- Verwendung von
IDataInitialize::GetDataSource:Provider=MSOLEDBSQL19; Datenquelle=[Server]; Initial Catalog=[database]; Authentication=ActiveDirectoryServicePrincipal; Benutzer-ID=[Anwendungs-ID (Client)]; Password=[Application (Client) secret]; Verschlüsselung für Data=Obligatorisch verwenden
- Verwendung von
DBPROP_INIT_PROVIDERSTRING:Server=[Server]; Database=[Datenbank]; Authentication=ActiveDirectoryServicePrincipal; UID=[Anwendungs-ID (Client)]; PWD=[Anwendungsgeheimnis (Client)]; Encrypt=Erforderlich
Codebeispiele
Die folgenden Beispiele zeigen den erforderlichen Code, um über Verbindungsschlüsselwörter eine Verbindung mit Microsoft Entra ID herzustellen.
Zugriffstoken
#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 Integriert
#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();
}
Zugehöriger Inhalt
Zugang zu Microsoft Entra-Webanwendungen mit dem OAuth 2.0 Code Grant Flow autorisieren.
Weitere Informationen zur Microsoft Entra-Authentifizierung für SQL Server.
Konfigurieren Sie Treiberverbindungen mithilfe von Verbindungszeichenfolgen-Schlüsselwörtern, die der OLE DB-Treiber unterstützt.