X.509 による内部認証の保護
項目一覧
このガイドでは、次の設定方法について説明します。
クラスター内の MongoDB ノード間の X.509 内部認証。
クライアントから MongoDB インスタンスへの X.509 認証。
Kubernetes Operator は、クラスター内の MongoDB ノード間の他の認証スキームをサポートしていません。
注意
Kubernetes クラスターでは MongoDB のスタンドアロン インスタンスを保護することはできません。
一般的な前提条件
TLS暗号化を使用して MongoDB 配置のいずれかを保護する前に、次の手順を完了してください。
プロジェクト レベルで X.509 認証を有効にすると、すべてのエージェントが MongoDB 配置で通信するときに X.509 クライアント認証を使用するように構成されます。
X.509 クライアント認証には次のいずれかが必要です。
Cloud Manager
MongoDB Ops Manager 4.1.7 以降
MongoDB Ops Manager 4.0.11 またはそれ以降
レプリカセットの X.509 内部認証の構成
前提条件
X.509 を使用してレプリカセットを保護する前に、TLS で暗号化されたレプリカセットをデプロイします。
X.509 内部認証の有効化
シークレット を作成する X.509 証明書の。
このkubectl
コマンドを実行して、新しい シークレット を作成します レプリカセットの証明書を保存する
kubectl create secret tls <prefix>-<metadata.name>-clusterfile \ --cert=<replica-set-clusterfile-tls-cert> \ --key=<replica-set-clusterfile-tls-key>
注意
シークレットの前に<prefix>-<metadata.name>
を付ける必要があります。
たとえば、配置をmy-deployment
mdb
と呼び出し、プレフィックスを に設定する場合は、クライアント TLS 通信の TLS シークレットにmdb-my-deployment-cert
という名前を付ける必要があります。また、内部クラスター認証用のTLSシークレット(有効になっている場合) mdb-my-deployment-clusterfile
に名前を付ける必要があります。
サンプル レプリカセット リソースをコピーします。
このYAMLファイルの設定を、必要なレプリカセット構成に合わせて変更します。
1 2 apiVersion: mongodb.com/v1 3 kind: MongoDB 4 metadata: 5 name: <my-replica-set> 6 spec: 7 members: 3 8 version: "4.2.2-ent" 9 opsManager: 10 configMapRef: 11 # Must match metadata.name in ConfigMap file 12 name: <configMap.metadata.name> 13 credentials: <mycredentials> 14 type: ReplicaSet 15 persistent: true
16 security: 17 tls: 18 ca: <custom-ca> 19 certsSecretPrefix: <prefix> 20 authentication: 21 enabled: true 22 modes: ["X509"] 23 internalCluster: "X509" 24 ...
レプリカセット509 リソースの一般的な X. 設定を構成します。
配置でTLSと X.509 を有効にするには、Kubernetes オブジェクトで次の設定を構成します。
レプリカセット509 リソースの内部 X. 設定を構成します。
配置でTLSと X.509 を有効にするには、Kubernetes オブジェクトで次の設定を構成します。
キー | タイプ | 必要性 | 説明 | 例 |
---|---|---|---|---|
string | 必須 | この設定を使用して、 X. 509内部クラスター認証を有効にします。 重要:内部クラスター認証が有効になっている場合は、無効にすることはできません。 | X509 |
配置のステータスを追跡します。
MongoDB
リソースのステータスを確認するには、次のコマンドを使用します。
kubectl get mdb <resource-name> -o yaml -w
-w
(監視)フラグが設定されている場合、構成が変更されると、ステータスフェーズがRunning
状態に達するまで出力が直ちに更新されます。 リソース配置ステータスの詳細については、 「 Kubernetes 演算子のトラブルシューティング 」を参照してください。
レプリカセットの内部認証 X.509 証明書の更新
すでに証明書を作成している場合は、次の手順で定期的に更新することをお勧めします。
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>
シークレット を更新する X.509 証明書の。
既存の シークレット を更新するには、このkubectl
コマンドを実行します レプリカセットの証明書を保存する
kubectl create secret tls <prefix>-<metadata.name>-clusterfile \ --cert=<replica-set-clusterfile-tls-cert> \ --key=<replica-set-clusterfile-tls-key> \ --dry-run=client \ -o yaml | kubectl apply -f -
シークレット を更新する エージェントの X.509 証明書用。
既存の シークレット を更新するには、このkubectl
コマンドを実行します エージェントの X.509 証明書を保存する:
kubectl 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 内部認証の構成
前提条件
X.509 を使用してシャーディングされたクラスターを保護する前に、 TLS で暗号化されたシャーディングされたクラスターをデプロイしてください。
X.509 内部認証の有効化
シークレット を作成する シャードの X. 証明書の場合509
このkubectl
コマンドを実行して新しい シークレット を作成します シャーディングされたクラスター シャードの証明書を保存する:
kubectl -n mongodb create secret tls <prefix>-<metadata.name>-0-clusterfile \ --cert=<shard-0-clusterfile-tls-cert> \ --key=<shard-0-clusterfile-tls-cert> kubectl -n mongodb create secret tls <prefix>-<metadata.name>-1-clusterfile \ --cert=<shard-1-clusterfile-tls-cert> \ --key=<shard-1-clusterfile-tls-cert>
シークレット を作成する 使用するコンフィギュレーションサーバーの X.509 証明書。
このkubectl
コマンドを実行して新しい シークレット を作成します シャーディングされたクラスター コンフィギュレーションサーバー の証明書を保存する:
kubectl -n mongodb create secret tls <prefix>-<metadata.name>-config-clusterfile \ --cert=<config-clusterfile-tls-cert> \ --key=<config-clusterfile-tls-cert>
サンプルの シャーディングされたクラスター リソースをコピーします。
このYAMLファイルの設定を、シャーディングされたクラスターの構成に合わせて変更します。
1 2 apiVersion: mongodb.com/v1 3 kind: MongoDB 4 metadata: 5 name: <my-sharded-cluster> 6 spec: 7 shardCount: 2 8 mongodsPerShardCount: 3 9 mongosCount: 2 10 configServerCount: 3 11 version: "4.2.2-ent" 12 opsManager: 13 configMapRef: 14 name: <configMap.metadata.name> 15 # Must match metadata.name in ConfigMap file 16 credentials: <mycredentials> 17 type: ShardedCluster 18 persistent: true
19 security: 20 tls: 21 ca: <custom-ca> 22 certsSecretPrefix: <prefix> 23 authentication: 24 enabled: true 25 modes: ["X509"] 26 internalCluster: "X509" 27 ...
コピーしたサンプル セクションを既存の シャーディングされたクラスター リソースに貼り付けます。
希望のテキストエディタを開き、 オブジェクト を貼り付けます 指定 セクションのリソースspec
ファイルの末尾にあります。
シャーディングされたクラスター リソースの一般的な X.509 設定を構成します。
配置でTLSと X.509 を有効にするには、Kubernetes オブジェクトで次の設定を構成します。
シャーディングされたクラスター リソースの内部 X.509 設定を構成します。
配置でTLSと X.509 を有効にするには、Kubernetes オブジェクトで次の設定を構成します。
キー | タイプ | 必要性 | 説明 | 例 |
---|---|---|---|---|
string | 必須 | この設定を使用して、 X. 509内部クラスター認証を有効にします。 重要:内部クラスター認証が有効になっている場合は、無効にすることはできません。 | X509 |
シャーディングされた クラスター の配置を更新して再起動します。
任意のディレクトリで、次の Kubernetes コマンドを呼び出して、シャーディングされたクラスターを更新して再起動します。
kubectl apply -f <sharded-cluster-conf>.yaml
配置のステータスを追跡します。
MongoDB
リソースのステータスを確認するには、次のコマンドを使用します。
kubectl get mdb <resource-name> -o yaml -w
-w
(監視)フラグが設定されている場合、構成が変更されると、ステータスフェーズがRunning
状態に達するまで出力が直ちに更新されます。 リソース配置ステータスの詳細については、 「 Kubernetes 演算子のトラブルシューティング 」を参照してください。
シャーディングされたクラスターの内部認証 X.509 証明書の更新
すでに証明書を作成している場合は、次の手順で定期的に更新することをお勧めします。
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>
シークレット を更新する シャードの TLS 証明書用。
既存の シークレット を更新するには、このkubectl
コマンドを実行します シャーディングされたクラスター シャードの証明書を保存する:
kubectl -n mongodb create secret tls <prefix>-<metadata.name>-0-cert \ --cert=<shard-0-tls-cert> \ --key=<shard-0-tls-key> \ --dry-run=client \ -o yaml | kubectl apply -f - kubectl -n mongodb create secret tls <prefix>-<metadata.name>-1-cert \ --cert=<shard-1-tls-cert> \ --key=<shard-1-tls-key> \ --dry-run=client \ -o yaml | kubectl apply -f -
シークレット を更新する 取得します。
既存の シークレット を更新するには、このkubectl
コマンドを実行します シャーディングされたクラスター コンフィギュレーションサーバー の証明書を保存する:
kubectl -n mongodb create secret tls <prefix>-<metadata.name>-config-cert \ --cert=<config-tls-cert> \ --key=<config-tls-key> \ --dry-run=client \ -o yaml | kubectl apply -f -
シークレット を更新する 使用している mongos サーバーの TLS 証明書の 。
既存の シークレット を更新するには、このkubectl
mongos
コマンドを実行します シャーディングされたクラスター 証明書を保存する:
kubectl -n mongodb create secret tls <prefix>-<metadata.name>-mongos-cert \ --cert=<mongos-tls-cert> \ --key=<mongos-tls-key> \ --dry-run=client \ -o yaml | kubectl apply -f -
シークレット を更新する509 シャードの X. 証明書の場合
既存の シークレット を更新するには、このkubectl
コマンドを実行します シャーディングされたクラスター シャードの証明書を保存する:
kubectl -n mongodb create secret tls <prefix>-<metadata.name>-0-clusterfile \ --cert=<shard-0-clusterfile-tls-cert> \ --key=<shard-0-clusterfile-tls-cert> \ --dry-run=client \ -o yaml | kubectl apply -f - kubectl -n mongodb create secret tls <prefix>-<metadata.name>-1-clusterfile \ --cert=<shard-1-clusterfile-tls-cert> \ --key=<shard-1-clusterfile-tls-cert> \ --dry-run=client \ -o yaml | kubectl apply -f -
シークレット を更新する 使用するコンフィギュレーションサーバーの X.509 証明書。
既存の シークレット を更新するには、このkubectl
コマンドを実行します シャーディングされたクラスター コンフィギュレーションサーバー の証明書を保存する:
kubectl -n mongodb create secret tls <prefix>-<metadata.name>-config-clusterfile \ --cert=<config-clusterfile-tls-cert> \ --key=<config-clusterfile-tls-cert> \ --dry-run=client \ -o yaml | kubectl apply -f -
シークレット を更新する mongos サーバーの X.509 証明書の場合
既存の シークレット を更新するには、このkubectl
mongos
コマンドを実行します シャーディングされたクラスター 証明書を保存する:
kubectl -n mongodb create secret tls <prefix>-<metadata.name>-mongos-clusterfile \ --cert=<mongos-clusterfile-tls-cert> \ --key=<mongos-clusterfile-tls-cert> \ --dry-run=client \ -o yaml | kubectl apply -f -
シークレット を更新する エージェントの X.509 証明書用。
既存の シークレット を更新するには、このkubectl
コマンドを実行します エージェントの X.509 証明書を保存する:
kubectl create secret tls <prefix>-<metadata.name>-agent-certs \ --cert=<agent-tls-cert> \ --key=<agent-tls-key> \ --dry-run=client \ -o yaml | kubectl apply -f -