MongoDB用户管理

╰半橙微兮° 2021-12-15 07:35 376阅读 0赞

文章目录

  • 用户管理
    • 认证数据库
    • 用户管理
      • 常用的内置角色
        • 数据库用户角色
        • 数据库管理角色
      • 创建用户
      • 示例
      • 删除用户
      • 查看用户信息
    • 验证方式
    • 补充
    • 参考文档

用户管理

MongoDB使用基于角色的访问控制(RBAC)来确定用户的访问权限。用户被赋予一个或多个角色决定了用户的访问或特权MongoDB的资源和操作 用户可以执行。用户应该只拥有确保系统具有最小权限所需的最小权限集。

MongoDB系统的每个应用程序和用户都应映射到不同的用户。此访问隔离有助于访问撤销和持续的用户维护。

认证数据库

添加用户时,可以在特定数据库中创建用户。该数据库是用户的身份验证数据库。

用户可以拥有跨不同数据库的权限; 也就是说,一个数据库中创建的用户可以拥有对其他数据库执行操作的权限。

用户的名称和身份验证数据库充当该用户的唯一标识符。也就是说,如果两个用户具有相同的名称但是在不同的数据库中创建,则它们是两个单独的用户。如果您打算让单个用户拥有多个数据库的权限,请在适用的数据库中创建具有角色的单个用户,而不是在不同的数据库中多次创建用户。

用户管理

常用的内置角色

数据库用户角色

  • read:提供读取数据的权限
  • readWrite:提供对数据的读写权限

数据库管理角色

  • dbAdmin:提供执行管理任务(如与架构相关的任务,索引和收集统计信息)的功能。此角色不授予用户和角色管理权限。
  • dbOwner:数据库所有者可以对数据库执行任何管理操作。
  • userAdmin:提供在当前数据库上创建和修改角色和用户的功能。由于该userAdmin角色允许用户向任何用户(包括他们自己)授予任何权限,因此该角色还间接地提供 对数据库的超级用户访问权限,或者,如果范围限定为admin 数据库,则提供对群集的访问权限。

创建用户

  1. db.createUser(
  2. {
  3. user: "<name>", # 用户名
  4. pwd: "<cleartext password>", # 密码
  5. customData: { <any information> }, # 任意内容,相当于备注
  6. roles: [
  7. { role: "<role>", # 内置常用的角色有root,dbAdmin,readWrite,read
  8. db: "<database>" } | "<role>", # 管理的数据库对象
  9. ...(可以添加多个角色)
  10. ]})

示例

示例1:切换到reporting认证数据库,创建用户reportsUser,密码为’12345678’,权限为对reporting,products,sales拥有只读权限,对accounts库拥有读写权限

  1. use reporting
  2. db.createUser(
  3. {
  4. user: "reportsUser",
  5. pwd: "12345678",
  6. roles: [
  7. { role: "read", db: "reporting" },
  8. { role: "read", db: "products" },
  9. { role: "read", db: "sales" },
  10. { role: "readWrite", db: "accounts" }
  11. ]
  12. }
  13. )

示例2:创建超级管理员用户,管理所有数据库

  1. use admin
  2. db.createUser(
  3. {
  4. user: "root",
  5. pwd: "password",
  6. roles: [ { role: "root", db: "admin" } ]
  7. })

示例3:test库管理用户

  1. use test
  2. db.createUser(
  3. {
  4. user: "admin",
  5. pwd: "password",
  6. roles: [ { role: "dbAdmin", db: "test" } ]
  7. })

示例4:创建app1用户,对test拥有读写权限

  1. use test
  2. db.createUser(
  3. {
  4. user: "app1",
  5. pwd: "password",
  6. roles: [ { role: "readWrite" ,db: "test" } ]
  7. })

示例5:创建app2用户,对test只读权限

  1. use test
  2. db.createUser(
  3. {
  4. user: "app2",
  5. pwd: "password",
  6. roles: [ { role: "read" } ]
  7. })

删除用户

  1. use admin
  2. db.dropUser("root")

查看用户信息

  1. db.system.users.find().pretty();

验证方式

  • 连接实例时使用mongo命令行身份验证选项(–username, —password和 —authenticationDatabase),或mongodmongos

    方式1:

    mongo -umyUserAdmin -pabc123 127.0.0.1:27017/admin

    方式2:

    mongo —port 27017 -u myUserAdmin -p ‘abc123’ —authenticationDatabase ‘admin’

  • 首先连接到mongod或mongos 实例,然后针对身份验证数据库运行authenticate命令或 db.auth()方法。

    连接到数据库

    mongo

    切换到验证数据库

    use admin

    db.auth(‘myUserAdmin’,’abc123’)

补充

需要在配置文件开启验证

  1. security:
  2. authorization: enabled # 打开认证功能

参考文档

  • https://docs.mongodb.com/manual/

发表评论

表情:
评论列表 (有 0 条评论,376人围观)

还没有评论,来说两句吧...

相关阅读

    相关 mongodb用户管理1

    对于db,为保证数据的安全性,隔离用户权限,阻止非法用户对数据的访问,用户账户的管理十分重要。 1.db.auth()用户认证 db.auth( <username