SQL Server 用 Kerberos 構成マネージャーの概要
適用対象: SQL Server
元の KB 番号: 2985455
ネットワーク内の Kerberos 構成が正しくないと、Microsoft SQL Server でさまざまな接続エラーが発生する可能性があります。 SQL Server 用 Kerberos 構成マネージャーは、SQL Server、SQL Server Reporting Services (SSRS)、および SQL Server Analysis Services (SSAS) に影響する Kerberos 関連の接続の問題のトラブルシューティングに役立つ診断ツールです。 この記事では、Kerberos Configuration Manager ツールを使用する方法と、ツールからの出力を解釈して SQL Server に影響する Kerberos の問題を修正する方法について説明します。
Note
Kerberos Configuration Manager は現状のまま提供されており、テクニカル サポートや更新プログラムは提供されません。 SQL Server 2022 以降のバージョンの WMI プロバイダーを使用するように更新されていません。 SQL Server 関連の Kerberos 構成の問題のトラブルシューティングと診断については、 SQLCheckを参照してください。
Kerberos 構成マネージャーの機能
Kerberos Configuration Manager では、次のタスクを実行できます。
- サーバーにインストールされている OS、Microsoft SQL Server インスタンス、Always On 可用性グループ リスナーに関する情報を収集します。
- サーバー上のすべてのサービス プリンシパル名 (SPN) と委任の構成を報告します。
- SPN と委任の潜在的な問題を特定します。
- 潜在的な SPN の問題を修正します。
使用シナリオ
このツールは、次の例外のトラブルシューティングに役立ちます。
- 401
注: このエラー メッセージは、HTTP エラー、SSRS エラー、およびその他の同様のエラーを対象とします。
- SSPI コンテキストを生成できない
- ユーザー 'NTAUTHORITY\ANONYMOUS LOGON' のログインに失敗しました
- ユーザー '(null)' はログインできませんでした
- ユーザーのログインに失敗しました (空)
Note
問題のトラブルシューティングを開始する前に、前提条件を確認してから、一般的なチェックリストを参照して接続関連のエラーのトラブルシューティングを行うことをお勧めします。
Note
SQL Server ベースのコンピューターへの管理者アクセス権がある場合は、そのコンピューターで SQL 接続設定チェック ツールを実行し、出力を確認して SQL Server インスタンスの SPN 構成を確認することもできます。
ツールのダウンロード
このツールは、Microsoft ダウンロード センターからダウンロードできます。
Microsoft Kerberos Configuration Manager for SQL Server
Note
SQL Server ベースのコンピューターに接続できるドメイン内の任意のコンピューターにツールをダウンロードしてインストールできます。
アクセス許可
SQL、SSRS、および SSAS に影響する接続の問題をトラブルシューティングするには、そのコンピューターに対する管理アクセス許可を持つドメイン ユーザー アカウントを使用して、対象のコンピューター (サービスをホストしているコンピューター) に接続します。
省略可能: ツールによって識別される SPN の問題を修正するためにツールを使用する場合、ドメイン アカウントにはサービス プリンシパル名への書き込みアクセス許可が必要です。
ツールの使用
インストールが完了したら、インストール フォルダーに移動して KerberosConfigMgr.exe バイナリを開始します。 既定では、場所は
管理者または別のユーザーとしてアプリを起動する方法については、「 実行を使用して管理者としてアプリを起動する」を参照してください。
トラブルシューティングを開始するには、次のいずれかのオプションを使用します。
リモート SQL Server ベースのコンピューターに接続するには、 Server Name、 Domain User Name、および Password に適切な値を入力します。
Note
Kerberos 構成マネージャー ツールは、Windows API を使用して、SQL Server コンピューターの Kerberos 構成に関する情報のクエリと表示を行います。 そのため、名前付きインスタンスの Kerberos 関連の問題をトラブルシューティングする場合でも、SQL Server インスタンスをホストするコンピューターの名前を常に入力してください。
ローカル サーバーに接続するには、 Connect を選択して Kerberos 構成を分析します。 この場合、サーバー名、ドメイン ユーザー名、またはパスワードを指定する必要はありません。
Note
ツールを起動するアカウントは、ローカル管理者アカウントである必要があります。 管理者または別のユーザーとしてアプリを起動する方法については、「 実行を使用して管理者としてアプリを起動する」を参照してください。
接続が成功すると、関連するすべての SPN が次のスクリーンショットに表示されます。
このスクリーンショットでは、UI には次のタブがあります。
システム: ユーザー情報とコンピューター情報を表示します。
SPN: ターゲット サーバー上にある各 SQL Server インスタンスに関するサービス プリンシパル名 (SPN) 情報を表示し、必要な SPN とその状態などの詳細を提供します。
生成: 不足している SPN と構成済みの SPN を見つけるのに役立ちます。 また、SPN 生成スクリプトを生成するのにも役立ちます。
- 生成を選択します。
- 表示されるダイアログ ボックスで、名前 (この場合は "generateSPNss") を指定し、Kerberos Config Mgr(.cmd) ファイルとして Save As type を設定し、Save を選択します。
generateSPNss.cmd ファイルが作成され、コマンド プロンプトでこのファイルを実行できます。 generateSPNss.cmd ファイルの内容は、次の例のようになります。
:: This script is generated by the Microsoft® SQL Server® Kerberos Configuration Manager tool.
:: The script may update the system information, SPN settings and Delegation configurations of a given server.
:: SPN and Delegation configuration updates require Windows Domain Administrator permission to execute.
:: A Domain Admin should review the configurations recommended by this tool and take appropriate actions to enable Kerberos authentication.
:: Please contact Microsoft Support if Kerberos connection problem persists.
:: The file is intended to be run in domain `<DomainName>.com`"
:: Corrections for MSSQLSvc/`<HostName>.<DomainName>.com` **SetSPN -s MSSQLSvc/`<HostName>`. `<DomainName>`.com UserName**
SetSPN を使用して、SQL Server のサービス アカウントに SPN を作成します。
Fixを使用して問題を修正し、SPN を追加します。 SPN は、必要なアクセス許可がある場合にのみ追加できます。 Fix を選択すると、次のツール ヒントが表示されます。
Note
このツールは、既定のインスタンスと静的ポートを持つ名前付きインスタンスに対してのみ、 Fix および Generate コマンドを提供します。 動的ポートを使用する名前付きインスタンスの場合は、SQL サービスが開始されるたびに、動的ポートから静的ポートに切り替えるか、サービス アカウントが SPN を登録および登録解除するために必要なアクセス許可を付与することをお勧めします。 それ以外の場合は、サービスが開始されるたびに、対応する SPN の登録を手動で登録解除し、再登録する必要があります。 詳細については、「 Kerberos 接続用のサービス プリンシパル名の登録」を参照してください。
委任: Delegation を使用して、委任に対するサービス アカウントの構成に影響を与える問題を特定します。 これは、リンク サーバーの問題のトラブルシューティングに特に役立ちます。 たとえば、SPN チェックアウトは問題なく、リンク サーバー クエリに影響する問題が引き続き発生する場合は、サービス アカウントが資格情報を委任するように構成されていないことを示している可能性があります。 詳細については、「 委任用のリンク サーバーの構成」のオンライン ブックトピックを参照してください。
Kerberos Configuration Manager からの診断の解釈と対応
Status 列を参照して、ツールからの診断を確認します。 状態に基づいて、適切な手順に従って問題を解決します。
状態 - 良好
詳細情報: チェックされた項目が正しく構成されています。 出力内の次の項目に移動します。
アクション: アクションは必要ありません。
状態 - 必要な SPN がありません
詳細情報: この状態は、Active Directory の SQL Server スタートアップ アカウントの Required SPN 列に記載されているサービス プリンシパル名 (SPN) が見つからない場合に報告されます。
アクション: SPN の問題が解決されているかどうかを確認するには、次の手順に従います。
- Fix を選択して、[Warning] ダイアログ ボックスの情報を確認します。
- [ Yes を選択して、不足している SPN を Active Directory に追加します。
- ドメイン アカウントに Active Directory を更新するために必要なアクセス許可がある場合は、必要な SPN が Active Directory に追加されます。
- ドメイン アカウントに Active Directory の更新に必要なアクセス許可がない場合は、 Generate または Generate All を使用して、Active Directory 管理者が不足している SPN を追加するのに役立つスクリプトを生成します。
- SPN が追加されたら、Kerberos Configuration Manager をもう一度実行して、SPN の問題が解決されたことを確認します。
状態 - Kerberos 構成を使用するには TCP を有効にする必要があります。
詳細情報: この状態は、クライアント コンピューターで TCP が有効になっていない場合に表示されます。
アクション: SQL Server インスタンスの TCP/IP プロトコルを有効にするには、次の手順に従います。
SQL Server 構成マネージャー - コンソールで、[
SQL サーバー ネットワーク構成 を展開します。Consoleで、
<instance name>
Protocols を選択します。Detailsで、TCP/IPを選択し、Enable を選択します。
Consoleで、[
SQL Server Services を選択します。Detailsで、
<instance name>
SQL Server を選択します。Restart を選択して、SQL Server サービスを停止して再起動します。 詳細については、「 サーバー ネットワーク プロトコルの有効化または無効化」セクションを参照してください。
状態 - 動的ポート
詳細情報: この状態は、動的ポートを使用する名前付きインスタンス (既定の構成) に対して表示されます。 Kerberos を使用して SQL Server に接続する必要がある環境では、静的ポートを使用するように名前付きインスタンスを設定し、SPN を登録するときにそのポートを使用する必要があります。 それ以外の場合、Active Directory に登録されている SPN は、次に名前付きインスタンスが SPN が登録されているポート以外の新しいポートでリッスンを開始すると無効になります。
Note
この推奨事項は、手動の SPN 登録に依存する環境にのみ適用されます。
アクション: 静的ポートを使用するように SQL Server インスタンスを構成するには、次の手順に従います。
- SQL Server 構成マネージャー - コンソールで、SQL Server Network Configuration を展開し、
<instance name>
の Protocols を展開して、TCP/IP をダブルクリックします。 - TCP/IP プロパティで、Protocolで [すべてリスト] 選択します。
- Listen All が Yes に設定されている場合は、IP アドレスに切り替えウィンドウの下部までスクロールして、IPAll 設定を見つけます。
- TCP 動的ポートの現在の値を削除し、TCP ポートにポート番号を入力します。
- OK を選択し、SQL Server インスタンスを再起動します。 詳細については、「特定の TCP ポートでリッスンするようにサーバーを構成する」を参照してください。
- Listen All が No に設定されている場合は、IP アドレスに切り替えて、IP1 および IP2 ノードに表示されるすべての IP アドレスを確認します。 Enabled に設定されているアドレスの場合は、TCP 動的ポートの現在の値を削除し、TCP ポートに値を設定します。
- OKを選択し、設定を有効にするために SQL Server インスタンスを再起動します。 詳細については、「特定の TCP ポートでリッスンするようにサーバーを構成する」を参照してください。
- SQL Server 構成マネージャー - コンソールで、SQL Server Network Configuration を展開し、
状態 - SPN の重複
詳細情報: Active Directory の異なるアカウントに同じ SPN が登録されている場合、このシナリオが発生する可能性があります。
アクション: 次の手順に従って、ACTIVE Directory に SPN を追加します。
[修正プログラム] を選択します。
[ Warning ] ダイアログ ボックスで情報を確認します。
[ Yes を選択して、不足している SPN を Active Directory に追加します。
ドメイン アカウントに Active Directory を更新するために必要なアクセス許可がある場合は、正しくない SPN が削除されます。
ドメイン アカウントに Active Directory の更新に必要なアクセス許可がない場合は、 Generate または Generate All を使用して、重複する SPN を削除するために Active Directory 管理者に提供できる必要なスクリプトを生成します。
SPN が削除されたら、Kerberos Configuration Manager を再実行して、SPN の問題が解決されたことを確認します。
Note
SQL Server データベース エンジン のインスタンスが開始すると、SQL Server により、SQL Server サービスに対する SPN の登録が試みられます。 インスタンスが停止すると、SQL Server により SPN の登録解除が試みられます。 これを行うには、SQL Server サービス アカウントに Active Directory の適切なアクセス許可が必要です。 ただし、サービス アカウントにこれらの権限がない場合、SPN の自動登録は行われません。SQL インスタンスで Kerberos 認証を有効にできるように、Active Directory 管理者と協力してこれらの SPN を登録する必要があります。 詳細については、「 Kerberos 接続用のサービス プリンシパル名の登録」を参照してください。
Note
SQL がクラスター化されている環境では、SPN の登録を解除して Active Directory に SPN を再登録するのに、SQL Server がオンラインになる時間よりも時間がかかる場合があるため、SPN の自動登録は推奨されません。 SPN 登録が時間内に発生しない場合は、クラスター管理者が SQL Server インスタンスに接続できないため、SQL Server がオンラインにならない可能性があります。
追加のオプション
コマンド ラインから SPN リストを生成するには:
コマンド ラインに移動します。
Note
SSRS に影響する接続の問題をトラブルシューティングするには、管理コマンド プロンプト ウィンドウを開きます。
KerberosConfigMgr.exeを含むフォルダーに切り替えます。
「
KerberosConfigMgr.exe -q -l
」と入力します。その他のコマンド ライン オプションについては、「
KerberosConfigMgr.exe -h
」と入力します。
サーバーの Kerberos 構成情報を保存するには:
- ターゲットの Windows サーバーに接続します。
- [保存] を選択します。
- ファイルを保存する場所を指定します。 ローカル ドライブまたはネットワーク共有上に存在できます。 ファイルは .xml 形式で保存されます。
保存されたファイルからサーバーの Kerberos 構成情報を表示するには:
- [読み込み] を選択します。
- Kerberos 構成マネージャーによって生成された XML ファイルを開きます。
このツールのログ ファイルを表示するには:
既定では、アプリケーションがアプリケーション データ フォルダー ( %APPDATA%\Microsoft\KerberosConfigMgr で実行されるたびに、1 つのログ ファイルが生成されます。
ヘルプを表示するには、次のいずれかの方法を使用します。
- コマンドの上にマウス ポインターを置くと、ヒントが生成されます。
- コマンド プロンプトで
KerberosConfigMgr.exe -h
を実行します。 - ツール バーの Help ボタンを選択します。