Docs Menu
Docs Home
/
MongoDB Enterprise Kubernetes 演算子
/ /

X.509 によるクライアント認証の保護

項目一覧

  • 一般的な前提条件
  • レプリカセットに対する X.509 クライアント認証の構成
  • 前提条件
  • X.509 クライアント認証の有効化
  • レプリカセットの X.509 証明書の更新
  • シャーディングされたクラスターの X.509 クライアント認証の構成
  • 前提条件
  • X.509 クライアント認証の有効化
  • シャーディングされたクラスターの X.509 証明書の更新

MongoDB Enterprise Kubernetes Operator は、X.509 証明書を使用して、MongoDB 配置に対してクライアント アプリケーションを認証できます。

このガイドでは、クライアントから MongoDB インスタンスへの X.509 認証を構成する方法について説明します。

注意

Kubernetes クラスターでは MongoDB のスタンドアロン インスタンスを保護することはできません。

TLS暗号化を使用して MongoDB 配置を保護する前に、次の手順を完了してください。

  • Kubernetes 演算子のインストール

  • Kubernetes 演算子の認証情報の作成

プロジェクト レベルで X.509 認証を有効にすると、すべてのエージェントが MongoDB 配置で通信するときに X.509 クライアント認証を使用するように構成されます。

X.509 クライアント認証には次のいずれかが必要です。

  • Cloud Manager

  • MongoDB Ops Manager 4.1.7 以降

  • MongoDB Ops Manager 4.0.11 またはそれ以降

X.509 を使用してレプリカセットを保護する前に、TLS で暗号化されたレプリカセットをデプロイします。

1

このYAMLファイルの設定を、必要なレプリカセット構成に合わせて変更します。

1---
2apiVersion: mongodb.com/v1
3kind: MongoDB
4metadata:
5 name: <my-replica-set>
6spec:
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...
2

任意のテキスト エディターを開き、 セクションのリソースファイルの末尾にオブジェクトspec 仕様を貼り付けます。

3

配置でTLSと X.509 を有効にするには、Kubernetes オブジェクトで次の設定を構成します。

キー
タイプ
必要性
説明
spec.security
.authentication
ブール値
必須
MongoDB 配置で認証を有効にするには、この値をtrueに設定します。
true
spec.security
.authentication
配列
条件付き
この値を["X509"]に設定します。
["X509"]
4
5

レプリカセットを更新するには、次の Kubernetes コマンドを呼び出します。

kubectl apply -f <replica-set-conf>.yaml
6

MongoDBリソースのステータスを確認するには、次のコマンドを使用します。

kubectl get mdb <resource-name> -o yaml -w

-w (監視)フラグが設定されている場合、構成が変更されると、ステータスフェーズがRunning状態に達するまで出力が直ちに更新されます。 リソース配置ステータスの詳細については、 「 Kubernetes 演算子のトラブルシューティング 」を参照してください。

すでに証明書を作成している場合は、次の手順で定期的に更新することをお勧めします。

注意

MongoDB Ops Manager配置の証明書更新を自動化するには、 certs Manager 統合のセットアップ を検討してください。

1

まだ作成していない場合は、次のコマンドを実行して、作成した名前空間ですべての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>
2

既存の シークレット を更新するには、このkubectl コマンドを実行します レプリカセットの証明書を保存する

kubectl create secret tls <prefix>-<metadata.name>-cert \
--cert=<replica-set-tls-cert> \
--key=<replica-set-tls-key> \
--dry-run=client \
-o yaml |
kubectl apply -f -
3

既存の シークレット を更新するには、この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 を使用してシャーディングされたクラスターを保護する前に、 TLS で暗号化されたシャーディングされたクラスターをデプロイしてください。

1

このYAMLファイルの設定を、シャーディングされたクラスターの構成に合わせて変更します。

1---
2apiVersion: mongodb.com/v1
3kind: MongoDB
4metadata:
5 name: <my-sharded-cluster>
6spec:
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...
2

希望のテキストエディタを開き、 オブジェクト を貼り付けます 指定 セクションのリソースspec ファイルの末尾にあります。

3

配置でTLSと X.509 を有効にするには、Kubernetes オブジェクトで次の設定を構成します。

キー
タイプ
必要性
説明
spec.security
.authentication
ブール値
必須
MongoDB 配置で認証を有効にするには、この値をtrueに設定します。
true
spec.security
.authentication
配列
条件付き
この値を["X509"]に設定します。
["X509"]
4
5

任意のディレクトリで、次の Kubernetes コマンドを呼び出して、シャーディングされたクラスターを更新して再起動します。

kubectl apply -f <sharded-cluster-conf>.yaml
6

MongoDBリソースのステータスを確認するには、次のコマンドを使用します。

kubectl get mdb <resource-name> -o yaml -w

-w (監視)フラグが設定されている場合、構成が変更されると、ステータスフェーズがRunning状態に達するまで出力が直ちに更新されます。 リソース配置ステータスの詳細については、 「 Kubernetes 演算子のトラブルシューティング 」を参照してください。

すでに証明書を作成している場合は、次の手順で定期的に更新することをお勧めします。

注意

MongoDB Ops Manager配置の証明書更新を自動化するには、 certs Manager 統合のセットアップ を検討してください。

1

まだ作成していない場合は、次のコマンドを実行して、作成した名前空間ですべての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>
2

既存の シークレット を更新するには、この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 -
3

既存の シークレット を更新するには、この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 -
4

既存の シークレット を更新するには、このkubectlmongos コマンドを実行します シャーディングされたクラスター 証明書を保存する:

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 -
5

既存の シークレット を更新するには、この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 -