首页主机资讯MongoDB在Ubuntu上的认证方式

MongoDB在Ubuntu上的认证方式

时间2025-10-14 20:36:03发布访客分类主机资讯浏览730
导读:MongoDB在Ubuntu上的认证方式及配置流程 一、基础认证配置(SCRAM-SHA-256/SCRAM-SHA-1) SCRAM(Salted Challenge-Response Authentication Mechanism)是...

MongoDB在Ubuntu上的认证方式及配置流程

一、基础认证配置(SCRAM-SHA-256/SCRAM-SHA-1)

SCRAM(Salted Challenge-Response Authentication Mechanism)是MongoDB默认的认证机制,Ubuntu环境下主要支持SCRAM-SHA-256(推荐)和SCRAM-SHA-1。配置步骤如下:

1. 启用认证

编辑MongoDB主配置文件(/etc/mongod.conf),在security section添加或修改以下内容,启用认证功能:

security:
  authorization: enabled

保存后重启MongoDB服务使配置生效:

sudo systemctl restart mongod

2. 创建管理员用户

使用mongo shell连接到MongoDB(默认无认证),切换至admin数据库(系统级权限数据库),创建具备root角色(最高权限)的管理员用户:

use admin
db.createUser({

  user: "admin",
  pwd: "your_secure_password", // 替换为强密码
  roles: ["root"]
}
)
exit

3. 使用管理员认证连接

后续连接MongoDB需通过管理员账户验证,示例如下:

# 命令行连接(本地)
mongo -u admin -p your_secure_password --authenticationDatabase admin

# 图形化工具(如MongoDB Compass)连接字符串示例
mongodb://admin:your_secure_password@localhost:27017/admin

4. 创建数据库特定用户

为特定数据库(如mydb)创建普通用户,分配所需权限(如readWrite读写权限、dbOwner数据库所有者权限):

use mydb
db.createUser({

  user: "myuser",
  pwd: "user_password",
  roles: ["readWrite", "dbOwner"]
}
)
exit

二、高级认证方式(可选)

除基础SCRAM认证外,Ubuntu环境还可配置以下高级认证机制,提升安全性:

1. x.509证书认证

通过SSL/TLS证书实现客户端与服务端的双向认证,适用于高安全需求场景。配置步骤包括:

  • 生成CA证书、服务器证书和客户端证书(可使用openssl工具);
  • /etc/mongod.conf中配置SSL参数:
    net:
      ssl:
        mode: requireSSL
        PEMKeyFile: /path/to/server.pem  # 服务器证书
        CAFile: /path/to/ca.pem          # CA证书
    security:
      clusterAuthMode: x509            # 集群内部认证模式
    
  • 创建用户时指定证书DN(Distinguished Name):
    use admin
    db.createUser({
    
      user: "certuser",
      roles: ["readWrite"],
      authenticationRestrictions: [{
    
        clientSource: ["192.168.1.0/24"], // 允许的客户端IP段
        serverAddress: ["mongoserver.local"] // 服务器主机名
      }
    ]
    }
    )
    

2. LDAP认证

集成企业级LDAP(如OpenLDAP、Active Directory)实现集中用户管理,配置步骤包括:

  • /etc/mongod.conf中配置LDAP参数:
    security:
      ldap:
        servers: ldap://ldap.example.com
        bind:
          method: simple
          queryUser: "cn=admin,dc=example,dc=com"
          queryPassword: "ldap_admin_password"
        userToDNMapping: '[{
    "match": "(.+)", "substitution": "cn=$1,ou=users,dc=example,dc=com"}
        ]'
        authz:
          queryTemplate: "dc=example,dc=com??sub?(memberOf=cn=mongodb-users,ou=groups,dc=example,dc=com)"
    
  • 用户连接时无需在MongoDB中创建本地账户,直接使用LDAP凭证认证:
    mongo -u ldapuser -p ldap_password --authenticationMechanism PLAIN --authenticationDatabase "$external"
    

三、认证相关注意事项

  • 密码策略:建议使用强密码(包含大小写字母、数字、特殊字符),定期更换密码;可通过db.updateUser()修改现有用户密码。
  • 权限最小化:遵循“最小权限原则”分配用户角色,避免授予过高权限(如不为应用用户分配root角色)。
  • 网络隔离:通过net.bindIp限制MongoDB监听IP(如仅绑定127.0.0.1和内网IP),减少暴露风险。
  • 审计日志:开启审计功能记录用户操作(如查询、修改、删除),便于安全追溯:
    security:
      auditLog:
        destination: file
        format: JSON
        path: /var/log/mongodb/audit.json
    

以上配置覆盖了Ubuntu环境下MongoDB的主要认证方式,可根据实际需求选择基础或高级方案,确保数据库访问安全。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: MongoDB在Ubuntu上的认证方式
本文地址: https://pptw.com/jishu/726245.html
MongoDB在Ubuntu上的日志级别如何设置 ubuntu gitlab容器化实践指南

游客 回复需填写必要信息