You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置MongoDB仅允许X509认证,禁用其他连接方式?

让MongoDB仅允许X509认证登录

当前MongoDB已配置TLS加密和授权,但以下三种连接方式均可成功登录,需调整配置仅保留X509认证方式:

当前配置文件

net:
  port: 27017
  bindIp: 127.0.0.1
  tls:
      mode: requireTLS
      certificateKeyFile: D:\certnew\MongoDb\Test3\test-server.pem
      CAFile: D:\certnew\MongoDb\Test3\test-ca.pem

security:
  authorization: enabled
  clusterAuthMode: x509

测试过的连接命令

  • 使用服务器证书连接:
mongosh --tls --tlsCertificateKeyFile D:\certnew\MongoDb\Test3\test-server.pem --tlsCAFile D:\certnew\MongoDb\Test3\test-ca.pem
  • 使用客户端证书无认证连接:
mongosh --tls --tlsCertificateKeyFile D:\certnew\MongoDb\Test3\test-client.pem --tlsCAFile D:\certnew\MongoDb\Test3\test-ca.pem
  • 使用X509认证连接:
mongosh --tls --tlsCertificateKeyFile D:\certnew\MongoDb\Test3\test-client.pem --tlsCAFile D:\certnew\MongoDb\Test3\test-ca.pem --authenticationDatabase '$external' --authenticationMechanism MONGODB-X509

解决方案

1. 修改MongoDB配置文件

在security区块添加authenticationMechanisms参数,强制所有连接必须使用X509认证机制:

net:
  port: 27017
  bindIp: 127.0.0.1
  tls:
      mode: requireTLS
      certificateKeyFile: D:\certnew\MongoDb\Test3\test-server.pem
      CAFile: D:\certnew\MongoDb\Test3\test-ca.pem

security:
  authorization: enabled
  clusterAuthMode: x509
  authenticationMechanisms: MONGODB-X509  # 强制仅允许X509认证

2. 清理无关用户与权限

用X509认证方式登录MongoDB后,执行以下操作:

  • 删除所有非X509类型的用户(如admin库中的普通账号):
use admin
db.dropUser("your_non_x509_username")  # 替换为实际用户名
  • 确保匿名用户无任何权限:
use admin
// 撤销匿名用户的高权限(若存在)
db.runCommand({ revokeRolesFromUser: "__system", roles: [{ role: "root", db: "admin" }] })

3. 验证效果

重启MongoDB服务后,尝试之前的非X509认证连接命令,均会因缺少合法认证机制被拒绝,仅指定MONGODB-X509参数的连接能成功登录。

内容的提问来源于stack exchange,提问作者dheepakraj govindarajan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 09:33:12