X.509 クライアント証明書の生成
項目一覧
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によって生成および署名された有効な証明書を使用する必要があります。 You or your organization can generate and maintain an independent CA using Kubernetes-native tools such as cert-manager.
証明書の取得と管理については、このドキュメントの範囲外です。
重要
.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'