次の方法で共有


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 ツールとの競合に関連している可能性があります。 この問題を軽減するには、次の手順に従います。

    1. netsh winhttp reset autoproxy を実行します。
    2. netsh winhttp reset proxy を実行します。
    3. Windows レジストリで、Computer\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\iphlpsvc\Parameters\ProxyMgr を見つけて、:8888 ポートを含む構成を持つサブエントリを削除します
    4. マシンを再起動し、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 認証を実装する方法の詳細については、次を参照してください。