MongoDB Enterpriseは、 LDAP(Lightweight Directory Access Protocol)サービスへの認証リクエストのプロキシ機能をサポートしています。
MongoDB は LDAP サーバーへのシンプル バインディングと SASL バインディングをサポートしています。
via | 説明 |
|---|---|
オペレーティング システム ライブラリ | MongoDB はオペレーティング システム ライブラリ経由の LDAP サーバーへのバインディングをサポートしています。 これにより、Linux および Windows 上の MongoDB サーバーは認証に LDAP サーバーを使用できるようになります。 以前のバージョンでは、Microsoft Windows 上の MongoDB は LDAP サーバーに接続できません。 |
| Linux 上の MongoDB サーバーは、 Windows 上の MongoDB では使用できません。 |
Considerations
LDAP の完全な説明は、このドキュメントの範囲外です。このページは LDAP に関する予備知識を前提としています。
このドキュメントは、MongoDB LDAP 認証についてのみ説明し、LDAP 上の他のリソースを置き換えるものではありません。 LDAP 認証を設定する前に、LDAP とそれに関連する事柄について十分に理解することをお勧めします。
MongoDBは、MongoDBの配置向けの LDAP 認証の最適な構成のためのプロフェッショナル サービスを提供できます。
接続プール
認証および承認のために LDAP サーバーに接続する場合、MongoDB はデフォルトで次のことを行います。
次の場合は、接続プーリングを使用します。
Windows の場合または
MongoDB Enterprise バイナリがlibldap_r にリンクされている Linux の場合。
次の場合は、接続プーリングを使用しません。
MongoDB Enterprise バイナリがlibldap にリンクされている Linux の場合。
接続プーリングの動作を変更するには、 ldapUseConnectionPoolパラメータをアップデートします。
saslauthd およびディレクトリ権限
重要
security.sasl.saslauthdSocketPathまたは--setParameter saslauthdPathに指定されたsaslauthd Unix ドメイン ソケット ファイルの親ディレクトリには、次のいずれかの読み取りおよび実行( r-x )権限が付与されている必要があります。
mongodまたはmongosは、 saslauthdディレクトリとその内容に対する指定された権限がなければ、 saslauthd経由で正常に認証できません。
libldap および libldap_r
libldap にリンクされた MongoDB 4.2 Enterprise バイナリ(RHEL で実行している場合など)の場合、libldap へのアクセスは同期され、パフォーマンスおよびレイテンシのコストが発生します。
libldap_r にリンクされた MongoDB 4.2 Enterprise バイナリの場合、前の MongoDB バージョンから動作に変更はありません。
MongoDB サーバーでの LDAP ユーザーの管理
LDAP認可なしで LDAP認証を使用する場合、ユーザー管理には LDAPサーバーとMongoDBサーバーの両方でユーザーを管理する必要があります。MongoDBでは、LDAP 経由で認証するユーザーごとに、名前が認証ユーザー名と完全に一致する $externalデータベースのユーザーが必要です。LDAPサーバー上のユーザーを変更するには、対応するMongoDB $external ユーザーを変更する必要がある場合があります。
$external認証ユーザー(Kerberos、LDAP、または X.509 ユーザー)でクライアント セッションと因果整合性の保証を使用するには、ユーザー名を 10 k バイトより大きくすることはできません。
例
ユーザーはsam@dba.example.comとして認証します。 MongoDB サーバーは LDAP サーバーにバインドし、任意のusername transformationsに基づいてユーザーを認証します。 認証が成功すると、MongoDB サーバーは次に$externalデータベースでユーザーsam@dba.example.comを確認し、そのユーザーに関連付けられたロールと特権を認証されたユーザーに付与します。
MongoDB サーバー上のユーザーを管理するには、対応する MongoDB $externalユーザーが$externalデータベースに対してユーザー管理特権( userAdminによって提供されるものなど)を持つ LDAP ユーザーとして認証する必要があります。
重要
$externalデータベースでユーザー管理特権を持つ$externalユーザーがいない場合、LDAP 認証のユーザー管理を実行することはできません。 このシナリオは、LDAP 認証を有効にする前にユーザーを設定し、適切なユーザー管理者を作成しない場合に発生することがあります。
既存の非 LDAP ユーザーの管理
$externalデータベースに 存在しない既存のユーザーが存在する場合、継続的なアクセスを保証するには、各ユーザーに対して次の要件を満たす必要があります。
ユーザーは LDAP サーバー上に対応するユーザー オブジェクトを持っています。
同等のロールと特権を持つユーザーは
$externalデータベースに存在
$externalデータベースに 存在しないユーザーによるアクセスを引き続き許可する場合は、必要に応じてSCRAM-SHA-1やSCRAM-SHA-256を含むようにsetParameter authenticationMechanismsを構成する必要があります。 その後、ユーザーは認証時に--authenticationMechanism SCRAM-SHA-1またはSCRAM-SHA-256を指定する必要があります。
レプリカセットでの LDAP 認証の配置
レプリカセット の場合は、 プライマリ を構成する前に、まず セカンダリ ノードと アービタ ノードで LDAP 認証を構成します。これは、シャード レプリカセット、またはコンフィギュレーションサーバー レプリカセットにも適用されます。 書き込みの可用性のために大多数のノードを維持するには、一度に 1 つのレプリカセット ノードを構成します。
シャーディングされたクラスターでの LDAP 認証の配置
シャーディングされたクラスターでは、 コンフィギュレーションサーバーとクラスター レベルのユーザーに対して各mongosで LDAP 認証を構成する必要があります。 オプションとして、シャード ローカル ユーザーに対し、各シャードで LDAP 認可を構成できます。
オペレーティング システムの LDAP ライブラリ経由の LDAP 認証
OS ライブラリ経由の LDAP 認証プロセスの概要は次のとおりです。
クライアントは MongoDB に認証を行い、ユーザーの認証情報を提供します。
LDAP サーバーにバインディングする前にユーザー名を LDAP DN にマッピングする必要がある場合、MongoDB は構成された
security.ldap.userToDNMapping設定に基づいて変換を適用できます。MongoDB は、指定されたユーザー名を使用して、または変換が適用された場合は変換されたユーザー名を使用して、
security.ldap.serversで指定された LDAP サーバーにバインドします。MongoDB はデフォルトで単純バインディングを使用しますが、
security.ldap.bind.methodとsecurity.ldap.bind.saslMechanismsで構成されている場合はsaslバインディングを使用することもできます。変換に LDAP サーバーをクエリする必要がある場合、または LDAP サーバーが匿名バインドを許可していない場合、MongoDB は提供されたユーザー認証情報の認証を試みる前に、
security.ldap.bind.queryUserとsecurity.ldap.bind.queryPasswordに指定されたユーザー名とパスワードを使用して LDAP サーバーにバインドします。LDAP サーバーは MongoDB へのバインド試行の結果を返します。 成功すると、MongoDB はユーザーの認可を試みます。
MongoDB サーバーはユーザー名を
$externalデータベースのユーザーにマッピングし、一致するユーザーに関連付けられたロールまたは特権をそのユーザーに割り当てます。 MongoDB が一致するユーザーを 見つけられない場合 、認証は失敗します。クライアントは、MongoDB が認証されたユーザーにロールまたは特権を付与したアクションを実行できます。
オペレーティング システム ライブラリ経由の認証に LDAP を使用するには、 mongodまたはmongos構成ファイルの一部として次の設定を指定します。
オプション | 説明 | 必須 |
|---|---|---|
LDAP サーバーの前に 接続stringで 接続stringで | はい | |
デフォルトは | いいえ。ただし、LDAP サーバーへのバインディングに | |
いいえ。ただし、 | ||
識別名(DN)または SASL 名によって識別される LDAP エンティティで、MongoDB サーバーは LDAP サーバーに接続するときに認証またはバインドします。
指定されたユーザーには、LDAP サーバーでクエリを実行するための適切な特権が必要です。 | いいえ。ただし、 | |
いいえ。ただし、 | ||
Windows MongoDB 配置では、LDAP サーバーに接続するときに、認証またはバインディングで | いいえ。ただし、 | |
クライアントは、構成された
変換の一部として LDAP クエリを使用する | いいえ。ただし、クライアントが変換を必要とするユーザー名を使用して認証する場合を除きます。 |
による LDAP 認証 saslauthd
警告
MongoDB Enterprise for Windows はsaslauthd経由のバインディングをサポートしていません。
Considerations
Linux MongoDB サーバーは、
saslauthdデーモンを介した LDAP サーバーへのバインディングをサポートしています。クライアントとサーバー間、および
saslauthdと LDAP サーバー間で安全な暗号化または信頼できる接続を使用します。 LDAP サーバーはSASL PLAINメカニズムを使用して、プレーンテキストでデータを送受信します。 VPN などの信頼できるチャネル、TLS/SSL で暗号化された接続、または信頼できるワイヤネットワークのみを使用する必要があります。
構成
経由で を使用して LDAP サーバーにバインドするように MongoDBsaslauthd サーバーを構成するには、次のコマンドラインmongod オプション または 次の構成ファイル設定のいずれかを使用して を起動します。
--authアクセス制御を有効にする--setParameterauthenticationMechanismsがPLAINに設定されている 、および--setParametersaslauthdPathパラメータがsaslauthdインスタンスの Unix ドメイン ソケットへのパスに設定されている 。 デフォルトの Unix ドメイン ソケット パスを使用するには、空のstring""を指定します。
配置に必要なその他のコマンドライン オプションを含めます。 mongodコマンドライン オプションに関する詳細なドキュメントについては、 mongodを参照してください。
security.authorizationをenabledに設定し、setParameterauthenticationMechanismsパラメータがPLAINに設定され、かつsetParameterwith thesaslauthdPathset 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は、 saslauthdディレクトリとその内容に対する指定された権限がなければ、 saslauthd経由で正常に認証できません。
次のチュートリアルでは、 saslauthd.confを 2 つの一般的な LDAP サービスで動作するように構成する方法に関する基本情報を提供します。
作成ガイダンスについては、 saslauthdおよび特定の LDAP サービスのドキュメントを参照してください。
LDAP 認証経由で MongoDB サーバーに接続する
LDAP 認証経由で MongoDB サーバーで認証するには、次のパラメータを使用して$externalデータベースでdb.auth()を使用します。
オプション | 説明 |
|---|---|
| 認証するユーザー名。 |
| 認証に使用するパスワード。 |
|
|