MongoDB 安全和访问权限控制

MongoDB的访问控制能够有效保证数据库的安全,访问控制是指绑定Application监听的IP地址,设置监听端口,使用账户和密码登录

一,访问控制的参数

1,绑定IP地址

mongod 参数:--bind_ip <ip address>

默认值是所有的IP地址都能访问,该参数指定MongoDB对外提供服务的绑定IP地址,用于监听客户端 Application的连接,客户端只能使用绑定的IP地址才能访问mongod,其他IP地址是无法访问的。

2,设置监听端口

mongod 参数:--port <port>

MongoDB 默认监听的端口是27017,该参数显式指定MongoDB实例监听的TCP 端口,只有当客户端Application连接的端口和MongoDB实例监听的端口一致时,才能连接到MongoDB实例。

3,启用用户验证

mongod 参数:--auth 

默认值是不需要验证,即 --noauth,该参数启用用户访问权限控制;当mongod 使用该参数启动时,MongoDB会验证客户端连接的账户和密码,以确定其是否有访问的权限。如果认证不通过,那么客户端不能访问MongoDB的数据库。

Enables authorization to control user’s access to database resources and operations. When authorization is enabled, MongoDB requires all clients to authenticate themselves first in order to determine the access for the client.

4,权限认证

mongo 参数:--username <username>, -u <username>
mongo 参数:--password <password>, -p <password>
mongo 参数:--authenticationDatabase <dbname>  指定创建User的数据库;在特定的数据库中创建User,该DB就是User的authentication database。

在连接mongo时,使用参数 --authenticationDatabase,会认证 -u 和 -p 参数指定的账户和密码。如果没有指定验证数据库,mongo使用连接字符串中指定的DB作为验证数据块。

二,基于角色的访问控制(Role-Based Access Control)

角色是授予User在指定资源上执行指定操作的权限,MongoDB官方手册对角色的定义是:

A role grants privileges to perform the specified actions on resource.

MongoDB为了方便管理员管理权限,在DB级别上预先定义了内置角色;如果用户需要对权限进行更为细致的管理,MongoDB允许用户创建自定义的角色,能够在集合级别上控制User能够执行的操作。
MongoDB使用角色(Role)授予User访问资源的权限,Role决定User能够访问的数据库资源和执行的操作。一个User能够被授予一个或多个Role,如果User没有被授予Role,那么就没有访问MongoDB系统的权限。

A user is granted one or more roles that determine the user’s access to database resources and operations. Outside of role assignments, the user has no access to the system.

1,内置角色(Built-In Roles)

内置角色是MongoDB预定义的角色,操作的资源是在DB级别上。MongoDB拥有一个SuperUser的角色:root,拥有最大权限,能够在系统的所有资源上执行任意操作。

数据库用户角色(Database User Roles):

read:授予User只读数据的权限

readWrite:授予User读写数据的权限

数据库管理角色(Database Administration Roles):

dbAdmin:在当前dB中执行管理操作

dbOwner:在当前DB中执行任意操作

userAdmin:在当前DB中管理User

备份和还原角色(Backup and Restoration Roles):

backup

restore

跨库角色(All-Database Roles):

readAnyDatabase:授予在所有数据库上读取数据的权限

readWriteAnyDatabase:授予在所有数据库上读写数据的权限

userAdminAnyDatabase:授予在所有数据库上管理User的权限

dbAdminAnyDatabase:授予管理所有数据库的权限

集群管理角色(Cluster Administration Roles):

clusterAdmin:授予管理集群的最高权限

clusterManager:授予管理和监控集群的权限,A user with this role can access the config and local databases, which are used in sharding and replication, respectively.

clusterMonitor:授予监控集群的权限,对监控工具具有readonly的权限

hostManager:管理Server

2,用户自定义的角色(User-Defined Roles)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/b5f45f24586d2c8da498acf43ad04f51.html