`
worldly
  • 浏览: 43733 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

mongodb3.x安全权限访问控制

阅读更多

MongoDB安装完成后,有两种启动方式:

 

>mongod 

 这是默认启动方式,没有开启auth权限验证,或者

 

 

>mongod --auth

 这是使用auth权限验证。在这种模式下,每次操作一个一个库前,必须做auth验证,而且每次默认首先进入的是test db,所以一旦开启验证,必须确保test添加了验证。如下是创建用户的简要过程。

 

以关闭auth验证启动MongoDB,创建一个有grant权限的用户,即账号管理,

 

> use admin
switched to db admin
> db.createUser(
...   {
...     user: "dba",
...     pwd: "dba",
...     roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
...   }
... )
Successfully added user: {
    "user" : "dba",
    "roles" : [
        {
            "role" : "userAdminAnyDatabase",
            "db" : "admin"
        }
    ]
}

 这样user("dba","dba")创建完成,它保存在admin中,角色是userAdminAnyDatabase(用户级别的数据库管理权限),以后可以用来管理其他的用户账号,这里总结下MongoDB的roles角色。

 

Built-In Roles(内置角色) 具体角色
1. 数据库用户角色:read、readWrite;
    2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;
    3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
    4. 备份恢复角色:backup、restore;
    5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
    6. 超级用户角色:root 
    // 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
    7. 内部角色:__system
Read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

这样,先看下变化

 

> show dbs
admin  0.000GB
local  0.000GB
test   0.000GB
young  0.006GB
> use admin
switched to db admin
> show collections
system.users
system.version

 可以清楚的看到,数据库里面多了admin,查看admin中的集合,可以发现,我们新建的用户都保存在system.users这个集合中,通过命令查看刚才新建的命令:

> db.system.users.find({user:"dba"}).pretty();
{
	"_id" : "admin.dba",
	"user" : "dba",
	"db" : "admin",
	"credentials" : {
		"SCRAM-SHA-1" : {
			"iterationCount" : 10000,
			"salt" : "bFBofkgvlS9/DEfuYBYFBA==",
			"storedKey" : "QAwo9n5KQ/ewyu/RJiJX8fk5LqY=",
			"serverKey" : "HUqkLsGk1g9NAfoheoQBuauwRo8="
		}
	},
	"roles" : [
		{
			"role" : "userAdminAnyDatabase",
			"db" : "admin"
		}
	]
}

 接下来,我们分别为test创建一个具有readWrite权限的用户test:

> db.createUser(
... ...   {
... ...     user: "test",
... ...     pwd: "test",
... ...     roles: [ { role: "readWrite", db: "test" } ]
... ...   });
Successfully added user: {
	"user" : "test",
	"roles" : [
		{
			"role" : "readWrite",
			"db" : "test"
		}
	]
}

 ,为young库创建readWrite权限的用户run:

> db.createUser(
... ...   {
... ...     user: "run",
... ...     pwd: "run",
... ...     roles: [ { role: "readWrite", db: "young" } ]
... ...   })
Successfully added user: {
	"user" : "run",
	"roles" : [
		{
			"role" : "readWrite",
			"db" : "young"
		}
	]
}

 

> db.createUser(
... ...   {
... ...     user: "run",
... ...     pwd: "run",
... ...     roles: [ { role: "readWrite", db: "young" } ]
... ...   })
Successfully added user: {
	"user" : "run",
	"roles" : [
		{
			"role" : "readWrite",
			"db" : "young"
		}
	]

 这样基本的用户创建完毕,最后总的来看一下刚才的所有的用户:

> db.system.users.find({},{_id:0,credentials:0}).pretty();
{
	"user" : "dba",
	"db" : "admin",
	"roles" : [
		{
			"role" : "userAdminAnyDatabase",
			"db" : "admin"
		}
	]
}
{
	"user" : "run",
	"db" : "young",
	"roles" : [
		{
			"role" : "readWrite",
			"db" : "young"
		}
	]
}
{
	"user" : "test",
	"db" : "test",
	"roles" : [
		{
			"role" : "readWrite",
			"db" : "test"
		}
	]
}

 至此,用户权限的创建完成。以开启auth权限验证启动MongoDB(mongod --auth),并做一些基本的操作:

localhost:~ yfangjun$ mongo
MongoDB shell version: 3.2.3
connecting to: test
> db.auth("test","test");
1
> use admin
switched to db admin
> db.auth("dba","dba");
1
> show dbs;
admin  0.000GB
local  0.000GB
test   0.000GB
young  0.006GB
> use young;
switched to db young
> db.auth("run","run");
1
> show collections;
app143897298787642
restaurants
> db.restaurants.find({},{_id:0,"address.coord":1}).limit(1);
{ "address" : { "coord" : [ -73.961704, 40.662942 ] } }

 

 

 

分享到:
评论

相关推荐

    mongodb demo3.x

    同时,权限管理也更加精细,可以对特定数据库或集合设置访问控制,确保数据安全。 最后,MongoDB 3.x版本的另一个重要改进是支持地理空间索引和查询,这使得地理位置相关的数据处理变得更加便捷,对于需要处理位置...

    Mongodb4.x介绍以及Mongodb账户权限配置1

    MongoDB 提供了不同级别的角色来控制用户权限,主要分为以下三类: 1. **数据库用户角色**:如 `read` 和 `readWrite`。`read` 角色允许用户只读访问数据库,而 `readWrite` 角色允许读写操作。 2. **数据库管理...

    mongodb-linux-s390x-rhel72-4.2.0.tgz

    - 数据库的安全管理包括用户认证、角色权限控制和网络访问限制,确保数据安全。 - 为了生产环境的最佳实践,建议开启认证,设置防火墙规则,并定期备份数据。 6. 性能调优和监控: - MongoDB有许多性能监控工具...

    解决Linux上MongoDB启动脚本错误---env: /etc/init.d/mongodb : no such file or directory

    如果MongoDB是作为守护进程运行,还需要考虑安全性,如设置适当的用户权限、启用访问控制和防火墙规则。 9. **社区资源** 当遇到困难时,不要忘记利用开源社区的力量,如iteye博客、Stack Overflow、MongoDB官方...

    MongoDB Studio 3t x64 官方最新版本 安装即用

    7. **安全与权限管理**:该工具允许用户配置MongoDB的访问控制,管理用户角色和权限,确保数据的安全性。 8. **集群管理**:支持对MongoDB复制集和分片集群的管理,可以轻松添加、删除和监控节点,以及查看复制状态...

    mongodb 连接工具studio-3t-x64

    8. **安全与权限管理**:可以配置用户、角色和访问控制列表,确保 MongoDB 系统的安全性。 9. **版本控制**:集成 Git,实现对数据库对象的版本控制,便于团队协作和代码审查。 10. **SSH 隧道**:支持通过 SSH ...

    mongodb离线安装

    - 对于生产环境中的MongoDB部署,建议根据实际情况调整配置参数,如启用身份验证、设置更严格的权限控制等,以提高系统的安全性。 - 如在安装过程中遇到问题,可参考官方文档或社区资源寻求解决方案。

    mongodb 手册,帮助文件。

    - **访问控制**:使用角色和权限管理访问。 **3.3 复制和分片配置** - **复制集**:设置复制集以提高数据冗余性和可用性。 - **分片**:将大型数据集分布在多个物理服务器上以提高性能和可扩展性。 **3.4 在同一...

    spring-framework-3.2.x.zip

    Spring 3.2.x中的AOP模块提供了强大的切面编程支持,可以用于日志记录、事务管理、权限控制等功能。通过`@Aspect`、`@Before`、`@After`等注解,开发者可以轻松定义和应用切面,实现代码的解耦和模块化。 三、数据...

    studio-3t tool for MongoDB

    5. 安全管理:允许用户管理MongoDB的用户权限和角色,以及设置访问控制,确保数据库安全。 6. 性能监控:提供实时性能监控功能,显示数据库的运行状态,如查询性能、内存使用等,帮助优化数据库性能。 7. 备份与...

    linux平台安装mongodb菜鸟教程.docx

    MongoDB 是一个流行的开源文档数据库...在生产环境中,你可能需要考虑更多的设置,比如配置文件、日志管理、权限控制、复制集以及自动化启动服务等。同时,确保定期更新MongoDB到最新稳定版本以获取安全修复和新特性。

    Spring3.x 企业级应用开发源码

    本源码集合可能包含了基于Spring3.x的典型企业级应用的实现,涵盖了诸如数据访问、事务管理、安全控制、MVC web开发等多个方面。 首先,Spring的核心是IoC容器,它负责管理对象的生命周期和对象之间的依赖关系。...

    CAC_SpringBoot_MongoDB.rar

    SpringBoot_MongoDB”深入实践了SpringBoot与NoSQL数据库MongoDB的整合,同时也结合了传统的SQL数据库MySQL和ORM框架MyBatis,以及SpringMVC,构建了一个完整的用户、角色、菜单授权模型,实现了细粒度的权限控制。...

    NoSql数据库mongodb应用说明.pdf

    - 用户权限管理:MongoDB 支持用户认证和角色权限,可以设置访问控制来保护数据。 - SSL 加密:可以启用 SSL 连接以保证数据传输的安全性。 7. **监控与管理** - MongoDB 提供了多种监控工具,如 mongostat、...

    mongodb-compass-community-1.16.3-win32-x64.zip

    6. 安全性:提供对数据库访问控制列表(ACL)的可视化管理,方便设置用户权限,确保数据安全。 7. 数据操作:支持基本的数据修改操作,如添加、更新和删除文档,以及聚合操作,便于数据分析。 8. 应用连接:能够...

    mongodb-linux-x86_64-rhel70-4.2.1.tgz

    4. **安全增强**:增强了身份验证和访问控制,包括支持TLS/SSL连接和X509认证,以及更严格的默认安全设置。 5. **交易支持**:MongoDB 4.2引入了多文档ACID事务,这使得它更适合处理复杂的业务逻辑,尤其是在需要跨...

    mongodb的java驱动3.2版本

    10. **兼容性和升级**:Java驱动3.2版本与MongoDB 3.x系列服务器兼容,但请注意,随着MongoDB服务器的更新,驱动程序也需要相应升级以利用新特性并修复已知问题。 总的来说,MongoDB的Java驱动3.2版本为Java开发者...

    Robo的mongodb的可视化工具

    6. 安全管理:Robo 3T也支持MongoDB的用户管理,包括创建、编辑和删除用户,以及设置角色和权限,确保数据库的安全性。 7. SSH隧道:对于远程访问或安全连接,Robo 3T支持通过SSH建立隧道,确保数据传输的安全。 8...

    MongoDB安装包及一键启动脚本

    强烈建议在生产环境中配置身份验证和访问控制,以保护数据安全。 10. **备份和恢复**: MongoDB提供了`mongodump`和`mongorestore`工具,用于备份和恢复数据。定期执行备份计划是保障数据安全的重要措施。 通过以上...

Global site tag (gtag.js) - Google Analytics