Azure SQL Managed Instance での Microsoft Entra プリンシパルの Windows 認証のトラブルシューティング
この記事では、Microsoft Entra ID (旧称 Azure Active Directory) で Windows 認証プリンシパルを実装するときに使用するトラブルシューティング手順について説明します。
Note
Microsoft Entra ID の、旧称は Azure Active Directory(Azure AD)です。
チケットがキャッシュされるのを確認する
Klist コマンドを使用して、現在キャッシュされているKerberosチケットの一覧を表示します。
コマンド klist get krbtgt
は、オンプレミスの Active Directory 領域からチケットを返します。
klist get krbtgt/kerberos.microsoftonline.com
コマンド klist get MSSQLSvc
は、サービス プリンシパル名 (SPN) を持つ kerberos.microsoftonline.com
領域から MSSQLSvc/<miname>.<dnszone>.database.windows.net:1433
にチケットを返す必要があります。
klist get MSSQLSvc/<miname>.<dnszone>.database.windows.net:1433
既知のエラー コードを次に示します。
0x6fb: SQL SPN が見つかりません - 有効な SPN を入力したかを確認する。 受信信頼ベースの認証フローを実装した場合は、Microsoft Entra Kerberos 信頼されたドメイン オブジェクトを作成して構成する手順を見直して、すべての構成手順を実行したことを確認します。
0x51f - このエラーは、Fiddler ツールとの競合に関連している可能性があります。 この問題を軽減するには、次の手順に従います。
netsh winhttp reset autoproxy
を実行します。netsh winhttp reset proxy
を実行します。- Windows レジストリで、
Computer\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\iphlpsvc\Parameters\ProxyMgr
を見つけて、:8888
ポートを含む構成を持つサブエントリを削除します - マシンを再起動し、Windows 認証を使ってもう一度試します
0x52f - 参照されているユーザー名と認証情報が有効であるが、一部のユーザー アカウント制限によって認証が成功しなかったことを示します。 これは、Microsoft Entra の条件付きアクセス ポリシーが構成されている場合に発生する可能性があります。 この問題を軽減するには、条件付きアクセスルールで Azure SQL Managed Instance サービス プリンシパル (名称
<instance name> principal
) アプリケーションを除外する必要があります。
メッセージ フロー エラーを調査する
Wireshark または選択したネットワーク トラフィック アナライザーを使用して、クライアントとオンプレミスの Kerberos Key Distribution Center (KDC) 間のトラフィックを監視します。
Wireshark を使用する場合は、次の状況が想定されます。
- AS-REQ: Client => on-premises KDC => は、オンプレミスの TGT を返します。
- TGS-REQ: Client => on-premises KDC => は、
kerberos.microsoftonline.com
への参照を返します。
接続プール
接続プールが有効になっている場合、ドライバーは SQL 接続を閉じるのではなく、再利用のためにプール内で開いたままにして管理します。 これにより、"セキュリティ キャッシュ" の無効化後に接続が再利用され、"Kerberos チケット" が再検証されるシナリオが発生する可能性があります。 接続がプール内に 5 分より長く存在している場合、チケットは期限切れとして扱われ、接続エラーが発生します。 これを回避するには、接続文字列で "接続の有効期間" を 5 分未満に設定します。 この変更により、指定した有効期間より古い接続がプールから再利用されなくなります。
関連するコンテンツ
Azure SQL Managed Instance で Microsoft Entra プリンシパルの Windows 認証を実装する方法の詳細については、次を参照してください。
- Azure SQL Managed Instance での Microsoft Entra プリンシパルの Windows 認証とは何ですか?
- Microsoft Entra ID と Kerberos を使用して Azure SQL Managed Instance の Windows 認証を設定する方法
- Azure AD と Kerberos を使用して Azure SQL Managed Instance の Windows 認証の実装方法
- 最新の対話型フローで Microsoft Entra ID の Windows 認証を設定する方法
- 受信信頼ベースのフローで Microsoft Entra ID の Windows 認証を設定する方法