本页面介绍如何为 mongod(或 mongos)在使用 MongoDB Kubernetes Operator 控制器运行 MongoDB Search 和向量搜索时打开的与 mongot 的连接配置 TLS。在此连接上,mongot 运行监听服务器,mongod 是客户端。您通过 MongoDBSearch 资源的 spec.security.tls 块配置它。
本页面不涉及mongot mongod向 源数据开启的连接。有关该方向(包括 mongot 如何进行身份验证以及如何信任源 mongod 的证书)的详情,请参阅 保护从搜索到 MongoDB 的连接。
有关此页上引用的每个 MongoDBSearch 设置的完整模式,请参阅 MongoDB Search 和向量搜索设置。
TLS 模式
mongot 监听服务器支持三种概念模式:
模式 | 行为 |
|---|---|
残疾人 | 监听服务器仅接受明文连接。当省略 |
TLS | 监听服务器需要来自 |
mTLS | 监听服务器需要 TLS,并且要求客户端 ( |
Kubernetes 操作符 将此配置显示为单个 spec.security.tls 块。当源 mongod 也使用 TLS 时,监听服务器以 mTLS 模式运行。在这种情况下,mongot 会针对源 mongod 的 CA 验证客户端证书,而不是针对 spec.security.tls 上配置的 CA。要配置该信任,请参阅保护从搜索到 MongoDB 的连接。
配置监听服务器证书
要在 mongot 监听服务器上启用 TLS,请在 MongoDBSearch 资源上设置 spec.security.tls.certsSecretPrefix。Kubernetes 操作符按名称前缀从同一命名空间中的 Kubernetes Secret 资源查找 TLS 材料:
spec: security: tls: certsSecretPrefix: my-mongot
使用上述前缀,Kubernetes 操作符通过在这些前缀后附加固定后缀来推导 TLS 密钥名称。对于副本集,它会从名为 my-mongot-<name>-search-cert 的 Secret 中读取 tls.crt 和 tls.key 对,其中 <name> 是 MongoDBSearch 资源的 metadata.name。有关所有命名模式(包括分片集群部署),请参阅 spec.security.tls.certsSecretPrefix。在 mTLS 模式下,mongot 用于验证 mongod 客户端证书的 CA 来自于源 mongod 的 TLS 配置,而不是来自 spec.security.tls。请参阅 确保从 Search 到 MongoDB 的连接安全。
注意
spec.security.tls.certsSecretPrefix 是新部署的推荐字段。旧版 spec.security.tls.certificateKeySecretRef.name 字段仍受支持,当两者在同一 MongoDBSearch 资源上设置时,会优先使用旧版字段。旧版字段上的现有部署可继续工作,无需作任何更改。
已知限制
以下限制适用于 mongot TLS:
无可配置的密码套件。
mongot协商的密码套件不能通过MongoDBSearchCRD 或mongot配置进行配置。该套件固定为mongot附带的值。不支持 FIPS。
mongot在此版本中不提供 FIPS 验证的 TLS 模式。监听服务器上无主机名或 SAN 验证。
mongot验证入站客户端证书是否由可信CA签名,但不验证证书上的主题主机名或SAN条目。监听路径上的身份验证依赖证书权限和在保护从搜索到MongoDB的连接中配置的X.509主题标识名授权。最低 TLS 版本为 1.2。
mongot不接受 TLS 1.0 或 1.1 连接。
轮换 TLS 材料的流程与轮换客户端证书的流程相同:更新引用的 Secret 并重启 mongot 节点。有关该程序,请参阅 保护从搜索到 MongoDB 的连接。
警告
在运行的部署上启用 TLS 会导致短暂但真实的服务中断,而非无缝更改。mongot 的 gRPC 监听器是二进制的:它可以接受明文或 TLS,但不能同时接受两者。从禁用切换到 TLS 会将 mongot 和 mongod 的 searchTLSMode 滚动到一起,新的搜索查询在切换过程中会暂时失败。在已启用 TLS 的部署上轮换证书不会出现此间隙,因为监听器模式不会改变。规划初始 TLS 启用的维护窗口。