AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

認証と承認の構成 mongot

このページを使用して、mongot および MongoDB Community Edition の配置の認証と承認を構成します。mongot との使用については、Kubernetes での MongoDB Search とベクトル検索 を参照してください。

mongot 2 つの異なるチャンネルを介して通信します。それぞれには固有のセキュリティ構成が必要です。

  • 同期ソース (syncSource.replicaSet, syncSource.router): mongot の MongoDB 配置へのレプリケーション用アウトバウンド接続。ここで認証メカニズムを設定すると、mongot は mongod または mongos に対して認証できるようになります。

  • gRPC サーバー (server.grpc): mongod が検索クエリとインデックスのマネジメントコマンドのために mongot に接続する受信チャンネル。mongod と mongot は mTLS を介して相互に認証します。

注意

ヘルスチェック (healthCheck) とメトリクス (metrics) のエンドポイントとなる接続されたデバイスは、TLS または認証をサポートしません。ネットワーク レイヤーでこれらのポートへのアクセスを制限します。

認証を構成する前に、次の点を確認してください。

  • 同期ソースには、SCRAM または X.509 のいずれか一方の認証メカニズムを正確に構成する必要があります。2 つのメカニズムは、各接続ブロックで互いに排他的です。

  • シャーディングされたクラスターの場合は、mongot 構成ファイルで syncSource.replicaSet と syncSource.router の両方を指定し、各接続で独立して認証を構成する必要があります。syncSource.router は syncSource.replicaSet によって暗示されないため、明示的に構成する必要があります。各シャードには専用の mongot インスタンスが必要です。

    • syncSource.replicaSet mongot インスタンスをシャードのレプリカセットにマップします。

    • syncSource.router クラスター全体の協調のための mongos 接続を提供します。

  • mongot が認証できるように、MongoDB 配置に searchCoordinator 組み込みロールが存在している必要があります。このロールは MongoDB 8.2 以降で利用できます。

次の setParameter オプションを mongod 構成ファイルに追加し、mongod を再起動します。

setParameter:
mongotHost: <host>:<port>
searchIndexManagementHostAndPort: <host>:<port>
skipAuthenticationToSearchIndexManagementServer: false
useGrpcForSearch: true

setParameter オプションは、mongod サーバーにmongot の場所と通信方法を指示するサーバー パラメータを設定します。mongot が配置に接続できるように、これらのパラメータを設定する必要があります。

mongod 構成ファイルの詳細については、「自己管理型構成ファイル オプション」を参照してください。

mongot が MongoDB 配置に認証できるように、同期ソース接続で以下の認証メカニズムのいずれかを構成します。

SCRAM authenticates mongot to your MongoDB deployment with a username and password.

mongot の SCRAM を設定するには、次の手順を実行します。

1

MongoDB レプリカセット上に searchCoordinator ロールでユーザーを作成します。

mongoshで次のコマンドを実行します。

use admin
db.createUser({
user: "mongotUser",
pwd: "<password>",
roles: [ { role: "searchCoordinator", db: "admin" } ]
})
2

<password>をパスワードに置き換え、お使いのオペレーティング システムのコマンドを実行してパスワード ファイルを作成します。ファイルには末尾の改行を含めないでください。

Linux または macOS の場合:

echo -n "<password>" > /etc/mongot/secrets/passwordFile
chmod 400 /etc/mongot/secrets/passwordFile

For Windows Command Prompt:

echo|set /p="<password>" > passwordFile

Windows Powershell向け:

[System.IO.File]::WriteAllText("passwordFile", "<password>")
3

syncSource.replicaSet の下に scramAuth ブロックを追加します。シャーディングされたクラスターの場合は、syncSource.router の下にも同じブロックを追加します。hostAndPort に複数のホストをリストすると、いずれかのホストが使用できない場合でも mongot がレプリカセットを発見できるようになります。

syncSource:
replicaSet:
hostAndPort:
- "<host1>:27017"
- "<host2>:27017"
scramAuth:
username: mongotUser
authSource: admin
passwordFile: /etc/mongot/secrets/passwordFile
tls:
enabled: false

シャーディングされたクラスターの場合は、syncSource.replicaSet と syncSource.router の両方で scramAuth を構成します。syncSource.replicaSet はシャードのレプリカセットに mongot を認証し、syncSource.router はクラスター全体の調整のために mongos に mongot を認証します。両方の接続に同じ認証情報を使用することも、独立して管理する場合は別々の認証情報を使用することもできます。

syncSource:
replicaSet:
hostAndPort:
- "<shard-host1>:27017"
- "<shard-host2>:27017"
scramAuth:
username: mongotShardUser
authSource: admin
passwordFile: /etc/mongot/secrets/shard-passwordFile
tls:
enabled: false
router:
hostAndPort:
- "<mongos1>:27017"
- "<mongos2>:27017"
scramAuth:
username: mongotRouterUser
authSource: admin
passwordFile: /etc/mongot/secrets/router-passwordFile
tls:
enabled: false

mongot 構成ファイルの詳細については、「mongot の構成」を参照してください。

4

