关于后端:MongoDB-安全认证

37次阅读

共计 2147 个字符,预计需要花费 6 分钟才能阅读完成。

每日一句

Sometimes your whole life boils down to one insane move.
人毕生中出人头地的机会不多,一旦有了肯定要抓住!

概述

默认状况下,MongoDB 实例启动运行时是没有启用用户拜访权限管制的,也就是说,在实例本机服务器上都能够随便连贯到实例进行各种操作,MongoDB 不会对连贯客户端进行用户验证,这是十分危险的。

能够通过以下的几种形式来保障 MongoDB 的平安:

  • 应用新的端口,默认的 27017 端口如果一旦晓得了 IP 就能连贯上,不太平安
  • 设置 MongoDB 的网络环境。最好将 MongoDB 部署到公司服务器内网,这样外网是拜访不到的。公司外部拜访应用 VPN 等。
  • 开启平安认证。认证要同时设置服务器之间的外部认证形式,同时设置客户端连贯到集群的账号密码认证形式。

为了强制开启用户访问控制(用户验证),则须要在 MongoDB 实例启动时应用选项 --auth 或在指定启动配置文件中增加选项 auth=true

相干概念

启动访问控制

MongoDB 应用的是基于角色的访问控制(Role-Based-Access-Control,RBAC)来治理用户对实例的拜访。通过对用户授予一个或多个角色来管制用户拜访数据库资源的权限和数据库操作的权限,在对用户调配角色之前,用户无法访问实例。

角色

在 MongoDB 中通过角色对用户授予相应数据库资源的操作权限。每个角色当中的权限能够显式指定,也能够通过继承其余角色的权限,或者两者都存在的权限。

权限

权限由指定的数据库资源(resource)以及容许在指定资源上进行的操作(action)组成。

  • 资源(resource):数据库、汇合、局部汇合和集群
  • 操作(action):对资源进行的增、删、改、查(CRUD)操作

角色

在角色定义时能够蕴含一个或多个已存在的角色,新创建的角色会继承蕴含的角色所有的权限。在同一个数据库中,新创建角色能够继承其余角色的权限,在 admin 数据库中创立的角色能够继承在其它任意数据库中角色的权限。

角色相干命令

# 查问所有角色权限(仅用户自定义角色)
db.runCommand({rolesInfo: 1})

# 查问所有角色权限(蕴含内置角色)db.runCommand({rolesInfo: 1, showBuiltinRoles: true})

# 查问以后数据库中的某角色的权限
db.runCommand({rolesInfo: "<rolename>"})

# 查问其它数据库中指定的角色权限
db.runCommand({rolesInfo: { role: "<rolename>", db: "<database>"} }

# 查问多个角色权限
db.runCommand({ rolesInfo: [ "<rolename>", { role: "<rolename>", db: "<database>"}, ... ] } )

罕用的内置角色:

  • 数据库用户角色:readreadWrite
  • 所有数据库用户角色:readAnyDatabasereadWriteAnyDatabaseuserAdminAnyDatabasedbAdminAnyDatabase
  • 数据库治理角色:dbAdmindbOwneruserAdmin
  • 集群治理角色:clusterAdminclusterManagerclusterMonitorhostManager
  • 备份复原角色:backuprestore
  • 超级用户角色:root
  • 外部角色:system

角色阐明

角色 权限形容
read 能够读取指定数据库中任何数据。
readWrite 能够读写指定数据库中任何数据,包含创立、重命名、删除汇合。
readAnyDatabase 能够读取所有数据库中任何数据(除了数据库 confifig 和 local 之外)。
readWriteAnyDatabase 能够读写所有数据库中任何数据(除了数据库 confifig 和 local 之外)。
userAdminAnyDatabase 能够在指定数据库创立和批改用户(除了数据库 confifig 和 local 之外)。
dbAdminAnyDatabase 能够读取任何数据库以及对数据库进行清理、批改、压缩、获取统计信息、执行查看等操作(除了数据库 confifig 和 local 之外)。
dbAdmin 能够读取指定数据库以及对数据库进行清理、批改、压缩、获取统计信息、执行查看等操作。
userAdmin 能够在指定数据库创立和批改用户。
clusterAdmin 能够对整个集群或数据库系统进行治理操作。
backup 备份 MongoDB 数据最小的权限。
restore 从备份文件中还原复原 MongoDB 数据 (除了 system.profifile 汇合) 的权限。
root 超级账号,超级权限

美文佳句

人生其实就像一场旅行,不用在乎目的地,在乎的是沿途的风光以及看风光的情绪。繁忙的生存中懂得适时停下脚步观赏一路走来的风光,是一种享受,是一种须要,是一种智慧,更是一种看待人生的态度。

花随风落,雨伴云晴,过客匆匆,相逢有期。路过的风光,通过的往事,放在心间就好。感恩生存的所有,珍惜所有的有缘人,致力让本人活得更幸福快乐一点。

你好,我是 yltrcc,日常分享技术点滴,欢送关注我的公众号:ylcoder

正文完
 0