Microsoft Entra ID 사용
적용 대상: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System(PDW) Microsoft Fabric의 SQL 분석 엔드포인트 Microsoft Fabric의 웨어하우스
목적
버전 18.2.1부터 Microsoft OLE DB Driver for SQL Server를 사용하면 OLE DB 애플리케이션이 페더레이션 ID를 사용하여 Azure SQL 데이터베이스, Azure SQL Managed Instance, Azure Synapse Analytics, Microsoft Fabric에 연결할 수 있습니다.
Microsoft Entra 인증 방법에는 다음이 포함됩니다.
- 사용자 이름 및 암호
- 액세스 토큰
- 통합 인증
버전 18.3.0에는 다음 Microsoft Entra 인증 방법에 대한 지원이 추가되었습니다.
대화형 인증
관리 ID 인증(관리 ID로 구성된 Azure Virtual Machine 내에서만)
버전 18.5.0에는 다음 인증 방법에 대한 지원이 추가되었습니다.
- Microsoft Entra 서비스 주체 인증
참고 항목
DataTypeCompatibility
(또는 해당 속성)를 80
으로 설정하면 다음 인증 모드가 지원되지 않습니다.
- 사용자 이름 및 비밀번호를 사용한 Microsoft Entra 인증
- 액세스 토큰을 사용한 Microsoft Entra 인증
- Microsoft Entra 통합 인증
- Microsoft Entra 대화형 인증
- Microsoft Entra 관리 ID 인즌
- Microsoft Entra 서비스 주체 인증
Microsoft Entra 인증을 사용하려면 Azure SQL 데이터 원본을 구성해야 합니다. 자세한 내용은 Azure SQL에서 Microsoft Entra 인증 구성 및 관리를 참조하세요.
연결 문자열 키워드 및 속성
Microsoft Entra 인증을 지원하기 위해 다음과 같은 연결 문자열 키워드가 도입되었습니다.
연결 문자열 키워드 | Connection 속성 | 설명 |
---|---|---|
액세스 토큰 | SSPROP_AUTH_ACCESS_TOKEN |
Microsoft Entra ID에 인증할 액세스 토큰을 지정합니다. |
인증 | SSPROP_AUTH_MODE |
사용할 인증 방법을 지정합니다. |
새 키워드/속성에 대한 자세한 내용은 다음 페이지를 참조하세요.
암호화 및 인증서 유효성 검사
자세한 내용은 암호화 및 인증서 유효성 검사를 참조하세요.
GUI 추가
Microsoft Entra 인증을 허용하도록 드라이버 그래픽 사용자 인터페이스가 향상되었습니다. 자세한 내용은 다음을 참조하세요.
연결 문자열 예
이 섹션에서는 IDataInitialize::GetDataSource
및 DBPROP_INIT_PROVIDERSTRING
속성과 함께 사용되는 신규 및 기존 연결 문자열 키워드의 예를 보여줍니다.
SQL 인증
- 사용:
IDataInitialize::GetDataSource
- 새 항목:
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Authentication=SqlPassword;User ID=[username];Password=[password];Use Encryption for Data=Mandatory
- 사용되지 않음:
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];User ID=[username];Password=[password];Use Encryption for Data=Mandatory
- 새 항목:
- 사용:
DBPROP_INIT_PROVIDERSTRING
- 새 항목:
Server=[server];Database=[database];Authentication=SqlPassword;UID=[username];PWD=[password];Encrypt=Mandatory
- 사용되지 않음:
Server=[server];Database=[database];UID=[username];PWD=[password];Encrypt=Mandatory
- 새 항목:
SSPI(Security Support Provider Interface)를 사용하는 Windows 통합 인증
- 사용:
IDataInitialize::GetDataSource
- 새 항목:
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Authentication=ActiveDirectoryIntegrated;Use Encryption for Data=Mandatory
- 사용되지 않음:
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Integrated Security=SSPI;Use Encryption for Data=Mandatory
- 새 항목:
- 사용:
DBPROP_INIT_PROVIDERSTRING
- 새 항목:
Server=[server];Database=[database];Authentication=ActiveDirectoryIntegrated;Encrypt=Mandatory
- 사용되지 않음:
Server=[server];Database=[database];Trusted_Connection=yes;Encrypt=Mandatory
- 새 항목:
Microsoft Entra 사용자 이름 및 암호 인증
- 사용:
IDataInitialize::GetDataSource
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Authentication=ActiveDirectoryPassword;User ID=[username];Password=[password];Use Encryption for Data=Mandatory
- 사용:
DBPROP_INIT_PROVIDERSTRING
Server=[server];Database=[database];Authentication=ActiveDirectoryPassword;UID=[username];PWD=[password];Encrypt=Mandatory
Microsoft Entra 통합 인증
- 사용:
IDataInitialize::GetDataSource
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Authentication=ActiveDirectoryIntegrated;Use Encryption for Data=Mandatory
- 사용:
DBPROP_INIT_PROVIDERSTRING
Server=[server];Database=[database];Authentication=ActiveDirectoryIntegrated;Encrypt=Mandatory
액세스 토큰을 사용한 Microsoft Entra 인증
- 사용:
IDataInitialize::GetDataSource
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Access Token=[access token] ;Use Encryption for Data=Mandatory
- 사용:
DBPROP_INIT_PROVIDERSTRING
DBPROP_INIT_PROVIDERSTRING
를 통해 액세스 토큰을 제공하는 것은 지원되지 않습니다.
Microsoft Entra 대화형 인증
- 사용:
IDataInitialize::GetDataSource
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Authentication=ActiveDirectoryInteractive;User ID=[username];Use Encryption for Data=Mandatory
- 사용:
DBPROP_INIT_PROVIDERSTRING
Server=[server];Database=[database];Authentication=ActiveDirectoryInteractive;UID=[username];Encrypt=Mandatory
Microsoft Entra 관리 ID 인증
- 사용:
IDataInitialize::GetDataSource
- 사용자가 할당한 관리 ID:
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Authentication=ActiveDirectoryMSI;User ID=[Object ID];Use Encryption for Data=Mandatory
- 시스템이 할당한 관리 ID:
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Authentication=ActiveDirectoryMSI;Use Encryption for Data=Mandatory
- 사용자가 할당한 관리 ID:
- 사용:
DBPROP_INIT_PROVIDERSTRING
- 사용자가 할당한 관리 ID:
Server=[server];Database=[database];Authentication=ActiveDirectoryMSI;UID=[Object ID];Encrypt=Mandatory
- 시스템이 할당한 관리 ID:
Server=[server];Database=[database];Authentication=ActiveDirectoryMSI;Encrypt=Mandatory
- 사용자가 할당한 관리 ID:
Microsoft Entra 서비스 주체 인증
- 사용:
IDataInitialize::GetDataSource
Provider=MSOLEDBSQL19;Data Source=[server];Initial Catalog=[database];Authentication=ActiveDirectoryServicePrincipal;User ID=[Application (client) ID];Password=[Application (client) secret];Use Encryption for Data=Mandatory
- 사용:
DBPROP_INIT_PROVIDERSTRING
Server=[server];Database=[database];Authentication=ActiveDirectoryServicePrincipal;UID=[Application (client) ID];PWD=[Application (client) secret];Encrypt=Mandatory
코드 샘플
다음 샘플에서는 연결 키워드를 사용하여 Microsoft Entra ID에 연결하는 데 필요한 코드를 보여줍니다.
액세스 토큰
#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 통합
#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();
}
관련 콘텐츠
OAuth 2.0 코드 권한 부여 흐름을 사용하여 Microsoft Entra 웹 애플리케이션에 대한 액세스 권한을 부여합니다.
SQL Server에 대한 Microsoft Entra 인증에 대해 알아보세요.
OLE DB 드라이버에서 지원하는 연결 문자열 키워드를 사용하여 드라이버 연결을 구성합니다.