このページを使用して、mongot と MongoDB Community Edition の配置の認証と承認を構成します。Kubernetes 演算子の MongoDB Controllers で 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 または認証をサポートしません。ネットワーク レイヤーでこれらのポートへのアクセスを制限します。
Considerations
認証を構成する前に、次の点を確認してください。
同期ソースには、SCRAM または X.509 のいずれか一方の認証メカニズムを正確に構成する必要があります。2 つのメカニズムは、各接続ブロックで互いに排他的です。
シャーディングされたクラスターの場合は、
mongot構成ファイルでsyncSource.replicaSetとsyncSource.routerの両方を指定し、各接続で独立して認証を構成する必要があります。syncSource.routerはsyncSource.replicaSetによって暗示されないため、明示的に構成する必要があります。各シャードには専用のmongotインスタンスが必要です。syncSource.replicaSetmongotインスタンスをシャードのレプリカセットにマップします。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 は、ユーザー名とパスワードを使用して mongot を MongoDB 配置に認証します。
mongot の SCRAM を設定するには、次の手順を実行します。
adminデータベースにmongotユーザーを作成します。
MongoDB レプリカセット上に searchCoordinator ロールでユーザーを作成します。
mongoshで次のコマンドを実行します。
use admin db.createUser({ user: "mongotUser", pwd: "<password>", roles: [ { role: "searchCoordinator", db: "admin" } ] })
mongot ホストする上にパスワード ファイルを作成します。
<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>")
scramAuth ブロックを mongot 構成に追加します。
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 の構成」を参照してください。
必要に応じて、同期ソース接続に TLS を有効にします。
MongoDB配置でTLSが有効になっている場合は、tls.enabledをtrueに設定し、必要に応じて次のフィールドをmongot構成ファイルに提供します。
フィールド | 説明 |
|---|---|
| 1 つ以上の X.509 を含む PEM ファイル |
| クライアントの X.509 証明書と秘密キーの両方を含む PEM ファイル。 |
| クライアント証明書キーを復号化するパスワード。 |
X.509 認証により、mongot はユーザー名とパスワードの代わりに TLS クライアント証明書を使用して MongoDB 配置に認証できます。X.509 を使用する場合、TLS は常に有効になります。
mongot の X.509 を設定するには、次の手順を実行します。
$externalデータベースにmongotユーザーを作成します。
searchCoordinator ロールを使用してMongoDBレプリカセット上にユーザーを作成します。ユーザー名は、クライアント証明書のサブジェクトと正確に一致する必要があります。
mongoshで次のコマンドを実行します。
use $external db.createUser({ user: "CN=mongot,OU=...", roles: [ { role: "searchCoordinator", db: "admin" } ] })
x509 ブロックを mongot 構成に追加します。
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
フィールド | 説明 |
|---|---|
| 必須。X.509 証明書と秘密キーの両方を含む PEM ファイル。 |
| 必須。1 つ以上の X.509 を含む PEM ファイル |
| 任意.キーが暗号化されている場合は、 |
シャーディングされたクラスターの場合は、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 サーバー トランスポート セキュリティの構成
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 モードのいずれかを構成できます。
disabled
TLS なし。mongod と mongot が同じホストで実行される配置にのみ、このモードを使用します。
server: grpc: address: "localhost:27028" tls: mode: "disabled"
TLS
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
相互TLS (mTLS)
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