使用 X.509 进行安全内部身份验证
在此页面上
- 先决条件
- 为 MongoDBMultiCluster 资源配置 X.509 内部身份验证
- 为您的
MongoDBMultiCluster
资源的代理的 X.509 证书创建密钥。 - 为成员集群的内部 X.509 证书创建密钥。
- 更新
MongoDBMultiCluster
资源以启用 X509 身份验证。 - 验证
MongoDBMultiCluster
资源是否正在运行。 - 为 MongoDBMultiCluster 资源续订内部身份验证 X.509 证书
- 为 资源更新 密钥 。
MongoDBMultiCluster
- 为代理的 X.509 证书续订密钥。
- 为
MongoDBMultiCluster
资源的内部成员的 X.509 证书续订密钥。
本指南将指导您如何配置:
X. 509多 Kubernetes集群MongoDB部署中每个集群的MongoDB节点之间的内部身份验证。
从客户端到 MongoDB 实例的 X.509 身份验证。
先决条件
在使用 TLS加密保护多 Kubernetes 集群 MongoDB 部署之前,请完成以下任务:
为 Kubernetes 操作符创建档案。
在项目级别启用 X.509 身份验证会将所有代理配置为在与 MongoDB 部署通信时使用 X.509 客户端身份验证。
X.509 客户端身份验证需要满足以下条件之一:
为 MongoDBMultiCluster 资源配置 X.509 内部身份验证
1
2
为成员集群的内部 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>
3
更新MongoDBMultiCluster
资源以启用X509 身份验证。
使用 Kubernetes Operator MongoDBMultiCluster 资源规范 中的安全设置 更新 MongoDBMultiCluster 自定义资源 。在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.
4
验证MongoDBMultiCluster
资源是否运行。
对于成员集群,运行以下命令验证 MongoDB Pod 是否处于运行状态:
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
为 MongoDBMultiCluster 资源续订内部身份验证 X.509 证书
如果您已创建证书,请使用以下过程定期续订证书。
1
更新 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 -
2
为代理的 X.509 证书续订密钥。
运行kubectl
命令以更新存储MongoDBMultiCluster
资源代理证书的现有密钥:
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 -
3
509为MongoDBMultiCluster
资源的内部成员的 X. 证书续订密钥。
运行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 -