前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >MongoDB开启shard操作最小权限用户授权

MongoDB开启shard操作最小权限用户授权

作者头像
拓荒者
发布于 2019-09-11 08:35:00
发布于 2019-09-11 08:35:00
1.5K00
代码可运行
举报
文章被收录于专栏:运维经验分享运维经验分享
运行总次数:0
代码可运行

MongoDB开启shard操作最小权限用户授权

 (2018-01-25 15:52:29)

转载

标签:  mongodb   shard   最小权限   shardcollection   privileges

分类: 数据库

背景

操作需求是为程序用户提供一个最小权限,满足以下操作需求:

  • 允许完全操作指定数据库
  • 允许对指定数据库中的collection开启shard

通过这样限制,最多只会影响到指定的数据库, 避免因为程序问题或者其他外部因素导致数据处理逻辑出问题而影响到整个集群。


规划

myDb.myCollection为例,对collection开启shard,需要进行以下操作:

  1. 如果数据库没有开启分片功能,需要先开启: sh.enableSharding("myDb")
  2. 如果collection里面已经有数据,需要先创建对应的shardkey索引: use myDb db.myCollection.createIndex( {"shard_key_field": "hashed"} )
  3. 对指定collection开启shard: sh.shardCollection("myDb.myCollection", {"shard_key_field": "hashed"})

所以需要相应的权限来运行以上3个操作命令。 参考官网文档描述,需要给用户提供两个权限:


操作

因为原来项目用户关于业务数据库的角色就已经是dbOwner, 因此,再创建一个具有开启shard相关操作权限的角色,授予项目数据库用户即可实现最小权限控制。

