適用対象: SQL Server 2022 (16.x) 以降。
この記事では、オンプレミスの SQL Server 2022 以降のバージョンに対して Azure Arc を設定せずに Microsoft Entra ID で認証する方法について説明します。 Microsoft Entra 認証は、SQL Server データベースへの安全なアクセスを提供するクラウドベースの ID 管理サービスです。 このチュートリアルでは、Azure Arc を使用せずに Windows 上の SQL Server 用に Microsoft Entra 認証を設定するプロセスについて説明します。
注
Microsoft Entra ID は、以前は Azure Active Directory (Azure AD) という名前でした。
このチュートリアルでは、以下の内容を学習します。
- SQL Server の証明書を追加します。
- SQL Server への接続に使用 adal.dll インストールします。
- Microsoft Entra ID アプリケーションを作成して登録します。
- アプリケーションのアクセス許可を付与します。
- 証明書をアプリケーションにアップロードします。
- SQL Server の Microsoft Entra 認証を有効にするレジストリ値を追加します。
[前提条件]
- オンプレミスの SQL Server 2022 以降のバージョン。
- アクティブな Microsoft Entra ID テナント。
- このセットアップでは、アプリケーション登録を使用して、SQL Server を Microsoft Entra ID に関連付けます。 ガイドに従って、Microsoft Entra ID で アプリケーションを登録 します。
- SQL Server が Azure (具体的には次の Microsoft Entra ID サービスとアドレス) にネットワーク接続されていることを確認します。
- login.windows.net。
- login.microsoftonline.com。
- graph.microsoft.com。
- graph.windows.net。
- database.windows.net。
- IP アドレスと URL の完全な一覧は必要ありませんが、 記事「Microsoft 365 URL」と「IP アドレス範囲」を参照してください。
証明書を取得する
- SQL Server に使用する証明書を取得し、コンピューター証明書ストアにインポートします。 CA 署名付き証明書をお勧めします。
証明書ストアにインストールされている証明書と一致しない証明書には、一意の CN 名を使用します。
コンピューター証明書ストアに証明書をインストールします。 詳細については、「 ローカル コンピューター ストアに証明書をインポートする」を参照してください。
証明書
ReadSQL Server サービス アカウントのアクセス許可を追加します。
adal.dll のインストール
SQL Server のインストールで adal.dll を実行します。 このライブラリは、Microsoft Entra 認証を使用して SQL Server に接続するために必要です。 最新の Microsoft OLE DB Driver for SQL Server インストールから adal.dll を取得できます。
Microsoft OLE DB Driver for SQL Server をインストールした後、 adal.dll がフォルダー
C:\windows\system32にあることを確認します。値が
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSADALSQL\TargetDirのレジストリ キーC:\windows\system32\adal.dllも必要です。 存在しなければ、作成してください。
Windows レジストリの詳細については、 上級ユーザー向けの Windows レジストリ情報を参照してください。
Microsoft Entra ID アプリケーションを作成して登録する
-
Azure portal に移動し、[Microsoft Entra ID]>[アプリの登録]>[新規登録] の順に選択します。
- 名前を指定する - この記事の例では SQLServer を使用します。
- [サポートされているアカウントの種類] を選択し、[この組織のディレクトリ内のアカウントのみ] を使用します
- リダイレクト URI は設定しないでください
- [登録] を選択します
次のアプリケーションの登録を参照してください。
アプリケーションのアクセス許可を付与する
新しく作成したアプリケーションを選択し、左側のメニューで、[API のアクセス許可] を選択します。
[アクセス許可の追加]>[Microsoft Graph]>[アプリケーションのアクセス許可] の順に選択します
- [Directory.Read.All] をオンにします
- [アクセス許可の追加] を選択する
または、
[アクセス許可の追加]>[Microsoft Graph]>[アプリケーションのアクセス許可] の順に選択します
[Application.Read.All] をオンにします
[Group.Read.All] を確認します
[User.Read.All] をオンにします
[アクセス許可の追加] を選択する
[管理者の同意の付与] を選択します
注
上記のアクセス許可に対して 管理者の同意 を付与するには、Microsoft Entra アカウントに特権ロール管理者の役割またはそれ以上のアクセス許可が必要です。
証明書をアップロードする
「または.cer形式で証明書を.pemする」セクションで作成した証明書を、Azure portal のアプリケーション登録にアップロードします。
SQL Server の Microsoft Entra 認証を有効にするレジストリ値を追加する
SQL Server の Microsoft Entra 認証を有効にするには、レジストリ キーの HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL<version-number>.<instance-name>\MSSQLServer\FederatedAuthentication を次の値で更新します。 SQL Server 2022 のレジストリ キー パスの例は、 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQLServer\FederatedAuthenticationです。
Warnung
レジストリ エディターまたは別の方法を使用してレジストリを不適切に変更すると、深刻な問題が発生する可能性があります。 これらの問題が発生すると、オペレーティングシステムを再インストールする必要があるかもしれません。 マイクロソフトは、このような問題の解決に関して、一切責任を負わないものとします。 レジストリを変更する際は自己責任で行ってください。
-
FederatedAuthenticationキーが存在しない場合は、次のすべての値を使用してキーを作成します。 - 一覧表示された最初の 5 つのエントリは、前のセクションで作成したアプリケーションの値で更新する必要があります。 残りのエントリは既定値です。
-
<sql-server-certificate-name>は、「証明書を取得して Azure にアップロードする」セクションで作成した証明書の名前です。 -
<application-client-id>は、「Microsoft Entra ID アプリケーションの作成と登録」セクションで作成したアプリケーションのアプリケーション (クライアント) ID です。 クライアント ID の検索の詳細については、「クライアント ID」を参照してください。 -
<tenant-id>は、Azure テナントからのテナント ID です。 テナント ID は、Azure portal の Microsoft Entra ID>Overview にあります。
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL<version-number>.<instance-name>\MSSQLServer\FederatedAuthentication]
"AADCertSubjectName"="<sql-server-certificate-name>"
"AADTenantSpecificSQLServicePrincipalCertSubjectName"="<sql-server-certificate-name>"
"ClientId"="<application-client-id>"
"AADTenantSpecificSQLServicePrincipalClientId"="<application-client-id>"
"PrimaryAADTenant"="<tenant-id>"
"AADChannelMaxBufferedMessageSize"="200000"
"AADGraphEndPoint"="graph.windows.net"
"AADGroupLookupMaxRetryAttempts"="10"
"AADGroupLookupMaxRetryDuration"="30000"
"AADGroupLookupRetryInitialBackoff"="100"
"AuthenticationEndpoint"="login.microsoftonline.com"
"CacheMaxSize"="300"
"FederationMetadataEndpoint"="login.windows.net"
"GraphAPIEndpoint"="graph.windows.net"
"IssuerURL"="https://sts.windows.net/"
"MsGraphEndPoint"="graph.microsoft.com"
"OnBehalfOfAuthority"="https://login.windows.net/"
"SendX5c"="false"
"ServicePrincipalName"="https://database.windows.net/"
"ServicePrincipalNameForArcadia"="https://sql.azuresynapse.net"
"ServicePrincipalNameForArcadiaDogfood"="https://sql.azuresynapse-dogfood.net"
"ServicePrincipalNameNoSlash"="https://database.windows.net"
"STSURL"="https://login.windows.net/"
"ClientCertBlackList"=""
レジストリ キーのバックアップ、編集、復元など、Windows レジストリの詳細については、 上級ユーザー向けの Windows レジストリ情報を参照してください。
認証のテスト
サーバーを設定し、レジストリ値を編集した後、Microsoft Entra 認証が機能する必要があります。 次の T-SQL コマンドを使用してログインを作成して、セットアップをテストします。
CREATE LOGIN [<admin@domain.com>] FROM EXTERNAL PROVIDER
一般的な問題
次のエラーが表示されることがあります。
Keyset does not exist (AdalDll) with error code: 21
このエラーは、証明書のアクセス許可の問題が原因である可能性があります。 SQL Server サービス アカウントに証明書に対する Read アクセス許可があることを確認します。 問題が解決しない場合は、証明書ストア内の他の証明書と一致しない一意の CN 名が証明書に含まれていることを確認してください。