Menggunakan ID Microsoft Entra
Berlaku untuk: Titik akhir analitik SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Platform System (PDW) SQL di Microsoft Fabric Warehouse di Microsoft Fabric
Tujuan
Dimulai dengan versi 18.2.1, Driver Microsoft OLE DB untuk SQL Server memungkinkan aplikasi OLE DB tersambung ke Azure SQL Database, Azure SQL Managed Instance, Azure Synapse Analytics, dan Microsoft Fabric menggunakan identitas federasi .
Metode autentikasi Microsoft Entra meliputi:
- Nama pengguna dan kata sandi
- Token akses
- Autentikasi terintegrasi
Versi 18.3.0 menambahkan dukungan untuk metode autentikasi Microsoft Entra berikut:
Autentikasi interaktif
Autentikasi identitas terkelola (hanya dari dalam Azure Virtual Machine yang dikonfigurasi dengan Identitas Terkelola)
Versi 18.5.0 menambahkan dukungan untuk metode autentikasi berikut:
- Autentikasi perwakilan layanan Microsoft Entra
Catatan
Menggunakan mode autentikasi berikut dengan DataTypeCompatibility
(atau properti yang sesuai) diatur ke 80
tidak didukung:
- Autentikasi Microsoft Entra menggunakan nama pengguna dan kata sandi
- Autentikasi Microsoft Entra menggunakan token akses
- Autentikasi terintegrasi Microsoft Entra
- Autentikasi interaktif Microsoft Entra
- Autentikasi identitas terkelola Microsoft Entra
- Autentikasi perwakilan layanan Microsoft Entra
Untuk menggunakan autentikasi Microsoft Entra, Anda harus mengonfigurasi sumber data Azure SQL Anda. Untuk informasi selengkapnya, lihat Mengonfigurasi dan mengelola autentikasi Microsoft Entra dengan Azure SQL.
Kata kunci dan properti string koneksi
Kata kunci string koneksi berikut telah diperkenalkan untuk mendukung autentikasi Microsoft Entra:
Kata kunci string koneksi | Properti koneksi | Deskripsi |
---|---|---|
access_token | SSPROP_AUTH_ACCESS_TOKEN |
Menentukan token akses untuk mengautentikasi ke ID Microsoft Entra. |
Autentikasi | SSPROP_AUTH_MODE |
Menentukan metode autentikasi yang akan digunakan. |
Untuk informasi selengkapnya tentang kata kunci/properti baru, lihat halaman berikut ini:
- Menggunakan Kata Kunci String Koneksi dengan Driver OLE DB untuk SQL Server
- Properti Inisialisasi dan Otorisasi
Validasi enkripsi dan sertifikat
Lihat Enkripsi dan validasi sertifikat untuk informasi selengkapnya.
Penambahan GUI
Antarmuka pengguna grafis driver telah ditingkatkan untuk memungkinkan autentikasi Microsoft Entra. Untuk informasi selengkapnya, lihat:
Contoh string koneksi
Bagian ini memperlihatkan contoh kata kunci string koneksi baru dan yang sudah ada untuk digunakan dengan IDataInitialize::GetDataSource
properti dan DBPROP_INIT_PROVIDERSTRING
.
Autentikasi SQL
- Menggunakan
IDataInitialize::GetDataSource
:- Baru:
Provider=MSOLEDBSQL19; Sumber Data=[server]; Katalog Awal=[database];Authentication=SqlPassword; ID Pengguna=[nama pengguna]; Kata sandi=[kata sandi]; Gunakan Enkripsi untuk Data=Wajib
- Usang:
Provider=MSOLEDBSQL19; Sumber Data=[server]; Katalog Awal=[database]; ID Pengguna=[nama pengguna]; Kata sandi=[kata sandi]; Gunakan Enkripsi untuk Data=Wajib
- Baru:
- Menggunakan
DBPROP_INIT_PROVIDERSTRING
:- Baru:
Server=[server]; Database=[database];Authentication=SqlPassword; UID=[nama pengguna]; PWD=[kata sandi]; Enkripsi=Wajib
- Usang:
Server=[server]; Database=[database]; UID=[nama pengguna]; PWD=[kata sandi]; Enkripsi=Wajib
- Baru:
Autentikasi Windows terintegrasi menggunakan Antarmuka Penyedia Dukungan Keamanan (SSPI)
- Menggunakan
IDataInitialize::GetDataSource
:- Baru:
Provider=MSOLEDBSQL19; Sumber Data=[server]; Katalog Awal=[database];Authentication=ActiveDirectoryIntegrated; Gunakan Enkripsi untuk Data=Wajib
- Usang:
Provider=MSOLEDBSQL19; Sumber Data=[server]; Katalog Awal=[database];Integrated Security=SSPI; Gunakan Enkripsi untuk Data=Wajib
- Baru:
- Menggunakan
DBPROP_INIT_PROVIDERSTRING
:- Baru:
Server=[server]; Database=[database];Authentication=ActiveDirectoryIntegrated; Enkripsi=Wajib
- Usang:
Server=[server]; Database=[database];Trusted_Connection=ya; Enkripsi=Wajib
- Baru:
Autentikasi nama pengguna dan kata sandi Microsoft Entra
- Menggunakan
IDataInitialize::GetDataSource
:Provider=MSOLEDBSQL19; Sumber Data=[server]; Katalog Awal=[database];Authentication=ActiveDirectoryPassword; ID Pengguna=[nama pengguna]; Kata sandi=[kata sandi]; Gunakan Enkripsi untuk Data=Wajib
- Menggunakan
DBPROP_INIT_PROVIDERSTRING
:Server=[server]; Database=[database];Authentication=ActiveDirectoryPassword; UID=[nama pengguna]; PWD=[kata sandi]; Enkripsi=Wajib
Autentikasi terintegrasi Microsoft Entra
- Menggunakan
IDataInitialize::GetDataSource
:Provider=MSOLEDBSQL19; Sumber Data=[server]; Katalog Awal=[database];Authentication=ActiveDirectoryIntegrated; Gunakan Enkripsi untuk Data=Wajib
- Menggunakan
DBPROP_INIT_PROVIDERSTRING
:Server=[server]; Database=[database];Authentication=ActiveDirectoryIntegrated; Enkripsi=Wajib
Autentikasi Microsoft Entra menggunakan token akses
- Menggunakan
IDataInitialize::GetDataSource
:Provider=MSOLEDBSQL19; Sumber Data=[server]; Katalog Awal=[database];Token Akses=[token akses]; Gunakan Enkripsi untuk Data=Wajib
- Menggunakan
DBPROP_INIT_PROVIDERSTRING
:Menyediakan token akses melalui
DBPROP_INIT_PROVIDERSTRING
tidak didukung
Autentikasi interaktif Microsoft Entra
- Menggunakan
IDataInitialize::GetDataSource
:Provider=MSOLEDBSQL19; Sumber Data=[server]; Katalog Awal=[database];Authentication=ActiveDirectoryInteractive; ID Pengguna=[nama pengguna]; Gunakan Enkripsi untuk Data=Wajib
- Menggunakan
DBPROP_INIT_PROVIDERSTRING
:Server=[server]; Database=[database];Authentication=ActiveDirectoryInteractive; UID=[nama pengguna]; Enkripsi=Wajib
Autentikasi identitas terkelola Microsoft Entra
- Menggunakan
IDataInitialize::GetDataSource
:- Identitas terkelola yang ditetapkan pengguna:
Provider=MSOLEDBSQL19; Sumber Data=[server]; Katalog Awal=[database];Authentication=ActiveDirectoryMSI; ID Pengguna=[ID Objek]; Gunakan Enkripsi untuk Data=Wajib
- Identitas terkelola yang ditetapkan sistem:
Provider=MSOLEDBSQL19; Sumber Data=[server]; Katalog Awal=[database];Authentication=ActiveDirectoryMSI; Gunakan Enkripsi untuk Data=Wajib
- Identitas terkelola yang ditetapkan pengguna:
- Menggunakan
DBPROP_INIT_PROVIDERSTRING
:- Identitas terkelola yang ditetapkan pengguna:
Server=[server]; Database=[database];Authentication=ActiveDirectoryMSI; UID=[ID Objek]; Enkripsi=Wajib
- Identitas terkelola yang ditetapkan sistem:
Server=[server]; Database=[database];Authentication=ActiveDirectoryMSI; Enkripsi=Wajib
- Identitas terkelola yang ditetapkan pengguna:
Autentikasi perwakilan layanan Microsoft Entra
- Menggunakan
IDataInitialize::GetDataSource
:Provider=MSOLEDBSQL19; Sumber Data=[server]; Katalog Awal=[database];Authentication=ActiveDirectoryServicePrincipal; ID Pengguna=[ID Aplikasi (klien)]; Password=[Rahasia aplikasi (klien)]; Gunakan Enkripsi untuk Data=Wajib
- Menggunakan
DBPROP_INIT_PROVIDERSTRING
:Server=[server]; Database=[database];Authentication=ActiveDirectoryServicePrincipal; UID=[ID Aplikasi (klien) ]; PWD=[Rahasia aplikasi (klien)]; Enkripsi=Wajib
Sampel kode
Sampel berikut menunjukkan kode yang diperlukan untuk menyambungkan ke ID Microsoft Entra dengan kata kunci koneksi.
access_token
#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();
}
Direktori Aktif Terintegrasi
#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();
}
Konten terkait
Otorisasi akses ke aplikasi web Microsoft Entra menggunakan alur pemberian kode OAuth 2.0.
Pelajari tentang autentikasi Microsoft Entra ke SQL Server.
Konfigurasikan koneksi driver menggunakan kata kunci string koneksi yang didukung driver OLE DB.