Docs 菜单
Docs 主页
/
MongoDB Enterprise Kubernetes Operator
/ /

使用 X.509 进行安全内部身份验证

在此页面上

本指南将指导您如何配置:

  • X. 509多 Kubernetes集群MongoDB部署中每个集群的MongoDB节点之间的内部身份验证。

  • 从客户端到 MongoDB 实例的 X.509 身份验证。

在使用 TLS加密保护多 Kubernetes 集群 MongoDB 部署之前,请完成以下任务:

  • 按照多集群快速入门先决条件中的步骤进行操作。

  • 部署TLS 加密的多 Kubernetes 集群。

  • 为 Kubernetes 操作符创建档案。

在项目级别启用 X.509 身份验证会将所有代理配置为在与 MongoDB 部署通信时使用 X.509 客户端身份验证。

X.509 客户端身份验证需要满足以下条件之一:

  • Cloud Manager

  • MongoDB Ops Manager版本与 KubernetesOperator 版本 兼容 。

1

运行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>
2

运行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

使用 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
  1. 对于成员集群,运行以下命令验证 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
  2. 在中央集群中,运行以下命令以验证MongoDBMultiCluster资源是否处于运行状态:

    kubectl --context=$MDB_CENTRAL_CLUSTER_FULL_NAME \
    --namespace mongodb \
    get mdbmc multi-replica-set -o yaml -w

如果您已创建证书,请使用以下过程定期续订证书。

1

运行此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

运行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

运行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 -

后退

使用 x.509