数据库审计(Database auditing)
MongoDB提供了内置的数据库审计功能,可以记录用户在MongoDB上的所有操作,包括对集合的查询、更新、删除等操作。管理员可以使用审计日志来监控数据库的访问,识别潜在的安全问题,并采取必要的措施来保护数据。以下是一个启用审计日志的示例:
代码语言:javascript复制systemLog:
destination: file
path: /var/log/mongodb/mongod.log
logAppend: true
auditLog:
destination: file
format: JSON
path: /var/log/mongodb/mongod-audit.log
filter: '{ atype: { $in: [ "createCollection", "dropCollection", "insert", "update", "delete" ] } }'
在上面的示例中,我们启用了审计日志,将日志输出到“/var/log/mongodb/mongod-audit.log”文件中,仅记录“createCollection”、“dropCollection”、“insert”、“update”和“delete”等操作。
MongoDB的权限控制
MongoDB的权限控制是通过用户角色来实现的。每个角色都有一组特定的权限,可以授予用户或其他角色。以下是MongoDB的一些常见角色:
数据库用户角色(Database User Roles)
这些角色可以授予用户对数据库的特定权限,例如读取、写入、更新或删除文档。
- read:只读权限,用户可以读取数据库中的数据。
- readWrite:读写权限,用户可以读取和写入数据库中的数据。
- dbAdmin:数据库管理权限,用户可以管理数据库的集合和索引。
- userAdmin:用户管理权限,用户可以创建和管理其他用户。
数据库管理角色(Database Administration Roles)
这些角色可以授予用户对数据库管理操作的权限,例如备份、还原、调试等。
- backup:备份权限,用户可以备份数据库。
- restore:还原权限,用户可以还原数据库。
- dbOwner:数据库所有者权限,用户可以执行所有数据库管理操作。
- clusterAdmin:集群管理权限,用户可以管理MongoDB集群。
系统管理角色(System Administration Roles)
这些角色可以授予用户对MongoDB服务器的管理权限,例如访问日志、监控服务器性能等。
- readAnyDatabase:读取任意数据库的权限。
- readWriteAnyDatabase:读写任意数据库的权限。
- userAdminAnyDatabase:用户管理任意数据库的权限。
- dbAdminAnyDatabase:数据库管理任意数据库的权限。
- superuser:超级用户权限,用户可以执行任何操作。
以下是一个为用户授予角色的示例:
代码语言:javascript复制use mydb
db.createUser(
{
user: "user",
pwd: "password",
roles: [ { role: "readWrite", db: "mydb" }, { role: "backup", db: "mydb" } ]
}
)
在上面的示例中,我们为“user”用户指定了“readWrite”和“backup”角色。