使用 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
Ops Manager 4.1.7 或更高版本
Ops Manager 4.0.11 或更高版本
为副本集配置 X.509 客户端身份验证
先决条件
在使用 X.509 保护副本集之前,请部署 TLS 加密的副本集。
启用 X.509 客户端身份验证
复制示例 副本集资源。
更改此 YAML 文件的设立,以匹配所需的副本集配置。
1 2 apiVersion: mongodb.com/v1 3 kind: MongoDB 4 metadata: 5 name: <my-replica-set> 6 spec: 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 ...
为副本集资源配置常规 X.509 设置。
要在部署中启用TLS和 X.509,请在 Kubernetes 对象中配置以下设置:
将更改应用于副本集部署。
调用以下 Kubernetes 命令来更新副本集:
kubectl apply -f <replica-set-conf>.yaml
跟踪部署状态。
要检查 MongoDB
资源的状态,请使用以下命令:
kubectl get mdb <resource-name> -o yaml -w
设置 -w
(观看) 标志后,当配置更改时,输出将立即刷新,直到状态阶段达到 Running
状态。要了解有关资源部署状态的详情,请参阅 Kubernetes Operator 故障排除。
为副本集续订 X.509 证书
如果您已经创建了证书,我们建议您使用以下过程定期续订证书。
注意
要自动续订 Ops Manager 部署的证书,请考虑设置证书经理集成。
将kubectl
配置为默认命名空间。
如果您尚未执行,请运行以下命令,执行所创建命名空间的所有 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>
更新 TLS 证书的密钥。
运行此 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 -
为代理的 X.509 证书续订密钥。
运行此kubectl
命令以更新现有 密钥 509存储代理的 X. 证书:
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 客户端身份验证
先决条件
在使用 X.509 保护分片集群之前,请部署 TLS 加密的分片集群。
启用 X.509 客户端身份验证
复制示例分片集群资源。
更改此 YAML 文件的设置,以匹配所需的分片集群配置。
1 2 apiVersion: mongodb.com/v1 3 kind: MongoDB 4 metadata: 5 name: <my-sharded-cluster> 6 spec: 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 ...
将复制的示例部分粘贴到现有的分片集群资源中。
打开您首选的文本编辑器并粘贴 对象 规范位于资源文件末尾的spec
部分。
为分分片集群资源配置常规 X.509 设置。
要在部署中启用TLS和 X.509,请在 Kubernetes 对象中配置以下设置:
更新并重新启动分片集群部署。
在任意目录中,调用以下Kubernetes命令来更新并重新启动分片分片集群:
kubectl apply -f <sharded-cluster-conf>.yaml
跟踪部署状态。
要检查 MongoDB
资源的状态,请使用以下命令:
kubectl get mdb <resource-name> -o yaml -w
设置 -w
(观看) 标志后,当配置更改时,输出将立即刷新,直到状态阶段达到 Running
状态。要了解有关资源部署状态的详情,请参阅 Kubernetes Operator 故障排除。
为分片集群续订 X.509 证书
如果您已经创建了证书,我们建议您使用以下过程定期续订证书。
注意
要自动续订 Ops Manager 部署的证书,请考虑设置证书经理集成。
将kubectl
配置为默认命名空间。
如果您尚未执行,请运行以下命令,执行所创建命名空间的所有 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>
更新分片 TLS 证书的密钥。
运行该 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 -
更新配置服务器 TLS 证书的密钥。
运行此 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 -
为代理的 X.509 证书续订密钥。
运行此kubectl
命令以更新现有 密钥 509存储代理的 X. 证书:
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 -