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

自己管理型 LDAP プロキシ認証

項目一覧

  • Considerations
  • オペレーティング システムの LDAP ライブラリ経由の LDAP 認証
  • による LDAP 認証 saslauthd
  • LDAP 認証経由で MongoDB サーバーに接続する

MongoDB Enterpriseは、 LDAP(Lightweight Directory Access Protocol)サービスへの認証リクエストのプロキシ機能をサポートしています。

MongoDB は LDAP サーバーへのシンプル バインディングと SASL バインディングをサポートしています。

via
説明

オペレーティング システム ライブラリ

MongoDB はオペレーティング システム ライブラリ経由の LDAP サーバーへのバインディングをサポートしています。

これにより、Linux および Windows 上の MongoDB サーバーは認証に LDAP サーバーを使用できるようになります。

以前のバージョンでは、Microsoft Windows 上の MongoDB は LDAP サーバーに接続できません。

saslauthd

Linux 上の MongoDB サーバーは、 saslauthdデーモンを介した LDAP サーバーへのバインディングをサポートしています。

Windows 上の MongoDB では使用できません。

LDAP の完全な説明は、このドキュメントの範囲外です。このページは LDAP に関する予備知識を前提としています。

このドキュメントは、MongoDB LDAP 認証についてのみ説明し、LDAP 上の他のリソースを置き換えるものではありません。 LDAP 認証を設定する前に、LDAP とそれに関連する事柄について十分に理解することをお勧めします。

MongoDBは、MongoDBの配置向けの LDAP 認証の最適な構成のためのプロフェッショナル サービスを提供できます。

認証および承認のために LDAP サーバーに接続する場合、MongoDB はデフォルトで次のことを行います。

接続プーリングの動作を変更するには、 ldapUseConnectionPoolパラメータをアップデートします。

重要

security.sasl.saslauthdSocketPathまたは--setParameter saslauthdPathに指定されたsaslauthd Unix ドメイン ソケット ファイルの親ディレクトリには、次のいずれかの読み取りおよび実行( r-x )権限が付与されている必要があります。

  • mongodまたはmongosを起動するユーザー、または

  • そのユーザーが属するグループ。

mongodまたはmongosは、 saslauthdディレクトリとその内容に対する指定された権限がなければ、 saslauthd経由で正常に認証できません。

libldap にリンクされた MongoDB 4.2 Enterprise バイナリ(RHEL で実行している場合など)の場合、libldap へのアクセスは同期され、パフォーマンスおよびレイテンシのコストが発生します。

libldap_r にリンクされた MongoDB 4.2 Enterprise バイナリの場合、前の MongoDB バージョンから動作に変更はありません。

LDAP認可なしで LDAP認証を使用する場合、ユーザー管理には LDAPサーバーとMongoDBサーバーの両方でユーザーを管理する必要があります。MongoDBでは、LDAP 経由で認証するユーザーごとに、名前が認証ユーザー名と完全に一致する $externalデータベースのユーザーが必要です。LDAPサーバー上のユーザーを変更するには、対応するMongoDB $external ユーザーを変更する必要がある場合があります。

$external認証ユーザー(Kerberos、LDAP、または x.509 ユーザー)でクライアント セッションと因果整合性の保証を使用するには、ユーザー名を 10k バイトより大きくすることはできません。

ユーザーはsam@dba.example.comとして認証します。 MongoDB サーバーは LDAP サーバーにバインドし、任意のusername transformationsに基づいてユーザーを認証します。 認証が成功すると、MongoDB サーバーは次に$externalデータベースでユーザーsam@dba.example.comを確認し、そのユーザーに関連付けられたロールと特権を認証されたユーザーに付与します。

MongoDB サーバー上のユーザーを管理するには、対応する MongoDB $externalユーザーが$externalデータベースに対してユーザー管理特権( userAdminによって提供されるものなど)を持つ LDAP ユーザーとして認証する必要があります。

重要

$externalデータベースでユーザー管理特権を持つ$externalユーザーがいない場合、LDAP 認証のユーザー管理を実行することはできません。 このシナリオは、LDAP 認証を有効にする前にユーザーを設定し、適切なユーザー管理者を作成しない場合に発生することがあります。

$externalデータベースに 存在しない既存のユーザーが存在する場合、継続的なアクセスを保証するには、各ユーザーに対して次の要件を満たす必要があります。

  • ユーザーは LDAP サーバー上に対応するユーザー オブジェクトを持っています。

  • 同等のロールと特権を持つユーザーは$externalデータベースに存在

