X.509 による内部認証の保護
項目一覧
- 前提条件
- MongoDB MultiCluster リソースの X.509 内部認証の構成
-
MongoDBMultiCluster
リソースのエージェントの X.509 証明書のシークレットを作成します。 - メンバークラスターの内部 X.509 証明書のシークレットを作成します。
- x509認証を有効にするには、
MongoDBMultiCluster
リソースを更新します。 MongoDBMultiCluster
リソースが実行中であることを確認します。- MongoDB MultiCluster リソースの内部認証 X.509 証明書の更新
- リソースの シークレット
MongoDBMultiCluster
を更新します。 - エージェントの X.509 証明書のシークレットを更新します。
- 内部ノードの
MongoDBMultiCluster
リソースの X.509 証明書のシークレットを更新します。
このガイドでは、次の設定方法について説明します。
マルチ Kubernetes クラスター MongoDB 配置内の各クラスターの MongoDB ノード間の X. 509内部認証
クライアントから MongoDB インスタンスへの X.509 認証。
前提条件
TLS暗号化を使用して複数の Kubernetes クラスター MongoDB 配置を保護する前に、次のタスクを完了してください。
Kubernetes Operator の認証情報を作成します。
プロジェクト レベルで X.509 認証を有効にすると、すべてのエージェントが MongoDB 配置で通信するときに X.509 クライアント認証を使用するように構成されます。
X.509 クライアント認証には次のいずれかが必要です。
MongoDB MultiCluster リソースの X.509 内部認証の構成
エージェントの X.509 証明書MongoDBMultiCluster
( リソースのシークレットを作成します。
kubectl
コマンドを実行して、エージェントの X.509 証明書を保存する新しいシークレットを作成します。
kubectl --context $MDB_CENTRAL_CLUSTER_FULL_NAME \ --namespace=<metadata.namespace> \ create secret tls <prefix>-<metadata.name>-agent-certs \ --cert=<agent-tls-cert> \ --key=<agent-tls-key>
メンバークラスターの内部 X.509 証明書のシークレットを作成します。
kubectl
コマンドを実行して、内部クラスター の X.509 証明書を保存する新しいシークレットを作成します。 メンバー クラスターはMongoDBMultiCluster
リソースで定義されます。
kubectl --context $MDB_CENTRAL_CLUSTER_FULL_NAME \ --namespace=<metadata.namespace> \ create secret tls <prefix>-<metadata.name>-clusterfile \ --cert=<resource-clusterfile-tls-cert> \ --key=<resource-clusterfile-tls-key>
リソースを更新して MongoDBMultiCluster
X 509認証を有効にします。
Kubernetes Operator MongoDB MultiCluster リソース仕様 のセキュリティ設定を使用し て MongoDB MultiCluster カスタム リソースを更新します 。spec.authentication
の下にinternalCluster
設定を追加し、それを"X509"
に設定します。 結果の構成は、次の例のようになります。
apiVersion: mongodb.com/v1 kind: MongoDBMultiCluster metadata: name: multi-replica-set spec: version: 6.0.0-ent type: ReplicaSet persistent: false duplicateServiceObjects: true credentials: my-credentials opsManager: configMapRef: name: my-project security: tls: a: custom-ca certsSecretPrefix: <prefix> authentication: enabled: true modes: ["X509"] agents: mode: "X509" internalCluster: "X509" clusterSpecList: - clusterName: ${MDB_CLUSTER_1_FULL_NAME} members: 3 - clusterName: ${MDB_CLUSTER_2_FULL_NAME} members: 2 - clusterName: ${MDB_CLUSTER_3_FULL_NAME} members: 3 The |k8s-op-short| copies the ConfigMap with the |certauth| created in the central cluster to each member cluster, generates a concatenated |pem| secret, and distributes it to the member clusters.
MongoDBMultiCluster
リソースがを実行中していることを確認します。
ノードクラスターの場合は、次のコマンドを実行して、MongoDB ポッドが実行状態であることを確認します。
kubectl get pods \ --context=$MDB_CLUSTER_1_FULL_NAME \ --namespace mongodb kubectl get pods \ --context=$MDB_CLUSTER_2_FULL_NAME \ --namespace mongodb kubectl get pods \ --context=$MDB_CLUSTER_3_FULL_NAME \ --namespace mongodb 中央クラスターで次のコマンドを実行し、
MongoDBMultiCluster
リソースが実行状態であることを確認します。kubectl --context=$MDB_CENTRAL_CLUSTER_FULL_NAME \ --namespace mongodb \ get mdbmc multi-replica-set -o yaml -w
MongoDB MultiCluster リソースの内部認証 X.509 証明書の更新
すでに証明書を作成している場合は、次の手順で定期的に更新してください。
MongoDBMultiCluster
リソースのシークレットを更新します。
kubectl
既存のMongoDBMultiCluster
シークレット を更新するには、この コマンドを実行します リソースの証明書を保存する:
kubectl --context $MDB_CENTRAL_CLUSTER_FULL_NAME \ --namespace=<metadata.namespace> \ create secret tls <prefix>-<metadata.name>-cert \ --cert=<resource-tls-cert> \ --key=<resource-tls-key> \ --dry-run=client \ -o yaml | kubectl apply -f -
エージェントの X.509 証明書のシークレットを更新します。
MongoDBMultiCluster
リソースエージェント証明書を保存する既存のシークレットを更新するには、 kubectl
コマンドを実行します。
kubectl --context $MDB_CENTRAL_CLUSTER_FULL_NAME \ --namespace=<metadata.namespace> \ create secret tls <prefix>-<metadata.name>-agent-certs \ --cert=<agent-tls-cert> \ --key=<agent-tls-key> \ --dry-run=client \ -o yaml | kubectl apply -f -
内部メンバーの X.509 証明書MongoDBMultiCluster
( リソースのシークレットを更新します。
kubectl
コマンドを実行して、 MongoDBMultiCluster
リソースの内部ノードの X.509 証明書を保存する既存のシークレットを更新します。
kubectl --context $MDB_CENTRAL_CLUSTER_FULL_NAME \ --namespace=<metadata.namespace> \ create secret tls <prefix>-<metadata.name>-clusterfile \ --cert=<resource-clusterfile-tls-cert> \ --key=<resource-clusterfile-tls-key> \ --dry-run=client \ -o yaml | kubectl apply -f -