mongoldap
MongoDB Enterprise
注意
MongoDB 8.0以降、 LDAP認証と認可は非推奨です。 LDAP は使用可能であり、 MongoDB 8のサポート期間中に変更されずに動作し続けます。 LDAP は将来のメジャー リリースで削除される予定です。
詳しくは、「 LDAP の非推奨」を参照してください。
Synopsis
MongoDB Enterprise は、実行中のmongoldap
LDAP サーバーまたはサーバー セットに対して MongoDB の LDAP 構成オプション をテストするための を提供します。
構成ファイルで LDAP オプションを検証するには、構成ファイルのパスにmongoldap
--config
オプションを設定します。
LDAP 構成オプションをテストするには、 --user
と--password
を指定する必要があります。 mongoldap
は、提供された構成オプションと認証情報で実行されている MongoDB サーバーへの認証をシミュレートします。
mongoldap
は、 LDAP 認証または認可 の手順の任意のステップの成功または失敗を含むレポートを返します。 エラー メッセージには、発生した特定のエラーに関する情報と、エラーを解決するための潜在的なアドバイスが含まれます。
LDAP 認可に関連するオプションを構成する場合、 mongoldap
は指定された構成オプションとユーザー名を使用して構築された LDAP クエリを実行し、ユーザーが認可されているadmin
データベース上のロールのリストを返します。
この情報は、ユーザー アクセス制御のためにLDAP 認可ロールを構成するときに使用できます。 たとえば、 mongoldap
を使用して、特権ユーザーが期待されるタスクを実行するために必要なロールを取得できるように構成します。 同様に、 mongoldap
を使用して、特権のないユーザーが MongoDB サーバーにアクセスするためのロールを取得したり、不正なアクションを実行したりすることを許可しない構成にします。
LDAP 認証に関連するオプションを構成する場合、認証操作が期待どおりに機能するようにするには、 mongoldap
を使用します。
mongosh
ではなく、システムコマンドラインからmongoldap
を実行します
このドキュメントでは、 mongoldap
の全コマンド ライン オプションに関する全体像を説明します。
インストール
mongoldap
ツールはMongoDB Database Tools Extraパッケージの一部であり、MongoDB Server を使用してまたはスタンドアロン インストールとしてインストールできます。
サーバーを使用したインストール
MongoDB Enterprise Server インストールの一部としてmongoldap
をインストールするには次のようにします。
プラットフォームの手順に従ってください: MongoDB Enterprise Server をインストールする
インストールが完了すると、
mongoldap
およびその他の含まれるツールは、サーバーと同じロケーションで利用できるようになります。注意
Windows
.msi
インストーラー ウィザードの場合、 Completeインストール オプションにはmongoldap
が含まれます。
スタンドアロンとしてインストール
mongoldap
をスタンドアロン インストールとしてインストールするには:
MongoDB Enterpriseのダウンロード リンクをクリックしますMongoDB Enterpriseダウンロード センター
ドロップダウン メニューからPlatform (オペレーティング システム)を選択し、次のチャートに従ってプラットフォームに適したPackageを選択します。
OSパッケージLinuxtgz
パッケージWindowszip
パッケージMacOStgz
パッケージダウンロードしたら、アーカイブを解凍し、
mongoldap
をハードドライブのロケーションにコピーします。Tip
Linux と macOS ユーザーは、
$PATH
環境変数で定義されているファイルシステムのロケーション/usr/bin
など)にmongoldap
をコピーする場合があります。 こうすると、フルパスを指定したり、最初に親ディレクトリに移動したりすることなく、コマンドラインでmongoldap
を名前で直接参照できるようになります。 詳細については、ご使用プラットフォームのインストール ガイドを参照してください。
使用法
注意
LDAP または Active Directory の完全な説明は、このドキュメントの範囲外です。
Active Directory 経由の LDAP 認証と認可をサポートするように設計された次のサンプル構成ファイルについて考えてみます。
security: authorization: "enabled" ldap: servers: "activedirectory.example.net" bind: queryUser: "mongodbadmin@dba.example.com" queryPassword: "secret123" userToDNMapping: '[ { match : "(.+)", ldapQuery: "DC=example,DC=com??sub?(userPrincipalName={0})" } ]' authz: queryTemplate: "DC=example,DC=com??sub?(&(objectClass=group)(member:1.2.840.113556.1.4.1941:={USER}))" setParameter: authenticationMechanisms: "PLAIN"
mongoldap
を使用して構成ファイルを検証し、手順のレポートを返すことができます。 mongoldap
のユーザー名とパスワードを指定する必要があります。
mongoldap --config=<path-to-config> --user="bob@dba.example.com" --password="secret123"
提供された認証情報が有効で、構成ファイルの LDAP オプションが有効な場合、出力は次のようになります。
Checking that an LDAP server has been specified... [OK] LDAP server found Connecting to LDAP server... [OK] Connected to LDAP server Parsing MongoDB to LDAP DN mappings.. [OK] MongoDB to LDAP DN mappings appear to be valid Attempting to authenticate against the LDAP server... [OK] Successful authentication performed Checking if LDAP authorization has been enabled by configuration... [OK] LDAP authorization enabled Parsing LDAP query template.. [OK] LDAP query configuration template appears valid Executing query against LDAP server... [OK] Successfully acquired the following roles: ...
動作
MongoDB 5.1 以降、 mongoldap
は LDAP サーバーに対しsrv:
とsrv_raw:
のプレフィックス作成をサポートしています。
接続stringで "srv:<DNS_NAME>"
が指定されている場合、mongoldap
は Active Directory をサポートする SRV に "_ldap._tcp.gc._msdcs.<DNS_NAME>"
が存在することを確認します。 見つからない場合、 mongoldap
は SRV に"_ldap._tcp.<DNS_NAME>"
が存在することを確認します。 SRV レコードが見つからない場合、 mongoldap
は代わりに"srv_raw:<DNS_NAME>"
を使用するように警告します。
接続stringで "srv_raw:<DNS_NAME>"
が指定されている場合、mongoldap
は "<DNS NAME>"
の SRV レコード検索を実行します。
オプション
--config=<filename>, -f=<filename>
ランタイム設定オプション用の構成ファイルを指定します。 オプションは、コマンドラインの設定オプションと同じです。 詳細については、 自己管理型構成ファイルのオプションを参照してください。
mongoldap
は、LDAP 認証または認可をテストするために、 自己管理型 LDAP プロキシ認証または自己管理型配置での LDAP 認可に関連する構成オプションを使用します。--user
を指定する必要があります。 LDAP 認証のテストに--password
を受け入れる可能性があります。構成ファイルでは ASCII エンコードを使用するようにしてください。
mongoldap
インスタンスは、UTF- 8など、非 ASCII エンコードの構成ファイルをサポートしていません。
--user=<string>
LDAP 認証または認可を試行するときに使用する
mongoldap
のユーザー名。
--ldapServers=<host1>:<port>,<host2>:<port>,...,<hostN>:<port>
mongoldap
がユーザーを認証したり、特定のデータベースでユーザーが実行できるアクションを決定したりするための LDAP サーバー。 指定した LDAP サーバーにレプリケーションされたインスタンスがある場合は、各複製サーバーのホストとポートをコンマ区切りのリストで指定できます。LDAP インフラストラクチャが LDAP ディレクトリを複数の LDAP サーバーに分割する場合は、 1 つ のLDAP サーバーまたはその複製されたインスタンスのいずれかを
--ldapServers
に指定します。 MongoDB は、 RFC45114.1 で定義されている以下の LDAP10 紹介をサポートしています。 。インフラストラクチャ内のすべての LDAP サーバーを一覧表示するために、--ldapServers
は使用 しない でください。設定されていない場合、
mongoldap
はLDAP 認証または認可 を使用できません。
--ldapQueryUser=<string>
MongoDB Enterprise でのみ使用できます。
LDAP サーバーに接続するとき、または LDAP サーバーでクエリを実行するときに、
mongoldap
がバインドする ID 。次のいずれかに当てはまる場合にのみ必要です。
LDAP 承認を使用している
username transformation
には LDAP クエリを使用します。LDAP サーバーが匿名バインドを許可していない
--ldapQueryPassword
では--ldapQueryUser
を使用する必要があります設定されていない場合、
mongoldap
は LDAP サーバーへのバインドを試行しません。注意
Windows MongoDB 配置では、
--ldapBindWithOSDefaults
--ldapQueryUser
--ldapQueryPassword
と の代わりに使用できます。--ldapQueryUser
と--ldapBindWithOSDefaults
の両方を同時に指定することはできません。
MongoDB Enterprise でのみ使用できます。
--ldapQueryUser
を使用するときに LDAP サーバーにバインドするために使用されるパスワード。 --ldapQueryUser
では--ldapQueryPassword
を使用する必要があります
設定しない場合、 mongoldap
は LDAP サーバーへのバインドを試行しません。
この設定は実行中のmongoldap
でsetParameter
を使用して構成できます。
ldapQueryPassword
setParameter
コマンドは、文字列または文字列の配列のいずれかを受け付けます。ldapQueryPassword
が配列に設定されている場合、MongoDB は成功するまで各パスワードを順番に試行します。パスワード配列を使用して、LDAP アカウントのパスワードをダウンタイムなしでロールオーバーします。
注意
Windows MongoDB 配置では、--ldapBindWithOSDefaults
--ldapQueryUser
--ldapQueryPassword
と の代わりに使用できます。--ldapQueryPassword
と--ldapBindWithOSDefaults
の両方を同時に指定することはできません。
--ldapBindWithOSDefaults=<bool>
デフォルト: false
Windows プラットフォームの MongoDB Enterprise でのみ利用可能です。
LDAP サーバーに接続するときに Windows のログイン認証情報を使用して認証またはバインドできるようにし
mongoldap
。次の場合にのみ必要です。
LDAP 承認を使用している
username transformation
には LDAP クエリを使用します。LDAP サーバーが匿名バインドを許可していない
--ldapBindWithOSDefaults
--ldapQueryUser
と を置き換えるには、--ldapQueryPassword
を使用します。
--ldapBindMethod=<string>
デフォルト: simple
MongoDB Enterprise でのみ使用できます。
mongoldap
が LDAP サーバーへの認証に使用する方法。 LDAP サーバーに接続するには、--ldapQueryUser
と--ldapQueryPassword
とともに使用します。--ldapBindMethod
は次の値をサポートします。sasl
を指定した場合は、--ldapBindSaslMechanisms
を使用して使用可能な SASL メカニズムを構成できます。mongoldap
はデフォルトでDIGEST-MD5
メカニズムを使用します。
--ldapBindSaslMechanisms=<string>
デフォルト: DIGEST-MD5
MongoDB Enterprise でのみ使用できます。
SASL メカニズムのカンマ区切りリストは、
mongoldap
が LDAP サーバーに認証する時に使用できます。mongoldap
と LDAP サーバーは少なくとも 1 つのメカニズムに同意する必要があります。mongoldap
は、実行時にホストマシンにインストールされている SASL メカニズム ライブラリを動的に読み込みます。選択した SASL メカニズムに該当するライブラリを、
mongoldap
ホストとリモート LDAP サーバー ホストの両方にインストールして構成してください。 オペレーティング システムには、特定の SASL ライブラリがデフォルトで含まれている場合があります。 インストールと構成のガイダンスについては、各 SASL メカニズムに関連するドキュメントを参照してください。自己管理型配置で Kerberos 認証と併用するために
GSSAPI
SASL メカニズムを使用する場合は、mongoldap
ホスト マシンで次の点を確認してください。Linux
KRB5_CLIENT_KTNAME
環境変数は、ホスト マシン用のクライアントLinux キータブ ファイルの名前に解決されます。 Kerberos 環境変数の詳細については、 Kerberos のドキュメント を参照してください。クライアントキータブには、LDAP サーバーに接続して LDAP クエリを実行するときに使用する の ユーザー プリンシパル
mongoldap
が含まれています。
Windows
- Active Directoryサーバーに接続する場合、Windows Kerberos構成により Ticket-Granting-Ticket が 自動生成されます ユーザーがシステムにログオンしたとき
--ldapBindWithOSDefaults
をtrue
に設定すると、mongoldap
は Active Directory サーバーに接続してクエリを実行するときに生成された認証情報を使用できるようになります。
このオプションを使用するには
--ldapBindMethod
をsasl
に設定します。注意
全 SASL メカニズムを網羅したリストについては、IANA のリスト を参照してください。サービスと互換性のある SASL メカニズムを特定するには、LDAP または Active Directory サービスのドキュメントを参照してください。
MongoDB は SASL メカニズム ライブラリのソースではなく、MongoDB ドキュメントも特定の SASL メカニズムのインストールや設定をするための決定的な情報源ではありません。ドキュメントとサポートについては、SASL メカニズム ライブラリのベンダーまたは管理者に問い合わせてください。
SASLの詳細については、次のリソースを参照してください。
Linux の場合は、 Cyrus SASL のドキュメントを参照してください。
Windows の場合は、 Windows SASL ドキュメント を参照してください。
--ldapTransportSecurity=<string>
デフォルト: tls
MongoDB Enterprise でのみ使用できます。
デフォルトでは、
mongoldap
は LDAP サーバーへの TLS/SSL で保護された接続を作成します。Linux 配置の場合、
/etc/openldap/ldap.conf
ファイルで適切な TLS オプションを構成する必要があります。 オペレーティング システムのパッケージ マネージャーは、libldap
依存関係を介して MongoDB Enterprise インストールの一部としてこのファイルを作成します。 ldap.conf OpenLDAP ドキュメント で のドキュメントを参照してくださいTLS Options
より完全な手順については、 を参照してください。Windows 配置の場合、LDAP サーバー CA 証明書を Windows 証明書管理ツールに追加する必要があります。ツールの正確な名前と機能は、オペレーティング システムのバージョンによって異なる場合があります。証明書管理の詳細については、ご使用の Windows バージョンのドキュメントを参照してください。
と LDAP
--ldapTransportSecurity
none
サーバー間の TLS/SSL を無効にするには、 を に設定します。mongoldap
警告
--ldapTransportSecurity
をnone
に設定すると、mongoldap
と LDAP サーバー間でプレーンテキスト情報と場合によっては認証情報が送信されます。
--ldapTimeoutMS=<int>
デフォルト: 10000
MongoDB Enterprise でのみ使用できます。
mongoldap
が LDAP サーバーからリクエストへの応答があるまで待機する時間(ミリ秒単位)。--ldapTimeoutMS
の値を増やすと、障害の原因が接続タイムアウトである場合、MongoDB サーバーと LDAP サーバー間の接続が失敗しなくなる可能性があります。--ldapTimeoutMS
の値を小さくすると、MongoDB が LDAP サーバーからの応答を待機する時間が短縮されます。
--ldapUserToDNMapping=<string>
MongoDB Enterprise でのみ使用できます。
認証用に
mongoldap
に指定されたユーザー名を LDAP 識別名(DN)にマッピングします。 次のシナリオではユーザー名を LDAP DN に変換するために--ldapUserToDNMapping
を使用する必要がある場合があります。LDAP のシンプル バインドにより LDAP 認証を実行し、ユーザーが MongoDB に対し、完全な LDAP 識別名ではないユーザー名で認証されます。
識別名を必要とする
LDAP authorization query template
を使用します。Mongo DB に認証するクライアントのユーザー名を、さまざまな認証メカニズム(例: x.509、kerberos など)を使用して、承認用の完全な LDAP DN に変換します。
--ldapUserToDNMapping
は、順序付けられたドキュメントの配列を表す引用符で囲まれた JSON 文字列を要求しています。各ドキュメントには、正規表現のmatch
と受信ユーザー名の変換に使用されるsubstitution
またはldapQuery
のテンプレートが含まれています。配列内の各ドキュメントの形式は次のとおりです。
{ match: "<regex>" substitution: "<LDAP DN>" | ldapQuery: "<LDAP Query>" } フィールド説明例match
指定されたユーザー名と照合するための ECMAScript 形式の正規表現(regex)です。かっこで囲まれた各セクションは、substitution
またはldapQuery
で使用される正規表現キャプチャ グループを表します。"(.+)ENGINEERING"
"(.+)DBA"
substitution
match
正規表現に一致する認証名を LDAP DN に変換する LDAP 識別名(DN)形式のテンプレート。 中括弧で囲まれた各数値は、対応する 正規表現キャプチャ グループ に置き換えられます 正規表現を使用して認証ユーザー名から抽出されたmatch
置換の結果は、 RFC 4514 に準拠した、エスケープされた文字列である必要があります。
"cn={0},ou=engineering, dc=example,dc=com"
ldapQuery
match
正規表現に一致する認証名を RFC 4515と RFC 4516に従ってエンコードされた LDAP クエリ URI に挿入する LDAP クエリ形式のテンプレート。 中括弧で囲まれた各数値は、対応する 正規表現キャプチャ グループ に置き換えられますmatch
式を介して認証ユーザー名から抽出された。mongoldap
は LDAP サーバーに対してクエリを実行し、認証されたユーザーの LDAP DN を検索します。mongoldap
では変換が成功するために返された結果が 1 つだけ必要になる場合があります。または、mongoldap
はこの変換をスキップします。"ou=engineering,dc=example, dc=com??one?(user={0})"
注意
配列内の各ドキュメントに対して、
substitution
またはldapQuery
のいずれかを使用する必要があります。同じ文書で両方を指定することはできません。認証または認可を実行する際、
mongoldap
は配列内の各ドキュメントを所定の順序で順番に処理し、認証ユーザー名をmatch
フィルターと照合します。 一致が見つかった場合、mongoldap
は変換を適用し、その出力をユーザーの認証に使用します。mongoldap
は配列内の残りのドキュメントはチェックしません。指定されたドキュメントが指定された認証名と一致しない場合、
mongoldap
はドキュメントのリストをさらにたどって新たに一致するものを探します。 どのドキュメントにも一致するものが見つからない場合、またはドキュメントで説明されている変換が失敗した場合、mongoldap
はエラーを返します。また、
mongoldap
は LDAP サーバーとのネットワーク接続や認証に失敗して変換の 1 つを評価できない場合にもエラーを返します。mongoldap
は接続リクエストを拒否し、配列内の残りのドキュメントをチェックしません。MongoDB 5.0 以降、マッピング ドキュメントの代わりに
--ldapUserToDNMapping
は空のstring""
または空の配列[ ]
を受け入れます。 空の string または空の配列を--ldapUserToDNMapping
に指定すると、MongoDB は認証されたユーザー名を LDAP DN としてマッピングします。 以前は、空のマッピング ドキュメントを提供するとマッピングが失敗していました。例
次に、2 つの変換ドキュメントを示しています。最初のドキュメントは
@ENGINEERING
で終わる任意の文字列と一致し、サフィックスの前にあるすべてを正規表現キャプチャ グループに配置します。2 番目のドキュメントは、@DBA
で終わる任意の文字列と一致し、サフィックスの前にあるすべてを正規表現キャプチャ グループに配置します。重要
配列を文字列として --ldapUserToDNMapping に渡す必要があります。
"[ { match: "(.+)@ENGINEERING.EXAMPLE.COM", substitution: "cn={0},ou=engineering,dc=example,dc=com" }, { match: "(.+)@DBA.EXAMPLE.COM", ldapQuery: "ou=dba,dc=example,dc=com??one?(user={0})" } ]" ユーザー名
alice@ENGINEERING.EXAMPLE.COM
のユーザーが最初のドキュメントと一致します。正規表現キャプチャ グループ{0}
は文字列alice
に対応します。結果の出力は DN"cn=alice,ou=engineering,dc=example,dc=com"
です。ユーザー名
bob@DBA.EXAMPLE.COM
のユーザーが 2 番目のドキュメントと一致します。 正規表現キャプチャ グループ{0}
は stringbob
に対応します。 結果の出力は、LDAP クエリ"ou=dba,dc=example,dc=com??one?(user=bob)"
です。mongoldap
は LDAP サーバーに対してこのクエリを実行し、結果として"cn=bob,ou=dba,dc=example,dc=com"
を返します。--ldapUserToDNMapping
が設定されていない場合、mongoldap
は、LDAP サーバーに対してユーザーを認証または承認しようとする際に、ユーザー名を変換しません。
--ldapAuthzQueryTemplate=<string>
MongoDB Enterprise でのみ使用できます。
RFC4515 に準拠した形式の相対的 LDAP クエリ URL と RFC4516 これは、認証されたユーザーが属する
mongoldap
LDAP グループを取得するために が実行するものです。クエリは、--ldapServers
で指定されたホストに対して相対的です。URL では、次の置換トークンを使用できます。
置換トークン説明{USER}
認証されたユーザー名を置き換えるか、 が指定されている場合はtransformed
username mapping
ユーザー名を置き換えます。{PROVIDED_USER}
認証またはLDAP transformation
の前に、指定されたユーザー名を置き換えます。クエリ URL を作成する際は、LDAP パラメーターの順序が次の RFC4516 に準拠しているようにします。
[ dn [ ? [attributes] [ ? [scope] [ ? [filter] [ ? [Extensions] ] ] ] ] ] クエリに属性が含まれている場合、
mongoldap
は、このエンティティがノードである DN をクエリが検索すると想定します。クエリに属性が含まれていない場合、
mongoldap
はクエリが検索するのはユーザーがメンバーであるすべてのエンティティであると想定します。クエリによって返される LDAP 識別名ごとに、
mongoldap
では認証されているユーザーに対し、admin
データベースで対応するロールを割り当てます。admin
データベースのロールが DN と完全に一致する場合、mongoldap
はそのロールに割り当てられたロールと権限をユーザーに付与します。 ロールの作成の詳細については、db.createRole()
メソッドを参照してください。例
この LDAP クエリは、LDAP ユーザー オブジェクトの
memberOf
属性にリストされているすべてのグループを返します。"{USER}?memberOf?base" LDAP 構成に、ユーザー スキーマの一部として
memberOf
属性が含まれていない場合、グループ メンバーシップのレポート作成用に別の属性がある場合、属性を通じてグループ メンバーシップを追跡していない場合があります。クエリは、独自の LDAP 設定に基づいて設定します。設定されていない場合、
mongoldap
は LDAP を使用してユーザーを認証することはできません。