对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

使用 X.509 保护客户端身份验证

Kubernetes Operator 的MongoDB控制器可以使用 X.509 证书对MongoDB部署的客户端应用程序进行身份验证。

本指南将指导您如何配置从客户端到 MongoDB 实例的 X.509 身份验证。

注意

你无法在 Kubernetes 集群中保护 MongoDB 的独立实例。

在使用TLS加密保护 MongoDB 部署之前,请完成以下操作:

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

在使用 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
.enabled

布尔

必需

将此值设置为true可对 MongoDB 部署启用身份验证。

true

spec.security
.authentication
.modes

阵列

可选的

将此值设置为["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 Operator 故障排除

如果您已经创建了证书,我们建议您使用以下过程定期续订证书。

注意

要自动续订 Ops Manager 部署的证书,请考虑设置证书经理集成。

1

如果您尚未执行,请运行以下命令,执行所创建命名空间的所有 kubectl 命令。

注意

MongoDB Ops Manager如果要在多 Kubernetes 集群 部署中部署MongoDB 资源:

  • context 设置为操作符集群的名称,例如:kubectl config set context "$MDB_CENTRAL_CLUSTER_FULL_NAME"

  • --namespace设置为您用于多 Kubernetes 集群 MongoDB 部署的相同范围,例如: kubectl config --namespace "mongodb"

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
.enabled

布尔

必需

将此值设置为true可对 MongoDB 部署启用身份验证。

true

spec.security
.authentication
.modes

阵列

可选的

将此值设置为["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 Operator 故障排除

如果您已经创建了证书,我们建议您使用以下过程定期续订证书。

注意

要自动续订 Ops Manager 部署的证书,请考虑设置证书经理集成。

1

如果您尚未执行,请运行以下命令,执行所创建命名空间的所有 kubectl 命令。

注意

MongoDB Ops Manager如果要在多 Kubernetes 集群 部署中部署MongoDB 资源:

  • context 设置为操作符集群的名称,例如:kubectl config set context "$MDB_CENTRAL_CLUSTER_FULL_NAME"

  • --namespace设置为您用于多 Kubernetes 集群 MongoDB 部署的相同范围,例如: kubectl config --namespace "mongodb"

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

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