MongoDB Enterprise Kubernetes Operator は、X.509認証が有効になっているMongoDBインスタンスを配置できます。配置で X.509認証が有効になっている場合は、配置に接続するために X.509 証明書を生成して使用する必要があります。この新しいクライアント証明書は、 MongoDBデプロイのサーバー証明書に署名するのと同じ CA によって署名されている必要があります。
このドキュメントで説明されている手順に従って、X.509 証明書を使用して X.509 対応の MongoDB 配置に接続します。
HashiCorp Vault を シークレットストレージツール として使用している場合は、代わりに Vault シークレットを作成 できます。
注意
MongoDB Ops Manager配置の証明書更新を自動化するには、 certs Manager 統合のセットアップ を検討してください。
前提条件
注意
Transport Layer Security(TLS)、公開キー基盤(PKI)証明書、および認証局についての詳細な説明は、このドキュメントの範囲外です。 このページは TLS および X.509 認証に関する予備知識を前提としています。
- このチュートリアルを完了するには、MongoDB Enterprise Kubernetes Operator がインストールされている必要があります。 Kubernetes Operator のインストール手順については、「 MongoDB Enterprise Kubernetes Operator のインストール 」を参照してください。 
- このチュートリアルでは、X.509 認証を必要とする MongoDB 配置があることを前提としています。 MongoDB リソースを配置する手順については、「 MongoDB Database リソースの配置 」を参照してください。 
手順
最初にクライアント証明書を作成します。 次に、MongoDB ユーザーを作成し、X.509 対応の配置に接続します。
X.509 クライアント証明書を生成します。
実稼働環境で使用する場合、 MongoDBデプロイには、CA によって生成および署名された有効な証明書を使用する必要があります。ユーザーまたは組織は、 cert-manager などの Kubernetes ネイティブ ツールを使用して、独立した CA を生成および維持できます。
証明書の取得と管理については、このドキュメントの範囲外です。
重要
 .pemファイルでクライアントのTLS証明書と証明書のキーを連結する必要があります。 X.509 対応の MongoDB 配置に接続するときに、この.pemファイルを提示する必要があります。
クライアント証明書が持つ必要があるプロパティの詳細については、MongoDB マニュアルの 「クライアント証明書の要件」 を参照してください。
kubectlをデフォルトで名前空間に設定します。
まだ作成していない場合は、次のコマンドを実行して、作成した名前空間ですべてのkubectlコマンドを実行します。
注意
MongoDB Ops Manager リソースを複数の Kubernetes クラスター MongoDB 配置に配置している場合、次の手順に従います。
- contextを演算子クラスターの名前に設定します(- kubectl config set context "$MDB_CENTRAL_CLUSTER_FULL_NAME"など)。
- MongoDB のマルチ配置に使用したのと同じスコープ(例: - kubectl config --namespace "mongodb"に- --namespaceを設定します。
kubectl config set-context $(kubectl config current-context) --namespace=<metadata.namespace> 
次の例をConfigMapでコピーして保存します。
次の ConfigMap をx509-mongodb-user.yamlとして保存します。
1 --- 2 apiVersion: mongodb.com/v1 3 kind: MongoDBUser 4 metadata: 5   name: new-x509-user 6 spec: 7   username: "CN=my-x509-authenticated-user,OU=organizationalunit,O=organization" 8   db: "$external" 9   mongodbResourceRef: 10     name: '<name of the MongoDB resource>' 11   roles: 12     - db: "admin" 13       name: "readWriteAnyDatabase" 
この ConfigMap .yamlファイルはMongoDBUserカスタム オブジェクトを記述します。 これらのカスタム オブジェクトを使用して、MongoDB ユーザーを作成できます。 詳しくは、「 MongoDB ユーザー リソースの仕様 」を参照してください。
この例では、ConfigMap はユーザーを X.509 ユーザーとして説明し、クライアントは対応する X.509 証明書を使用して MongoDB に接続するために使用できます。
CA のマウントロケーションを見つけます。
次のコマンドを実行して、各ポッドのどこに Kubernetes Operator がCAシークレットをマウントしているかを見つけます。
kubectl get statefulset <metadata.name> -o yaml 
出力で、 secret-caマウントを見つけます。
volumeMounts:   - mountPath: /opt/scripts     name: database-scripts     readOnly: true   - mountPath: /var/lib/mongodb-automation/secrets/ca     name: secret-ca     readOnly: true   - mountPath: /var/lib/mongodb-automation/secrets/certs     name: secret-certs     readOnly: true 
データベース配置に接続するときに、次の手順で、 mountPathにsecret-caを追加します。これは完全パスを形成します。
/var/lib/mongodb-automation/secrets/ca/secret-ca 
X.509 ユーザーを使用して MongoDB 配置に接続
X.509 ユーザーを作成したら、MongoDB Shell( mongosh )を使用して配置に接続してみてください。
mongosh --host {host} --port {port} --tls \   --tlsCAFile </path/to/secret-ca> \   --tlsCertificateKeyFile <your-cert>.pem \   --authenticationMechanism MONGODB-X509  \   --authenticationDatabase '$external' 
mongosh --host {host} --port {port} --ssl \   --sslCAFile </path/to/secret-ca> \   --sslPEMKeyFile <your-cert>.pem \   --authenticationMechanism MONGODB-X509 \   --authenticationDatabase '$external'