$externalデータベースに 存在しないユーザーによるアクセスを引き続き許可する場合は、必要に応じてSCRAM-SHA-1SCRAM-SHA-256を含むようにsetParameter authenticationMechanismsを構成する必要があります。 その後、ユーザーは認証時に--authenticationMechanism SCRAM-SHA-1またはSCRAM-SHA-256を指定する必要があります。

レプリカセット の場合は、 プライマリ を構成する前に、まず セカンダリ ノードと アービタ ノードで LDAP 認証を構成します。これは、シャード レプリカセット、またはコンフィギュレーションサーバー レプリカセットにも適用されます。 書き込みの可用性のために大多数のノードを維持するには、一度に 1 つのレプリカセット ノードを構成します。

シャーディングされたクラスターでは、 コンフィギュレーションサーバーとクラスター レベルのユーザーに対して各mongosで LDAP 認証を構成する必要があります。 オプションとして、シャード ローカル ユーザーに対し、各シャードで LDAP 認可を構成できます。

OS ライブラリ経由の LDAP 認証プロセスの概要は次のとおりです。

  1. クライアントは MongoDB に認証を行い、ユーザーの認証情報を提供します。

  2. LDAP サーバーにバインディングする前にユーザー名を LDAP DN にマッピングする必要がある場合、MongoDB は構成されたsecurity.ldap.userToDNMapping設定に基づいて変換を適用できます。

  3. MongoDB は、指定されたユーザー名を使用して、または変換が適用された場合は変換されたユーザー名を使用して、 security.ldap.serversで指定された LDAP サーバーにバインドします。

    MongoDB はデフォルトで単純バインディングを使用しますが、 security.ldap.bind.methodsecurity.ldap.bind.saslMechanismsで構成されている場合はsaslバインディングを使用することもできます。

    変換に LDAP サーバーをクエリする必要がある場合、または LDAP サーバーが匿名バインドを許可していない場合、MongoDB は提供されたユーザー認証情報の認証を試みる前に、 security.ldap.bind.queryUsersecurity.ldap.bind.queryPasswordに指定されたユーザー名とパスワードを使用して LDAP サーバーにバインドします。

  4. LDAP サーバーは MongoDB へのバインド試行の結果を返します。 成功すると、MongoDB はユーザーの認可を試みます。

  5. MongoDB サーバーはユーザー名を$externalデータベースのユーザーにマッピングし、一致するユーザーに関連付けられたロールまたは特権をそのユーザーに割り当てます。 MongoDB が一致するユーザーを 見つけられない場合 、認証は失敗します。

  6. クライアントは、MongoDB が認証されたユーザーにロールまたは特権を付与したアクションを実行できます。

オペレーティング システム ライブラリ経由の認証に LDAP を使用するには、 mongodまたはmongos構成ファイルの一部として次の設定を指定します。

オプション
説明
必須

host[:port] 形式の、引用符で囲まれカンマで区切りられた LDAP サーバーのリスト。

LDAP サーバーの前にsrv:srv_raw:を付けることができます。

接続stringで "srv:<DNS_NAME>" が指定されている場合、 mongodは Active Directory をサポートする SRV に "_ldap._tcp.gc._msdcs.<DNS_NAME>" が存在することを確認します。 見つからない場合、 mongodは SRV に"_ldap._tcp.<DNS_NAME>"が存在することを確認します。 SRV レコードが見つからない場合、 mongodは代わりに"srv_raw:<DNS_NAME>"を使用するように警告します。

接続stringで "srv_raw:<DNS_NAME>" が指定されている場合、 mongod"<DNS NAME>" の SRV レコード検索を実行します。

はい

mongod または mongos が LDAP サーバーに認証またはバインドする方法を指定するために使用されます。security.ldap.bind.saslMechanisms で定義されている SASL プロトコルの 1 つを使用するには、sasl を指定します。

デフォルトは simple です。

いいえ。ただし、LDAP サーバーへのバインディングに sasl を使用する場合を除きます。

LDAP サーバーへの認証またはバインディング時に mongod または mongos が使用できる SASL メカニズムを指定するために使用されます。MongoDB と LDAP サーバーは少なくとも 1 つの SASL メカニズムに同意する必要があります。

デフォルトは DIGEST-MD5 です。

いいえ。ただし、 methodsasl設定し、別の SASL メカニズムまたは追加の SASL メカニズムが必要な場合を除きます。

識別名(DN)または SASL 名によって識別される LDAP エンティティで、MongoDB サーバーは LDAP サーバーに接続するときに認証またはバインドします。

