返回

MongoDB 数据库设置用户前后区别:安全与权限控制是关键

后端

设置用户前后的区别

在 MongoDB 数据库中,刚安装好的数据库是没有用户和密码的。这意味着任何人都可以访问数据库并进行数据的增删改查。这显然存在极大的安全隐患。

设置用户后,就可以为不同用户分配不同的权限。例如,您可以为某些用户授予读写权限,而只为其他用户授予只读权限。这样,您就可以确保只有授权用户才能访问和修改数据。

此外,设置用户后,还可以启用审计功能。这样,您就可以跟踪谁在何时访问了数据库以及做了什么。这对于确保数据库的安全性和合规性非常重要。

设置用户的步骤

要设置 MongoDB 数据库用户,您可以按照以下步骤操作:

  1. 登录 MongoDB 数据库。
  2. 创建一个新用户。您可以使用以下命令:
db.createUser(
  {
    user: "newuser",
    pwd: "password",
    roles: [
      {
        role: "readWrite",
        db: "mydb"
      }
    ]
  }
)
  1. 为新用户授予权限。您可以使用以下命令:
db.grantRolesToUser("newuser", [
  {
    role: "readWrite",
    db: "mydb"
  }
])
  1. 测试新用户是否可以访问数据库。您可以使用以下命令:
db.auth("newuser", "password")

如果成功,您将看到以下消息:

MongoDB shell version v4.4.6
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("74bb63f3-9d89-4c41-9d44-6c0f885287d8") }
MongoDB Enterprise > db.auth("newuser", "password")
1

启用审计功能

要启用 MongoDB 数据库的审计功能,您可以按照以下步骤操作:

  1. 登录 MongoDB 数据库。
  2. 创建一个新的审计数据库。您可以使用以下命令:
db.createCollection("auditlog")
  1. 启用审计功能。您可以使用以下命令:
db.auditCommand.insertOne({
  "enabled": true,
  "destination": "auditlog"
})
  1. 测试审计功能是否正常工作。您可以使用以下命令:
db.runCommand({
  "find": "auditlog",
  "filter": {
    "type": "auth"
  }
})

如果成功,您将看到以下消息:

MongoDB Enterprise > db.runCommand({ "find": "auditlog", "filter": { "type": "auth" } })
{
	"cursor" : {
		"firstBatch" : [
			{
				"_id" : ObjectId("62704a3c5c378071483d360c"),
				"timestamp" : ISODate("2022-05-11T03:14:36.841Z"),
				"type" : "auth",
				"address" : "127.0.0.1:61279",
				"client" : "127.0.0.1",
				"user" : "admin",
				"action" : "AUTHENTICATE",
				"success" : true
			}
		]
	},
	"ok" : 1
}

结论

通过设置用户和启用审计功能,您可以显著提高 MongoDB 数据库的安全性和合规性。这对于保护您的敏感数据免遭未经授权的访问和修改非常重要。