首先创建新的角色,提供上述的两个操作权限。 这里命名为opShardRole,可以根据实际需求更改:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
use myDb;
db.createRole({
        role: "opShardRole",
        privileges:[
            {
                resource:{db:"myDb", collection:""},
                actions:["enableSharding, "createIndex"]
            }
        ],
        roles:[]
    }
)

然后将opShardRole角色grant给项目用户,这里假设用户名为project_user

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
db.grantRolesToUser("project_user",[{role:"opShardRole", db:"myDb"}])

至此,操作完成,可以通过项目用户进行测试开启shard相关操作有无问题。


检查相关用户权限

切换到业务db,并检查相关的用户及角色:

  • 查看角色相关操作权限: mongos> db.getRole("opShardRole",{showPrivileges: true}) { "role" : "opShardRole", "db" : "myDb", "isBuiltin" : false, "roles" : [ ], "inheritedRoles" : [ ], "privileges" : [ { "resource" : { "db" : "myDb", "collection" : "" }, "actions" : [ "createIndex", "enableSharding", "shardCollection" ] } ], ... }
  • 查看用户关联的角色: mongos> show users; { "_id" : "myDb.project_user", "user" : "project_user", "db" : "myDb", "roles" : [ { "role" : "opShardRole", "db" : "myDb" }, { "role" : "dbOwner", "db" : "myDb" } ] }

可以看到,opShardRole这个角色确实已经有了对业务数据库myDb的所需shard操作权限, 同时,project_user这个用户也已经有了opShardRole角色授权。

分享:

(adsbygoogle = window.adsbygoogle || []).push({});

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
mongoDB开启分片操作
执行 db.runCommand( { enablesharding : "xx库" } );或 sh.enableSharding()这一步是对数据库启用分片能力,同一个库的不同collection会分布到不同shard上
拓荒者
2019/09/12
3.7K5
mongoDB开启分片操作
MongoDB用户和角色解释系列(上)
本文讨论保护MongoDB数据库所需的访问控制。具体来说,我们可以使用这些特性来确保只有经过授权的用户才能访问数据库。每个MongoDB用户应该只能访问他们在组织中所扮演的角色所需要的数据,这由组织中负责管理数据安全的人员来决定。这是管理数据和遵守国际要求所必需的良好特质。
MongoDB中文社区
2019/06/11
1.6K0
MongoDB用户和角色解释系列(上)
Shard 分片集群
要构建一个 MongoDB Sharding Cluster,需要三种角色:
MonroeCode
2018/01/12
1.7K0
MongoDB-分片片键
分片是什么?分片就是将数据存储在多个机器上。当数据集超过单台服务器的容量,服务器的内存,磁盘IO都会有问题,即超过单台服务器的性能瓶颈。此时有两种解决方案,垂直扩展和水平扩展(分片)。
林老师带你学编程
2019/05/25
1.4K0
MongoDB教程(三):mongoDB用户管理
💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快!
用户11147438
2024/07/20
1040
Mongodb 分片集群搭建
一、MongoDB分片介绍 一般的像小型企业和业务量不是太大的集群架构,我们使用MongoDB分片就可以足够满足业务需求,或者随着业务的不断增长我们多做些副本集也是可以解决问题,多搞几个主从就可以了。还有一种情况是,类似于腾讯或者阿里有着庞大的集群以及业务量和数据量,不可能一个库分成多个库,其实MongoDB也有这种功能叫做分片,也就是今天所用到的!如下: 分片就是将数据库进行拆分,将大型集合分隔到不同服务器上。比如,本来100G的数据,可以分割成10份存储到10台服务器上,这样每台机器只有10G的数据。
老七Linux
2018/05/09
1.8K0
MongoDB的安全和权限控制(二)
MongoDB提供了内置的数据库审计功能,可以记录用户在MongoDB上的所有操作,包括对集合的查询、更新、删除等操作。管理员可以使用审计日志来监控数据库的访问,识别潜在的安全问题,并采取必要的措施来保护数据。以下是一个启用审计日志的示例:
堕落飞鸟
2023/05/09
3810
Mongodb分片集群部署
对于单台数据库服务器,庞大的数据量及高吞吐量的应用程序对它而言无疑是个巨大的挑战。频繁的CRUD操作能够耗尽服务器的CPU资源,快速的数据增长也会让硬盘存储无能为力,最终内存无法满足数据需要导致大量的I/O,主机负载严重。为了解决这种问题,对于数据库系统一般有两种方法:垂直扩展和分片(水平扩展)。
chengcheng222e
2021/11/04
1.4K0
MongoDB 大俗大雅,上来问分片真三俗 -- 4 分什么分
这是MongoDB宣传周的第五篇,这周真漫长,今天说说分片,对分片就是那个很多人都在问的MongoDB的分片。你知道吗? 有一些根本没有用过MongoDB的人直接上来就问,MongoDB怎么分片,问分片的性能好不好,能存多少数据!我对此的看法,这人一定不是BT,但可能是SB,抱歉爆粗口了。可能因为MySQL的毒害,很多搞MySQL的开发者,架构师,甚至是MySQL的部分DBA,上来对MongoDB的想法就是分片,对应着MySQL在存储大量数据的时候,需要进行分片,物理分库,或者逻辑分库。
AustinDatabases
2025/01/22
710
MongoDB  大俗大雅,上来问分片真三俗 -- 4 分什么分
mongoexport 导出需要授权数据库中的集合 报错 Authentication failed.
当 mongo数据库启动服务时,使用了 认证机制,在使用mongoexport导出集合文件时,需要用户权限认证。
用户1558882
2018/08/30
2.1K0
mongodb高可用集群部署
计划分几篇文章把近一个月技术上的一些实践记录一下,这第一篇记录一下mongodb的高可用集群部署。
jeremyxu
2019/03/13
2.8K1
原 MongoDB 开启用户认证登录
添加用户 db.createUser({user:'username',pwd:'password',roles:[{role:'root',db:'admin'}]}) username : 用户名;password : 密码; roles:为权限集见下文 用户权限集 获取所有权限集 show roles { "role" : "__system", "db" : "admin", "isBuiltin" : true, "roles" : [ ], "inheritedRoles" :
霡霂
2018/06/04
9630
Mongodb的分片和副本集
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
张凝可
2019/08/22
8730
MongoDB运维与开发(五)---角色管理
之前的两篇文章,我们已经讲清楚了MongoDB的用户权限管理,接下来的文章我们来看MongoDB的角色管理。
AsiaYe
2020/11/10
9010
MongoDB运维与开发(五)---角色管理
MongoDB权限问题一则
这周工作过程中,遇到了一个MongoDB权限相关的问题。记录一下,希望对大家有帮助。
AsiaYe
2022/04/01
6760
MongoDB 分片集群技术
---- 在了解分片集群之前,务必要先了解复制集技术! ----  1.1 MongoDB复制集简介   一组Mongodb复制集,就是一组mongod进程,这些进程维护同一个数据集合。复制集提供了数据冗余和高等级的可靠性,这是生产部署的基础。 1.1.1 复制集的目的   保证数据在生产部署时的冗余和可靠性,通过在不同的机器上保存副本来保证数据的不会因为单点损坏而丢失。能够随时应对数据丢失、机器损坏带来的风险。   换一句话来说,还能提高读取能力,用户的读取服务器和写入服务器在不同的地方,而且,由不同的
惨绿少年
2018/03/30
2.4K0
MongoDB安全和权限
MongoDB是一个流行的文档数据库,广泛应用于各种应用程序。然而,由于其易于使用和灵活性,安全性和权限管理也变得至关重要。在本文中,我们将深入探讨MongoDB的安全性和权限管理,并提供示例说明。
玖叁叁
2023/04/14
7170
mongodb分片模式分片键的选择
分片就是一种把数据分布在多台机器上的方法。mongodb使用分片来支持大数据量、高吞吐量的布署。
山行AI
2019/06/28
6.4K0
MongoDB 双活集群在运营商的实践
在现代电信行业中,订单中心作为核心业务系统之一,承担着处理客户订单、管理订单状态、与各个业务系统进行交互等重要职责。其订单中心的高效运作直接关系到客户体验和业务连续性。为了满足不断增长的业务需求和日益复杂的运营环境,运营商需要自身的订单中心架构具备高可用性及强大的容灾能力。 双活架构作为常见的高可用方案,允许两个数据中心同时提供服务并实现数据的实时同步。当一个数据中心发生故障时,另一个数据中心能够无缝接管其工作,确保业务不中断。这种架构不仅提高了系统的稳定性和可靠性,还能大幅减少灾难恢复的时间和成本。 本文将着重分享某头部运营商订单中心在实现双活架构过程中的最佳实践,提供详细的技术细节和实际案例。通过介绍项目实施过程中的技术细节,提供类似场景需求的方案参考。
Tapdata
2024/09/25
1730
MongoDB 双活集群在运营商的实践
MongoDB 用户权限管理
authenticationRestrictions:该字段为3.6版本以后的新特性,服务器在创建用户上强制执行的身份验证限制。指定可连接服务器的访问用户的ip地址列表或指定可连接服务器的服务器ip地址列表。(即白名单验证)
Power
2025/03/02
910
相关推荐
mongoDB开启分片操作
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文