Docs Menu
Docs Home
/
MongoDBマニュアル
/ / / /

自己管理型 Kerberos 認証のトラブルシューティング

項目一覧

  • mongokerberos 検証ツール
  • Kerberos 構成デバッグ戦略
  • Linux での Kerberos トレース ログ
  • よくあるエラーメッセージ

mongokerberosプログラムは、MongoDB で使用するためのプラットフォームの Kerberos 構成を確認し、MongoDB クライアントからの Kerberos 認証が期待どおりに機能することをテストするのに便利な方法を提供します。

mongokerberosツールは一般的な構成の問題の診断に役立ち、Kerberos 構成のトラブルシューティングを行う際に開始することをお勧めします。 詳しくは、 mongokerberosのドキュメントを参照してください。

mongokerberos は MongoDB Enterprise でのみ利用可能です。

Kerberos mongodmongosを使用して または に対して開始または認証を開始するのが困難な場合は、次の点を考慮してください。

  • MongoDB Community Edition ではなく、MongoDB Enterprise を実行していることを確認します。 Kerberos 認証は MongoDB Enterprise の機能であり、MongoDB Community Edition バイナリでは機能しません。

    MongoDB Enterprise を使用していることを確認するには、 --versionコマンドライン オプションをmongodまたはmongosに渡します。

    mongod --version

    このコマンドの出力で string modules: subscriptionまたはmodules: enterpriseを探し、MongoDB Enterprise バイナリを使用していることを確認します。

  • mongodまたはmongosインスタンスの標準システムホスト名が、解決可能な完全修飾ドメイン名であることを確認します。

    Linux では、システム プロンプトでhostname -fコマンドを使用して、システム ホスト名の解決を確認できます。

  • Linuxでは 、サービスプリンシパル名(SPN の プライマリコンポーネントが であることを確認します SPN のmongodb は です。SPN のプライマリ コンポーネントがmongodbない場合は、 --setParameter saslServiceNameを使用してプライマリ コンポーネントを指定する必要があります。

  • Linuxでは 、サービスプリンシパル名のインスタンス コンポーネント(SPN)が キータブ ファイル 内の は、 またはmongodmongos インスタンスの標準システム ホスト名と一致します。mongodまたはmongosインスタンスのシステムホスト名がキータブ ファイルにない場合、認証は失敗し、 GSSAPI error acquiring credentials.エラー メッセージが表示されます。

    によって返される またはmongod mongosインスタンスのホスト名が完全修飾でない場合は、hostname -f--setParameter saslHostName またはmongodmongos を起動するときに、 を使用してインスタンスの完全修飾ドメイン名を設定します。

  • mongodまたはmongosインスタンスを実行する各ホストにAPTR DNS レコードがあり、DNS のフォワードルックアップとリバースルックアップの両方を提供するようにします。 Aレコードは、 mongodまたはmongosの FQDN にマッピングする必要があります。

  • MongoDB インスタンスと Kerberos インフラストラクチャをホストしているサーバーのクロックが、最大時間差内にあることを確認します。デフォルトでは 5 分です。 時間差が最大時間スワップを超えると、認証が成功し ません 。

  • Linux KRB 5キータブに、 @<KERBEROS REALM>で終わるプリンシパル名が含まれていることを確認します。 SPNを検証するには、Active Directory でsetspn -Q <spn>を実行します。 正しく構成されている場合、このコマンドは SPN にアタッチされているアカウントの 1 つの識別名を返します。 Linux でklist -k <keytab>を実行すると、 <spn>@<KERBEROS REALM>がキータブに表示されます。

  • Active Directory をKDCとして使用する場合は、MongoDB サービス アカウントがマシン アカウントではなくユーザー アカウントであることを確認します。

  • Active Directory でAES暗号化を使用する場合は、 msDS-SupportedEncryptionTypesプロパティまたは「ネットワーク セキュリティ: Kerberos に許可された暗号化タイプの構成」ポリシー設定のいずれかを使用して MongoDB サービス アカウントで AES を有効にします。

  • Kerberos は、同じパスワードを持つ 2 人のユーザーが異なるキーを生成するように、キー生成アルゴリズムをソルトします。 Linux と Active Directory(AD)上のktutilでは、ソルトの生成に同じプロセスは使用されません。 こうした不一致により、Linux と Windows の環境で連携する場合、認証が失敗する可能性があります。 この問題を軽減するには、次のことを実行します。

    • AD サーバー上でキータブ ファイルを生成し、結果のファイルを Linux サーバーに移動します。

      ktpass /out <outfile.keytab> /princ <spn>@<KERBEROS REALM> /mapuser <current userPrincipalName> /crypto ALL /ptype KRB5_NT_PRINCIPAL +rndpass

      注意

      これにより、 userPrincipalName/princの値に変更されます。

    • Linux でktutilを使用し、正しいソルトを使用するように強制します。 ktutilに正しいソルトを使用させるには、次の手順に従います。

      1. プリンシパル名としてuserPrincipalNameを使用するキータブ エントリを生成します。

        ktutil: add_entry -password -p <userPrincipalName>@<KERBEROS REALM> -e aes256-cts-hmac-sha1-96 -k <KVNO>
        Password for <userPrincipalName>@<KERBEROS REALM>:
        ktutil: list -k
        slot KVNO Principal
      2. キーを 16 進ダンプします。

      3. プリンシパル名として<spn>@<KERBEROS REALM>を使用して新しいキータブ エントリを作成し、16 進数ダンプキーを使用します。

        1 <KVNO> <userPrincipalName>@<KERBEROS REALM>(0x<HEXDUMP>)
        ktutil: add_entry -key -p <spn>@<KERBEROS REALM> -e aes256-cts-hmac-sha1-96 -k <KVNO>
        Key for <spn>@<KERBEROS REALM> (hex): <HEXDUMP>
        ktutil: write_kt mongodb_ad.keytab
    • 推奨はされませんが、Salted を使用しない RFC 4 -HMAC を使用してください。

MIT Kerberos は、トレース ログ出力用のKRB5_TRACE環境変数を提供します。 Linux で MIT Kerberos に関する永続的な問題が発生している場合は、 mongodmongos 、またはmongoshインスタンスを起動するときにKRB5_TRACEを設定して、冗長なログを生成できます。

たとえば、次のコマンドは、キータブ ファイルがデフォルトの/etc/krb5.keytabパスにあるスタンドアロンのmongodを起動し、 KRB5_TRACE/logs/mongodb-kerberos.logに書込むように設定します。

env KRB5_KTNAME=/etc/krb5.keytab \
KRB5_TRACE=/logs/mongodb-kerberos.log \
mongod --dbpath /data/db --logpath /data/db/mongodb.log \
--auth --setParameter authenticationMechanisms=GSSAPI \
--bind_ip localhost,<hostname(s)|ip address(es)> --fork

Kerberos サービスに問題が発生した場合、状況によっては、MongoDB は GSSAPI インターフェイスからエラー メッセージを返します。 以下はよくあるエラーメッセージです。

GSSAPI error in client while negotiating security context.

このエラーはクライアント上で発生し、認証情報が不十分または悪意のある認証試行を反映します。

このエラーが発生した場合は、ホストに接続するときに正しい認証情報と正しい完全修飾ドメイン名を使用していることを確認してください。

GSSAPI error acquiring credentials.
このエラーはmongodまたはmongosの起動中に発生し、システムホスト名が不適切に構成されているか、キータブ ファイルが欠落しているか誤って構成されている可能性があります。

Tip

以下も参照してください。

戻る

Windows での構成