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

mongoldap

項目一覧

  • Synopsis
  • インストール
  • 使用法
  • 動作
  • オプション

MongoDB Enterprise

注意

MongoDB 8.0以降、 LDAP認証と認可は非推奨です。 LDAP は使用可能であり、 MongoDB 8のサポート期間中に変更されずに動作し続けます。 LDAP は将来のメジャー リリースで削除される予定です。

詳しくは、「 LDAP の非推奨」を参照してください。

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
    パッケージ
    Linux
    tgz パッケージ
    Windows
    zip パッケージ
    MacOS
    tgz パッケージ
  • ダウンロードしたら、アーカイブを解凍し、 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のユーザー名。

--password=<string>

--usermongoldapLDAP 認証を試行するときに が使用する のパスワード。LDAP 認可には必要ありません。

--ldapServers=<host1>:<port>,<host2>:<port>,...,<hostN>:<port>

mongoldapがユーザーを認証したり、特定のデータベースでユーザーが実行できるアクションを決定したりするための LDAP サーバー。 指定した LDAP サーバーにレプリケーションされたインスタンスがある場合は、各複製サーバーのホストとポートをコンマ区切りのリストで指定できます。

LDAP インフラストラクチャが LDAP ディレクトリを複数の LDAP サーバーに分割する場合は、 1 つ のLDAP サーバーまたはその複製されたインスタンスのいずれかを--ldapServersに指定します。 MongoDB は、 RFC45114.1 で定義されている以下の LDAP10 紹介をサポートしています。 。インフラストラクチャ内のすべての LDAP サーバーを一覧表示するために、 --ldapServersは使用 しない でください。

設定されていない場合、 mongoldapLDAP 認証または認可 を使用できません。

--ldapQueryUser=<string>

MongoDB Enterprise でのみ使用できます。

LDAP サーバーに接続するとき、または LDAP サーバーでクエリを実行するときに、 mongoldapがバインドする ID 。

次のいずれかに当てはまる場合にのみ必要です。

--ldapQueryPassword では--ldapQueryUserを使用する必要があります

設定されていない場合、 mongoldapは LDAP サーバーへのバインドを試行しません。

注意

Windows MongoDB 配置では、--ldapBindWithOSDefaults--ldapQueryUser--ldapQueryPassword と の代わりに使用できます。--ldapQueryUser--ldapBindWithOSDefaultsの両方を同時に指定することはできません。

--ldapQueryPassword=<string | array>

MongoDB Enterprise でのみ使用できます。

--ldapQueryUserを使用するときに LDAP サーバーにバインドするために使用されるパスワード。 --ldapQueryUser では--ldapQueryPasswordを使用する必要があります

設定しない場合、 mongoldap は LDAP サーバーへのバインドを試行しません。

この設定は実行中のmongoldapsetParameterを使用して構成できます。

ldapQueryPassword setParameter コマンドは、文字列または文字列の配列のいずれかを受け付けます。ldapQueryPassword が配列に設定されている場合、MongoDB は成功するまで各パスワードを順番に試行します。パスワード配列を使用して、LDAP アカウントのパスワードをダウンタイムなしでロールオーバーします。

注意

Windows MongoDB 配置では、--ldapBindWithOSDefaults--ldapQueryUser--ldapQueryPassword と の代わりに使用できます。--ldapQueryPassword--ldapBindWithOSDefaultsの両方を同時に指定することはできません。

--ldapBindWithOSDefaults=<bool>

デフォルト: false

Windows プラットフォームの MongoDB Enterprise でのみ利用可能です。

LDAP サーバーに接続するときに Windows のログイン認証情報を使用して認証またはバインドできるようにしmongoldap

次の場合にのみ必要です。

--ldapBindWithOSDefaults--ldapQueryUserと を置き換えるには、--ldapQueryPassword を使用します。

--ldapBindMethod=<string>

デフォルト: simple

MongoDB Enterprise でのみ使用できます。

mongoldapが LDAP サーバーへの認証に使用する方法。 LDAP サーバーに接続するには、 --ldapQueryUser--ldapQueryPasswordとともに使用します。

--ldapBindMethod は次の値をサポートします。

説明
simple
mongoldap は簡易認証を使用する
sasl
mongoldap は認証に SASL プロトコルを使用する。

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
Windows
Active Directoryサーバーに接続する場合、Windows Kerberos構成により Ticket-Granting-Ticket が 自動生成されます ユーザーがシステムにログオンしたとき--ldapBindWithOSDefaultstrueに設定すると、 mongoldapは Active Directory サーバーに接続してクエリを実行するときに生成された認証情報を使用できるようになります。

このオプションを使用するには --ldapBindMethodsasl に設定します。

注意

全 SASL メカニズムを網羅したリストについては、IANA のリスト を参照してください。サービスと互換性のある SASL メカニズムを特定するには、LDAP または Active Directory サービスのドキュメントを参照してください。

MongoDB は SASL メカニズム ライブラリのソースではなく、MongoDB ドキュメントも特定の SASL メカニズムのインストールや設定をするための決定的な情報源ではありません。ドキュメントとサポートについては、SASL メカニズム ライブラリのベンダーまたは管理者に問い合わせてください。

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

警告

--ldapTransportSecuritynoneに設定すると、 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})"

注意

RFC4514 の説明 、 RFC4515 RFC4516 、、または LDAP クエリは MongoDB ドキュメントの範囲外です。RFC を直接確認するか、お好みの LDAP リソースを使用してください。

配列内の各ドキュメントに対して、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}は string bobに対応します。 結果の出力は、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 を使用してユーザーを認証することはできません。

注意

RFC4515 の説明 、 4516RFC または LDAP クエリは、MongoDB ドキュメントの範囲外です。RFC を直接確認するか、お好みの LDAP リソースを使用してください。

戻る

mongokerberos