Microsoft Entra ID を使用する
Applies to: 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 Database、Azure SQL Managed Instance、Azure Synapse Analytics、Microsoft Fabric に接続できるようになりました。
Microsoft Entra 認証方法には次のものがあります。
- ユーザー名とパスワード
- アクセス トークン
- 統合認証
バージョン 18.3.0 では、次の Microsoft Entra 認証方法のサポートが追加されています。
対話型認証
マネージド ID 認証 (マネージド ID 用に構成された Azure 仮想マシン内からのみ)
バージョン 18.5.0 では、次の認証方法のサポートが追加されています。
- Microsoft Entra サービス プリンシパル認証
Note
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 プロパティ | 説明 |
---|---|---|
Access Token | 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=[サーバー];Initial Catalog=[データベース];Authentication=SqlPassword;User ID=[ユーザー名];Password=[パスワード];Use Encryption for Data=Mandatory
- 非推奨:
Provider=MSOLEDBSQL19;Data Source=[サーバー];Initial Catalog=[データベース];User ID=[ユーザー名];Password=[パスワード];Use Encryption for Data=Mandatory
- 新:
- 使用法:
DBPROP_INIT_PROVIDERSTRING
- 新:
Server=[サーバー];Database=[データベース];Authentication=SqlPassword;UID=[ユーザー名];PWD=[パスワード];Encrypt=Mandatory
- 非推奨:
Server=[サーバー];Database=[データベース];UID=[ユーザー名];PWD=[パスワード];Encrypt=Mandatory
- 新:
セキュリティ サポート プロバイダー インターフェイス (SSPI) を使用する統合 Windows 認証
- 使用法:
IDataInitialize::GetDataSource
- 新:
Provider=MSOLEDBSQL19;Data Source=[サーバー];Initial Catalog=[データベース];Authentication=ActiveDirectoryIntegrated;Use Encryption for Data=Mandatory
- 非推奨:
Provider=MSOLEDBSQL19;Data Source=[サーバー];Initial Catalog=[データベース];Integrated Security=SSPI;Use Encryption for Data=Mandatory
- 新:
- 使用法:
DBPROP_INIT_PROVIDERSTRING
- 新:
Server=[サーバー];Database=[データベース];Authentication=ActiveDirectoryIntegrated;Encrypt=Mandatory
- 非推奨:
Server=[サーバー];Database=[データベース];Trusted_Connection=yes;Encrypt=Mandatory
- 新:
Microsoft Entra ユーザー名とパスワードによる認証
- 使用法:
IDataInitialize::GetDataSource
Provider=MSOLEDBSQL19;Data Source=[サーバー];Initial Catalog=[データベース];Authentication=ActiveDirectoryPassword;User ID=[ユーザー名];Password=[パスワード];Use Encryption for Data=Mandatory
- 使用法:
DBPROP_INIT_PROVIDERSTRING
Server=[サーバー];Database=[データベース];Authentication=ActiveDirectoryPassword;UID=[ユーザー名];PWD=[パスワード];Encrypt=Mandatory
Microsoft Entra 統合認証
- 使用法:
IDataInitialize::GetDataSource
Provider=MSOLEDBSQL19;Data Source=[サーバー];Initial Catalog=[データベース];Authentication=ActiveDirectoryIntegrated;Use Encryption for Data=Mandatory
- 使用法:
DBPROP_INIT_PROVIDERSTRING
Server=[サーバー];Database=[データベース];Authentication=ActiveDirectoryIntegrated;Encrypt=Mandatory
アクセス トークンを使用した Microsoft Entra 認証
- 使用法:
IDataInitialize::GetDataSource
Provider=MSOLEDBSQL19;Data Source=[サーバー];Initial Catalog=[データベース];Access Token=[アクセス トークン] ;Use Encryption for Data=Mandatory
- 使用法:
DBPROP_INIT_PROVIDERSTRING
DBPROP_INIT_PROVIDERSTRING
を使用したアクセス トークンの提供はサポートされていません
Microsoft Entra 対話型認証
- 使用法:
IDataInitialize::GetDataSource
Provider=MSOLEDBSQL19;Data Source=[サーバー];Initial Catalog=[データベース];Authentication=ActiveDirectoryInteractive;User ID=[ユーザー名];Use Encryption for Data=Mandatory
- 使用法:
DBPROP_INIT_PROVIDERSTRING
Server=[サーバー];Database=[データベース];Authentication=ActiveDirectoryInteractive;UID=[ユーザー名];Encrypt=Mandatory
Microsoft Entra マネージド ID 認証
- 使用法:
IDataInitialize::GetDataSource
- ユーザー割り当てマネージド ID:
Provider=MSOLEDBSQL19;Data Source=[サーバー];Initial Catalog=[データベース];Authentication=ActiveDirectoryMSI;User ID=[オブジェクト ID];Use Encryption for Data=Mandatory
- システム割り当てマネージド ID:
Provider=MSOLEDBSQL19;Data Source=[サーバー];Initial Catalog=[データベース];Authentication=ActiveDirectoryMSI;Use Encryption for Data=Mandatory
- ユーザー割り当てマネージド ID:
- 使用法:
DBPROP_INIT_PROVIDERSTRING
- ユーザー割り当てマネージド ID:
Server=[サーバー];Database=[データベース];Authentication=ActiveDirectoryMSI;UID=[オブジェクト ID];Encrypt=Mandatory
- システム割り当てマネージド ID:
Server=[サーバー];Database=[データベース];Authentication=ActiveDirectoryMSI;Encrypt=Mandatory
- ユーザー割り当てマネージド ID:
Microsoft Entra サービス プリンシパル認証
- 使用法:
IDataInitialize::GetDataSource
Provider=MSOLEDBSQL19;Data Source=[サーバー];Initial Catalog=[データベース];Authentication=ActiveDirectoryServicePrincipal;User ID=[アプリケーション (クライアント) ID];Password=[アプリケーション (クライアント) シークレット];Use Encryption for Data=Mandatory
- 使用法:
DBPROP_INIT_PROVIDERSTRING
Server=[サーバー];Database=[データベースj];Authentication=ActiveDirectoryServicePrincipal;UID=[アプリケーション (クライアント) ID];PWD=[アプリケーション (クライアント) シークレット];Encrypt=Mandatory
コード サンプル
次のサンプルは、接続キーワードによって Microsoft Entra に接続するために必要なコードを示しています。
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();
}
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 Web アプリケーションへのアクセスを承認します。
SQL Server への Microsoft Entra 認証について説明します。
OLE DB ドライバーがサポートする接続文字列キーワードを使用してドライバー接続を構成します。