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

ActiveDirectory で自己管理型 SASL と LDAP を使用して認証

項目一覧

  • Considerations
  • 構成する saslauthd
  • MongoDB の設定

注意

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

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

MongoDB Enterprise provides support for proxy authentication of users. これにより、管理者は、指定された LDAP(Lightweight Directory Access Protocol)サービスへの認証リクエストをプロキシすることで、ユーザーを認証するように MongoDB クラスターを構成できます。

注意

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

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

警告

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

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

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

ユーザー認証の LDAP サポートには、 saslauthdデーモン プロセスと MongoDB サーバーを適切に構成する必要があります。

1

Red Hat Enterprise Linux、Fedlas、CentOS、Amazon Linux AMI など、 /etc/sysconfig/saslauthdファイルを使用してsaslauthdを構成するシステムでは、メカニズムMECHldapに設定します。

MECH=ldap

/etc/default/saslauthdファイルを使用してsaslauthdを構成するシステム(Ubuntu など)では、 MECHANISMSオプションをldapに設定します。

MECHANISMS="ldap"
2

特定の Linux ディストリビューションでは、 saslauthdは 認証情報のキャッシュ を有効にして起動します。 が再起動されるまで、またはキャッシュの有効期限が切れるまで、 saslauthdは LDAP サーバーに接続して、認証キャッシュ内のユーザーを再認証しません。 これにより、LDAP サーバーがダウンしている場合や、キャッシュされたユーザーの認証情報が取り消されている場合でも、 saslauthdはキャッシュ内のユーザーを正常に認証できます。

認証キャッシュの有効期限(秒単位)を設定するには、 -t オプション saslauthdを参照してください。 の

3

saslauthd.confファイルが存在しない場合は、作成します。 saslauthd.confファイルは通常、 /etcフォルダーにあります。 別のファイルパスを指定する場合は、 -O オプション を参照してくださいsaslauthd

ActiveDirectory で使用するには、 saslauthd.confファイルに次の構成オプションを設定してsaslauthdを起動します。

ldap_servers: <ldap uri>
ldap_use_sasl: yes
ldap_mech: DIGEST-MD5
ldap_auth_method: fastbind

<ldap uri>には、LDAP サーバーの URI を指定します。 たとえば、 ldap_servers: ldaps://ad.example.net

saslauthd構成の詳細については、 http://www.openldap.org/doc/admin24 /guide.html#Cconfig saslauthd を参照してください 。

4

testsaslauthdユーティリティを使用して、 saslauthdの構成をテストします。 例:

testsaslauthd -u testuser -p testpassword -f /var/run/saslauthd/mux
  • 0: OK "Success" は、認証が成功したことを示します。

  • 0: NO "authentication failed" は、ユーザー名、パスワード、または設定エラーを示します。

ホスト オペレーティング システム上のsaslauthdディレクトリのロケーションに応じてファイルパスを変更します。

重要

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

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

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

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

1

MongoDB の$externalデータベースにユーザーを追加します。 ユーザーの特権を指定するには、ユーザーにロールを割り当てます。

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

たとえば、次の例では、 recordsデータベースへの読み取り専用アクセス権を持つユーザーを追加します。

db.getSiblingDB("$external").createUser(
{
user : <username>,
roles: [ { role: "read", db: "records" } ]
}
)

必要に応じて、追加のプリンシパルを追加します。 ユーザーの作成と管理の詳細については、「ユーザー管理コマンド 」を参照してください。

2

プロキシ認証にsaslauthdインスタンスを使用するように MongoDB サーバーを構成するには、 mongodの起動時に次のオプションを含めます。

  • --authコマンドライン オプションまたはsecurity.authorization設定

  • authenticationMechanismsパラメータをPLAINに設定し、かつ

  • saslauthdPathパラメータは、 saslauthdインスタンスの Unix ドメイン ソケットへのパスに設定されます。

    重要

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

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

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

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

認証を強制するには、 authorizationオプションを使用する場合、ユーザーを作成するには特権が必要です。

/<some>/<path>/saslauthdのソケット パスの場合は、次のコマンドラインの例のように、 saslauthdPath/<some>/<path>/saslauthd/muxに設定します。

mongod --auth --setParameter saslauthdPath=/<some>/<path>/saslauthd/mux --setParameter authenticationMechanisms=PLAIN

構成に必要な追加オプションを含めます。 たとえば、リモート クライアントを配置に接続する場合、または配置ノードを異なるホスト上で実行する場合は、 --bind_ipを指定します。

または、 YAML 形式の構成ファイルを使用する場合は、ファイルに次の設定を指定します。

security:
authorization: enabled
setParameter:
saslauthdPath: /<some>/<path>/saslauthd/mux
authenticationMechanisms: PLAIN

または、古い構成ファイル形式を使用している場合は、以下を実行します。

auth=true
setParameter=saslauthdPath=/<some>/<path>/saslauthd/mux
setParameter=authenticationMechanisms=PLAIN

デフォルトの Unix ドメイン ソケット パスを使用するには、次のコマンドラインの例のように、 saslauthdPathに空のstring "" を設定します。

mongod --auth --setParameter saslauthdPath="" --setParameter authenticationMechanisms=PLAIN

構成に必要な追加オプションを含めます。 たとえば、リモート クライアントを配置に接続する場合、または配置ノードを異なるホスト上で実行する場合は、 --bind_ipを指定します。

または、 YAML 形式の構成ファイルを使用する場合は、ファイルに次の設定を指定します。

security:
authorization: enabled
setParameter:
saslauthdPath: ""
authenticationMechanisms: PLAIN

または、古い構成ファイル形式を使用している場合は、以下を実行します。

auth=true
setParameter=saslauthdPath=""
setParameter=authenticationMechanisms=PLAIN

構成に必要な追加オプションを含めます。 たとえば、リモート クライアントを使用して配置に接続する場合や、配置ノードを異なるホスト上で実行する場合は、 net.bindIp設定を指定します。

3

接続中にコマンドラインから認証することも、最初に接続してからdb.auth()メソッドを使用して認証することもできます。

mongoshで接続するときに認証するには、次のコマンドライン オプションを使用してmongoshを実行し、 <host><user>を置き換え、パスワードの入力を求められたら入力します。

mongosh --host <host> --authenticationMechanism PLAIN --authenticationDatabase '$external' -u <user> -p

または、認証情報を指定せずに接続し、 $externalデータベースでdb.auth()メソッドを呼び出します。 "PLAIN"mechanismフィールドに値user pwd、それぞれ フィールドと フィールドにユーザーとパスワードを指定します。次の例のように、サーバーはsaslauthdに転送するためにダイジェスト化されていないパスワードを受信する必要があるため、デフォルトのdigestPassword値( false )を使用します。

Tip

passwordPrompt() メソッドを様々なユーザー認証管理メソッドやコマンドと組み合わせて使用すると、メソッドやコマンドの呼び出しでパスワードを直接指定する代わりに、パスワードの入力を求めるプロンプトが表示されます。ただし、以前のバージョンの mongo シェルと同様に、パスワードを直接指定することもできます。

db.getSiblingDB("$external").auth(
{
mechanism: "PLAIN",
user: <username>,
pwd: passwordPrompt() // or cleartext password
}
)

パスワードの入力を求められたら、入力します。

サーバーはパスワードをプレーン テキストで転送します。 一般に、 は信頼できるチャネル(VPN、TLS/SSL、信頼できるワイヤネットワーク)でのみ使用します。 「 考慮事項 」を参照してください。

戻る

LDAPプロキシ