MongoDB配置でTLSが有効になっている場合は、tls.enabledをtrueに設定し、必要に応じて次のフィールドをmongot構成ファイルに提供します。

フィールド
説明

caFile

1 つ以上の X.509 を含む PEM ファイルmongod のサーバー証明書を検証する CA 証明書。このフィールドを省略すると、mongot は JVM のデフォルトのトラスト ストアを使用します。

tlsCertificateKeyFile

クライアントの X.509 証明書と秘密キーの両方を含む PEM ファイル。mongod がクライアント証明書を検証する場合にのみ必要です。

tlsCertificateKeyFilePasswordFile

クライアント証明書キーを復号化するパスワード。tlsCertificateKeyFile がパスワード保護されている場合にのみ必要です。

X.509 認証により、mongot はユーザー名とパスワードの代わりに TLS クライアント証明書を使用して MongoDB 配置に認証できます。X.509 を使用する場合、TLS は常に有効になります。

mongot の X.509 を設定するには、次の手順を実行します。

1

searchCoordinator ロールを使用してMongoDBレプリカセット上にユーザーを作成します。ユーザー名は、クライアント証明書のサブジェクトと正確に一致する必要があります。

mongoshで次のコマンドを実行します。

use $external
db.createUser({
user: "CN=mongot,OU=...",
roles: [ { role: "searchCoordinator", db: "admin" } ]
})
2

syncSource.replicaSet の下に x509 ブロックを追加します。シャーディングされたクラスターの場合は、syncSource.router の下に同じブロックを追加します。

x509ブロックでは、tlsCertificateKeyFileと caFileが必要です。hostAndPortに複数のホストするをリストすると、いずれかのホストするが使用できない場合でも mongot はレプリカセットを発見できます。

syncSource:
replicaSet:
hostAndPort:
- "<host1>:27017"
- "<host2>:27017"
x509:
tlsCertificateKeyFile: /etc/mongot/tls/mongot-client.pem
caFile: /etc/mongot/tls/ca.pem
# tlsCertificateKeyFilePasswordFile: /etc/mongot/secrets/cert-key-password
フィールド
説明

tlsCertificateKeyFile

必須。X.509 証明書と秘密キーの両方を含む PEM ファイル。

caFile

必須。1 つ以上の X.509 を含む PEM ファイルmongod の証明書を検証する CA 証明書。

tlsCertificateKeyFilePasswordFile

任意.キーが暗号化されている場合は、tlsCertificateKeyFile内の秘密キーを復号化するパスワードを含むファイル。

シャーディングされたクラスターの場合は、syncSource.replicaSet と syncSource.router の両方で x509 を構成します。両方の接続に同じフィールド構造を使用し、syncSource.router.hostAndPortでmongosのエンドポイントを提供します。

syncSource:
replicaSet:
hostAndPort:
- "<shard-host1>:27017"
- "<shard-host2>:27017"
x509:
tlsCertificateKeyFile: /etc/mongot/tls/mongot-client.pem
caFile: /etc/mongot/tls/ca.pem
# tlsCertificateKeyFilePasswordFile: /etc/mongot/secrets/cert-key-password
router:
hostAndPort:
- "<mongos1>:27017"
- "<mongos2>:27017"
x509:
tlsCertificateKeyFile: /etc/mongot/tls/mongot-client.pem
caFile: /etc/mongot/tls/ca.pem
# tlsCertificateKeyFilePasswordFile: /etc/mongot/secrets/cert-key-password

gRPC サーバーは、mongod が検索クエリとインデックス管理コマンドのために mongot に接続する受信チャンネルです。トランスポート層では、TLS を使用してこのチャンネルを保護します。mongod と mongot を相互認証するには、mTLS を使用します。

mongot の server.grpc.tls.mode オプションと mongod の searchTLSMode パラメータを使用して TLS モードを設定します。searchTLSMode を設定しない場合、searchTLSMode のデフォルトは globalTLS であるため、mongod は mongot への接続の TLS モードを net.tls.mode から継承します。

mongot 構成ファイルでは、次の TLS モードのいずれかを構成できます。

TLS なし。mongod と mongot が同じホストで実行される配置にのみ、このモードを使用します。

server:
grpc:
address: "localhost:27028"
tls:
mode: "disabled"

mongot サーバー証明書を提示し、mongodは接続を確立する前にそれを検証します。このモードにはcertificateKeyFileが必要です。

server:
grpc:
address: "0.0.0.0:27028"
tls:
mode: "tls"
certificateKeyFile: /etc/mongot/tls/mongot-server.pem
# certificateKeyFilePasswordFile: /etc/mongot/secrets/server-key-password

mongotとmongodの両方が互いの証明書を提示して検証します。このモードにはcertificateKeyFileとcaFileが必要です。mtlsを使用する場合は、mongodとmongotへの接続に対する対応するTLS設定も構成する必要があります。

server:
grpc:
address: "0.0.0.0:27028"
tls:
mode: "mtls"
certificateKeyFile: /etc/mongot/tls/mongot-server.pem
caFile: /etc/mongot/tls/ca.pem