Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs Menu
Docs Home
/
Enterprise Kubernetes 演算子
/ /

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

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

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

注意

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 を使用してレプリカセットを保護する前に、TLS で暗号化されたレプリカセットをデプロイします。

1

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

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