MongoDB的安全和身份认证(举例说明)

在前面的话

本文将详细描述了mondb安全相关的内容

总结

mondb安全主要包括以下4个方面

1。物理隔离

无论设计多么完美,在实施过程中总是有一些漏洞。如果我们能从mondb数据库物理隔离不安全的用户,我们不能以任何方式连接数据库,这是最安全的保护,但它通常是不切实际的。一些重要的数据可以被保存和放置在一个物理隔离的机房

2。网络隔离

许多公司都在内部网环境中,即使数据库中存在漏洞,也不能利用外部环境,因为内部网根本无法访问。

三.防火墙隔离

IP白名单可以配置防火墙,只有一些IP访问数据库,以及MonDB的安全可以有一定程度的增加。

4。用户名和密码的身份验证

用户名密码认证机制是最常见的mondb安全措施与上述3种方法进行比较。如果密码设置较简单,或连接的环境是不加密的,它可能会被第三方获取用户名和密码,导致mondb数据库的危险。

权威认证

mondb存储所有的用户信息在管理数据库收集system.users保存用户名,密码,数据库信息。Mondb不启用默认许可认证,可如果它可以连接到服务器连接到蒙德。使安全认证,您需要更改配置文件参数的授权,或授权。


然后,重新启动MOND。检查日志文件以发现许可认证已经打开


但是,不使用用户名和密码仍然可以连接到数据库。这是因为我们还没有创建用户。在用户创建和权限验证之后,如果不使用用户名和密码,它将无法连接到数据库。

角色管理

在管理用户之前,首先要了解角色管理

mondb支持角色的访问控制(RBAC)管理访问的mondb系统。用户可以授权一个或多个:裁判:确定用户的访问数据库的资源和操作的作用。在权限,用户无法访问系统

数据库角色在用户创建中的角色参数中设置。角色分为内置角色和自定义角色。

{已构建角色}

的mondb建立角色包括以下类别

1。数据库用户的角色


读取:允许用户读取指定的数据库。
读写:允许用户读取和写入指定的数据库


2。数据库管理员的角色


DbAdmin:允许用户创建和删除索引,查看统计,或访问system.profile,但没有角色和用户管理权限。
UserAdmin:提供了创建和修改当前数据库中的角色和用户的能力
DbOwner:提供对数据库执行任何管理操作的能力。这个角色将由读写,dbadmin授予特权,和useradmin角色。


三.集群管理的作用


ClusterAdmin:提供最强大的集群管理访问。结合clustermanager,遵循,角色的能力和hostmanager提供DropDatabase操作。
clustermanager:提供管理和监控业务集群上。您可以访问配置数据库和本地数据库,进行分裂和复制,分别。
遵循:提供只读访问监控工具,如mondb云经理和营运经理监控代理。
hostmanager:提供监控和管理服务器的能力。


4。备份恢复的作用


备份:提供备份数据的能力,使用mondb云经理备份代理,经理的备份代理,或者使用mondump
恢复:恢复使用monrestore提供数据的能力


5。所有数据库角色


ReadAnyDatabase:只有在管理数据库提供给用户所有的读取权限的数据库
ReadWriteAnyDatabase:只有在管理数据库提供给用户的所有读写数据库的权限
UserAdminAnyDatabase:只有在管理数据库提供给用户的所有数据库的useradmin权限
DbAdminAnyDatabase:只有在管理数据库提供给用户的所有数据库的dbadmin权限。


6。超级用户角色


根:为readwriteanydatabase,所有资源的访问dbadminanydatabase,userAdminAnyDatabase,clusteradmin,恢复和备份


7。内部角色


__system:提供任何操作数据库中的任何对象权限


{自定义角色}

除了使用内建的角色,MonDB也支持的db.createrole使用()来定义角色的方法

{ }只能在管理数据库中创建角色,否则将失败。

角色名称:自定义角色

特权:权限操作

角色:继承的角色。如果没有继承的角色,可以将其设置为空数组。


使用管理
Db.createRole(
{
作用:myclusterwideadmin
特权:{
{资源:{集群:true},动作:{addshard } },
{资源:{配置,集合:},操作:{ 查找
{资源:{分贝:用户,收藏的userscollection},{更新行动:
{资源:{db,集合},操作:{}
},
作用:{
{角色:读取
}
},
{多数




用户管理

{创建用户}

使用创建用户命令创建一个用户

用户:密码:用户名密码

customdata:描述的用户名密码(可选)

从角色继承什么角色类型:{角色:db:数据库名}


db.createuser({用户:密码:…


1。创建管理员用户

MonDB没有默认的管理员帐户,所以添加管理员帐户第一。切换到管理数据库,并添加的帐户是管理员帐户

管理数据库中,添加一个用户并给userAdminAnyDatabase作用


db.createuser({用户:管理员密码:的角色:123456



2。登录数据库并验证权限

如果认证()方法返回0,它代表的授权失败,和1个代表的授权成功。


Db.auth()



三.添加普通用户

一旦认证用户管理员,db.createuser()可以用来创建额外的用户,你可以指定mondb内置角色或用户定义的角色给用户


{ }需要在管理数据库中进行身份验证,否则身份验证不成功。


因为用户只有只读权限,所以数据无法写入。


4。创建超级用户


{查看用户}


Db.system.users.find()




{删除用户}


Db.dropUser()



{添加用户权限}


Db.grantRolesToUser()


加上只写在DB1数据库读取X用户权限


{修改的密码}


Db.changeUserPassword()




以上mondb安全身份认证和萧边共享你的全部内容。我希望能给你一个参考,希望你能支持它。