如何在 MongoDB 中实现身份验证?

数据库 · 2015-10-01

如何在 MongoDB 中实现身份验证?

MongoDB 中,可以通过设置身份验证来增加数据库的安全性。MongoDB 提供了多种身份验证方法,包括内置用户角色管理系统LDAPKerberos 等。以下是使用内置用户和角色管理系统进行身份验证的一般步骤:

  1. 启用身份验证: 在 MongoDB 配置文件中启用身份验证。编辑 MongoDB 的配置文件(通常是 mongod.conf),添加以下配置项:

      authorization: enabled

这将启用身份验证机制。

  1. 重启 MongoDB 服务: 在修改配置文件后,重启 MongoDB 服务以使配置生效。
  2. 创建管理员用户: 连接到 MongoDB 服务器,并使用管理员权限创建一个管理员用户。启动 mongo shell 并连接到 MongoDB,然后执行以下命令:

    use admin
    db.createUser({
      user: "adminUser",
      pwd: "adminPassword",
      roles: ["userAdminAnyDatabase", "dbAdminAnyDatabase", "readWriteAnyDatabase"]
    })

    这将创建一个名为 adminUser 的管理员用户,并授予管理权限。

  3. 重新连接并使用身份验证: 使用新创建的管理员用户重新连接到 MongoDB,并启用身份验证。

    mongo -u adminUser -p

    在连接时,输入管理员用户的密码。

  4. 创建应用程序用户: 为你的应用程序创建一个专用的数据库和用户。在连接到 MongoDBmongo shell 后,执行以下命令:
use yourDatabase
db.createUser({
  user: "yourAppUser",
  pwd: "yourAppPassword",
  roles: ["readWrite"]
})

这将创建一个名为 yourAppUser 的应用程序用户,并授予读写权限。

  1. 连接并使用应用程序用户: 使用新创建的应用程序用户连接到 MongoDB。

    mongo -u yourAppUser -p --authenticationDatabase yourDatabase

    在连接时,输入应用程序用户的密码。

通过执行上述步骤,你可以成功地在 MongoDB 中启用身份验证,并设置不同权限的用户以用于不同的操作。这提高了
MongoDB 数据库的安全性,确保只有经过身份验证的用户才能访问数据库。

什么是角色和权限?如何配置它们?

MongoDB 中,角色(Roles)和权限(Privileges)是用于管理数据库访问和操作的重要概念。

角色(Roles): 角色是 MongoDB 中定义的一组权限集合。每个角色代表一组特定的数据库权限,可以授予用户或用户组。MongoDB 包含一些内置角色,如读取权限、写入权限、数据库管理员权限等。

权限(Privileges): 权限是指用户或用户组对数据库和集合的操作权限。权限控制了用户对数据库的 CRUD 操作(创建、读取、更新、删除)以及其他操作的能力。

配置角色和权限:

  1. 创建角色: 使用 db.createRole() 命令在 MongoDB 中创建角色。指定角色的名称、角色包含的权限以及其他相关选项。

    
    db.createRole({
      role: "customRole",
      privileges: [
     { resource: { db: "yourDatabase", collection: "" }, actions: ["find", "insert", "update"] }
      ],
      roles: []
    })

    在上面的示例中,创建了一个名为 customRole 的自定义角色,具有对 yourDatabase 数据库的查找、插入和更新操作的权限。

  2. 创建用户并分配角色: 使用 db.createUser() 命令在 MongoDB 中创建用户,并将角色分配给用户。

    
    db.createUser({
      user: "yourUser",
      pwd: "yourPassword",
      roles: ["customRole"]
    })

    在上面的示例中,创建了一个名为 yourUser 的用户,并分配了 customRole 角色。

  3. 内置角色: MongoDB 提供了一些内置的常用角色,例如 readreadWritedbAdminuserAdmin 等。可以通过将这些角色分配给用户来快速配置权限。

    
    db.createUser({
      user: "anotherUser",
      pwd: "anotherPassword",
      roles: ["readWrite", "dbAdmin"]
    })
    
  4. 查看用户及其权限: 使用 db.getUser() 命令查看用户及其分配的角色和权限。

    db.getUser("yourUser")
  5. 更新用户权限: 使用 db.grantRolesToUser()db.revokeRolesFromUser() 命令来更新用户的权限。

    db.grantRolesToUser("yourUser", ["readWrite"])

    上面的命令将向 yourUser 用户授予 readWrite 角色。

通过配置角色和权限,你可以细粒度地控制用户对 MongoDB 数据库的访问和操作。这对于确保安全性和按需授予访问权限非常有用。

mongodb
Theme Jasmine by Kent Liao