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

TLS が有効なレプリカセットへの接続

このチュートリアルでは、mongosh TLS 対応の自己管理型レプリカセットに接続する方法を説明します。

開始する前に、次のものがあることを確認してください。

  • 自己管理型配置での TLS の構成の手順に従って TLS を使用するように構成されたレプリカセット。

  • MongoDB のアクセス制御が配置で有効になっているおよび少なくとも 1 人の管理ユーザーが作成されている。アクセス制御を設定するには、自己管理型配置でのアクセス制御の有効化を参照してください。このユーザーには clusterMonitor の権限が必要です。

  • X.509 認証を使用して配置に接続する場合は、OpenSSL がインストールされていることを確認して、クライアント証明書を生成します。

相互 TLS または X.509 クライアント認証を使用しない場合は、次の手順に従ってください。サーバー構成で allowConnectionsWithoutCertificatestrue に設定すると、クライアントは証明書を提示せずに接続し、代わりに SCRAM で認証できます。

1

次のオプションを使用して、mongoshをレプリカセットに接続します。

mongosh "mongodb://mongo0.example.com:27017,mongo1.example.com:27017,mongo2.example.com:27017" \
--tls --tlsCAFile /etc/ssl/mongodb/ca.pem
  • --tls 接続の TLS 暗号化を有効にします。

  • --tlsCAFileはサーバー証明書に署名した CA 証明書に設定されており、mongosh はサーバーの証明書を検証できます。

クライアント証明書なしで接続すると、TLS 暗号化されたセッションは確立されますが、証明は行われません。ほとんどのコマンドを実行するには、SCRAM などのメカニズムで証明する必要があります。

2

db.auth()メソッドを使用して、管理者のユーザー名とパスワードで認証します。

3

次のコマンドを実行して認証状態を確認します。

db.adminCommand({ connectionStatus: 1 })

authInfo.authenticatedUsers に予想されるユーザーが含まれていることを確認します。

配置に接続する際に相互 TLS と X.509 クライアント認証を使用する場合は、この手順に従ってクライアント証明書を作成して認証します。

1

警告

サーバー ノードと同じ証明書を使用しないでください。サーバー証明書がクライアント認証に有効であっても、X.509 認証用には新しいクライアント証明書を生成する必要があります。

TLS サーバー証明書の取得で説明されているプロセスを使用してクライアント証明書を生成します。次の調整を行います。

  • 構成ファイルで、serverAuthの代わりにextendedKeyUsage = clientAuthを設定します。

  • ノードのクライアント認証証明書に署名した CA は、クライアント証明書にも署名する必要があります。通常、これは ca.pem です。ただし、クライアント認証用に分離した証明書を取得した場合は、クライアント証明書に別の CA が使用されている可能性があります。

  • 証明書のチュートリアルで使用されているノード固有の名前の代わりに、出力ファイルに client.keyclient.crtclient.pem と名前を付けます。

プロセスが完了したら、client.pemmongosh を実行するマシン上の安全なロケーションにコピーします。

cp client.pem /etc/ssl/mongodb/client.pem
2

クライアント証明書の主題を特定します。接続後に予想されるクライアント証明書で認証されたことを確認するには、この値が必要です。

トピックを表示するには、次のコマンドを実行します。

openssl x509 -in /etc/ssl/mongodb/client.pem -noout -subject

出力は、次のようになります。

subject=C=US, ST=New-York, L=New York City, O=MongoDB, CN=myUser

このチュートリアルで後で使用するために、サブジェクト名を保存します。この例では、サブジェクト名は C=US, ST=New-York, L=New York City, O=MongoDB, CN=myUser です。

3

次のオプションを使用して、mongoshをレプリカセットに接続します。

mongosh "mongodb://mongo0.example.com:27017,mongo1.example.com:27017,mongo2.example.com:27017" \
--tls \
--tlsCAFile /etc/ssl/mongodb/ca.pem \
--tlsCertificateKeyFile /etc/ssl/mongodb/client.pem
  • --tls 接続の TLS 暗号化を有効にします。

  • --tlsCAFileは、mongosh がサーバー接続を検証できるように、サーバー証明書に署名した CA 証明書に設定されています。

  • --tlsCertificateKeyFile クライアント証明書と秘密キーを提示します。サーバーはこれらを使用して X.509 との接続を証明します。

これにより、TLS を介して MongoDB 配置に接続します。

4

db.auth()メソッドを使用して、管理者のユーザー名とパスワードで認証します。

5

db.createUser() メソッドを使用して、クライアント 証明書のサブジェクト名に対応するユーザーを $external データベースに作成します。ユーザー名を、以前に識別したクライアント証明書のサブジェクトに置き換えます。

db.getSiblingDB("$external").runCommand({
createUser: "C=US, ST=New-York, L=New York City, O=MongoDB, CN=myUser",
roles: [
{ role: "readWriteAnyDatabase", db: "admin" }
]
})

ユーザーを作成したら、db.auth() メソッドを使用して X.509 を使用して $external データベースに認証します。

db.getSiblingDB("$external").auth({
mechanism: "MONGODB-X509",
user: "C=US, ST=New-York, L=New York City, O=MongoDB, CN=myUser"
})
6

次のコマンドを実行して認証状態を確認します。

db.adminCommand({ connectionStatus: 1 })

authInfo.authenticatedUsers に予想されるユーザーが含まれていることを確認します。

このチュートリアルの完了後、mongosh は暗号化された TLS 接続を介してレプリカセットに接続され、SCRAM または X.509 のいずれかで認証されます。

このページを評価