queryPassword と一緒に使用します。

指定されたユーザーには、LDAP サーバーでクエリを実行するための適切な特権が必要です。

いいえ。ただし、 userToDNMapping変換の一部としてクエリを指定する場合、または LDAP サーバーのセキュリティ設定で匿名バインドが許可されていない場合を除きます。

Windows MongoDB 配置では、LDAP サーバーに接続するときに、認証またはバインディングで queryUserqueryPassword の代わりにオペレーティング システムの認証情報を使用できます。

いいえ。ただし、queryUserqueryPassword を置き換える場合を除きます。

クライアントは、構成されたbind methodに期待される形式と互換性のないユーザー名を使用して認証する場合があります。 たとえば、 simpleバインディングでは完全な LDAP DN が必要ですが、MongoDB への認証に使用されるユーザー名はメールアドレスである場合があります。

userToDNMapping によって、MongoDB は受信したユーザー名を LDAP スキーマと互換性のある形式に変換できます。 MongoDB は、 置換テンプレートまたは LDAP クエリ テンプレートのいずれかを使用した変換をサポートしています。

変換の一部として LDAP クエリを使用するuserToDNMapping変換を指定する場合は、LDAP サーバーに対する適切なレベルの権限を持つqueryUserも指定する必要があります

いいえ。ただし、クライアントが変換を必要とするユーザー名を使用して認証する場合を除きます。

警告

MongoDB Enterprise for Windows はsaslauthd経由のバインディングをサポートしていません。

  • Linux MongoDB サーバーは、 saslauthdデーモンを介した LDAP サーバーへのバインディングをサポートしています。

  • クライアントとサーバー間、およびsaslauthdと LDAP サーバー間で安全な暗号化または信頼できる接続を使用します。 LDAP サーバーはSASL PLAINメカニズムを使用して、プレーンテキストでデータを送受信します。 VPN などの信頼できるチャネル、TLS/SSL で暗号化された接続、または信頼できるワイヤネットワークのみを使用する必要があります。

経由で を使用して LDAP サーバーにバインドするように MongoDBsaslauthd サーバーを構成するには、次のコマンドラインmongod オプション または 次の構成ファイル設定のいずれかを使用して を起動します。

  • --auth アクセス制御を有効にする

  • --setParameter authenticationMechanismsPLAINに設定されている 、および

  • --setParameter saslauthdPathパラメータがsaslauthdインスタンスの Unix ドメイン ソケットへのパスに設定されている 。 デフォルトの Unix ドメイン ソケット パスを使用するには、空のstring "" を指定します。

配置に必要なその他のコマンドライン オプションを含めます。 mongodコマンドライン オプションに関する詳細なドキュメントについては、 mongodを参照してください。

  • security.authorizationenabledに設定し、

  • setParameter authenticationMechanismsパラメータがPLAINに設定され、かつ

  • setParameter with the saslauthdPath set to the path to the Unix-domain Socket of the saslauthd instance. デフォルトの Unix ドメイン ソケット パスを使用するには、空のstring "" を指定します。

配置に必要なその他の構成ファイル設定を含めます。 構成ファイルに関する完全なドキュメントについては、「 YAML 構成ファイル 」を参照してください。

LDAP サーバーに適したパラメータを使用してsaslauthd.confファイルを作成または更新する必要があります。 saslauthd.confのドキュメントは、このドキュメントの範囲外です。

重要

security.sasl.saslauthdSocketPathまたは--setParameter saslauthdPathに指定されたsaslauthd Unix ドメイン ソケット ファイルの親ディレクトリには、次のいずれかの読み取りおよび実行( r-x )権限が付与されている必要があります。

  • mongodまたはmongosを起動するユーザー、または

  • そのユーザーが属するグループ。

mongodまたはmongosは、 saslauthdディレクトリとその内容に対する指定された権限がなければ、 saslauthd経由で正常に認証できません。

次のチュートリアルでは、 saslauthd.confを 2 つの一般的な LDAP サービスで動作するように構成する方法に関する基本情報を提供します。

作成ガイダンスについては、 saslauthdおよび特定の LDAP サービスのドキュメントを参照してください。

LDAP 認証経由で MongoDB サーバーで認証するには、次のパラメータを使用して$externalデータベースでdb.auth()を使用します。

オプション
説明

username

認証するユーザー名。

password

認証に使用するパスワード。

mechanism

PLAIN に設定します。

戻る

Kerberos 認証と Active Directory 認証を使用した自己管理型 MongoDB の構成