首页 > 数据库 >GaussDB(for Redis)多租户:读写权限控制和数据库隔离的完美融合

GaussDB(for Redis)多租户:读写权限控制和数据库隔离的完美融合

时间:2023-07-26 15:13:56浏览次数:48  
标签:租户 Redis GaussDB DB 权限 读写

本文分享自华为云社区《GaussDB(for Redis)企业级特性揭秘之多租户管理》,作者: GaussDB 数据库 。

华为云GaussDB(for Redis)持续完善企业级增强特性,是名副其实的"Redis Plus",其中很经典的企业级特性是多租户能力,支持添加只读账号、读写账号,并且可约束每个账号可访问的数据库(DB)范围,避免误操作其他租户数据。该特性可以帮助企业在共享Redis实例的情况下,保护不同租户的数据安全,为企业的开发和管理提供便利。

哪些用户需要使用租户管理功能?

多租户是数据库用户刚需的一个功能,例如,企业中有两个业务部门A和B,他们都需要使用Redis来存储自己的数据,如果不使用多租户权限功能,那么A和B的数据就会混在一起,这样就会存在数据泄露和误操作的风险。一旦使用了多租户管理功能,就可以将A和B的数据分别存储在不同的Redis实例/DB中,并且对这些实例/DB进行权限控制,从而保障数据的安全性和可靠性。

在数据库领域,多租户技术往往有以下一些标准属性:比如读写权限控制、跨DB鉴权隔离等等;而GaussDB(for Redis)就是具备完善的多租户管理技术的一个典范,实现了读写权限控制和数据库(DB)隔离这两大特性的完美融合。

Redis 6.0已具备ACL功能,为什么还要使用GaussDB(for Redis)的多租户功能?

关于权限控制,开源Redis虽然在6.0新版本有ACL,但只能设置为只读、读写,每个账号还是可以看到所有的DB的。这个设计比较鸡肋,跟数据库多租户的原理背道而驰。举个例子,业务开发小王应该用DB1,但有天忘记SELECT,不小心清库了小张的DB0,导致生产事故。而GaussDB(for Redis)的权限隔离就从根源上解决了这个问题,如小王被设置为只有DB1的权限而没有DB0的权限,那么即使他误操作也不会对DB0的数据产生影响。

此外,开源Redis的多租户功能只有单机才可以使用,一旦业务上量需要集群,多DB功能反而就不可用了,只剩一个DB0;GaussDB(for Redis)基于自身天然的集群架构做了多DB增强,支持6w+DB,同时可创建200+个ACL子账号,满足多种业务场景的需要。

cke_8810.png

开源Redis 6.0和GaussDB(for Redis)所具备的权限管理能力比较

功能听上去很全面,具体怎么使用?

GaussDB(for Redis)的租户管理功能需要用户在控制台的账号管理页面建立账号,并为每个账号设置DB的只读/读写权限,操作非常直观方便。例如,下图创建了账号test123,具备读写权限,且只能访问DB1、DB2。

cke_121.png

账号建立好之后,用户可以直接在程序中使用“user:pwd”组合字串作为密码参数,并配置目标DB号,即可使用业务专属DB。

下面以一个形象的例子来说明如何通过多租户管理功能来实现账户间的权限隔离。蜀国技术总监诸葛孔明需要为蜀国的用户和合作伙伴吴国的用户设计不同的DB权限,从而达到公有信息共享和机密信息保护这两个目的。

首先,他为刘备设置了所有DB的读写权限;为大将关羽和张飞设置了“桃园结义”DB0和“华容道”DB1和的读写权限,然后为秘书赵云设置了“长坂坡”DB2的读写权限和其余DB(除“桃园结义”DB0)的只读权限。至于吴国的合作伙伴,周瑜和黄盖被授予了“赤壁之战”DB3的读写权限,而他们的主公孙权则被设置了“赤壁之战”DB3的只读权限。

听上去是不是很复杂很难操作?其实GaussDB(for Redis)的账号管理页面设计得很灵活直观,孔明可以通过点击“授权所有数据库”为刘备授权,又可以选择一个或者多个DB为关羽张飞授权,还能选择“未授权数据库”为赵云免除“桃园结义”DB的只读权限,非常方便设置和后期管理。

cke_122.png

cke_123.png

cke_124.png

cke_125.png

总结

本文详细介绍了GaussDB(for Redis)全面的多租户管理特性,并以几个生动的例子为例,阐明了开源Redis账号管理能力的不足,以及GaussDB(for Redis)是如何解决这些不足的。在当前的大数据时代,GaussDB(for Redis)的企业级特性完美弥补了开源Redis的短板,为企业的数据安全保驾护航。

附录

• 本文作者:华为云数据库GaussDB(for Redis)团队

• 杭州/西安/深圳简历投递:[email protected]

• 更多产品信息,欢迎访问官方博客:bbs.huaweicloud.com/blogs/248875

点击关注,第一时间了解华为云新鲜技术~

标签:租户,Redis,GaussDB,DB,权限,读写
From: https://www.cnblogs.com/huaweiyun/p/17582495.html

相关文章

  • Linux使用snap安装最新版redis
    步骤1:安装Redis首先,确保您的系统上已安装snap。如果尚未安装snap,请根据您的Linux发行版提供的说明进行安装。打开终端,并执行以下命令来安装Redis:$sudosnapinstallredis等待安装完成。步骤2:进入RedisCLIRedis的snap安装没有预配置的文件(redis.conf)。因此,我们需......
  • redis访问时的线程安全问题
    参考:https://blog.csdn.net/diweikang/article/details/90264993 Redis是线程安全的吗?Redis是个单线程程序,所以它是线程安全的。 Redis单线程为什么还能这么快?redis是基于内存的,内存的读写速度非常快redis是单线程的,避免了不必要的上下文切换和竞争条件re......
  • Redis实现消息队列
    Redis基于内存,高性能并且提供多种数据结构供使用,那么对于Redis能不能作为消息队列?以及与专业的消息队列,如RocketMQ,Kafka等差距又在哪里?Redis提供多种方式实现消息队列,基于List,基于Pub/Sub等,如今基本广泛使用的是Redis5.0之后推出的Stream流格式,其具有支持持久化,支持消......
  • 链表只有面试有用?Redis 之父说:我不同意
    几天前,Redis之父 SalvatoreSanfilippo(又名antirez)在Twitter上用Rust实现了一个糟糕的链表,引发了大家的讨论。在评论中,不少人觉得链表这种数据结构一无是处,于是几天后,antirez发了一篇博客。原文见:http://antirez.com/news/138antirez说:“从某些评论的语气中,我感觉到很多人......
  • redis学习二十:redis哨兵监控
    是啥:吹哨人巡查监控后台master主机是否故障,如果故障了根据投票数自动将某一个从库转换为新主库,继续对外服务。作用:1.监控redis运行状态,包括master和slave2.当master宕机,能自动将slave切换成新master能干啥:主从监控:监控主从redis库运行是否正常消息通知:哨兵可以将故障转移的......
  • Redis的有序集合Zset为啥用跳表不用二叉树
    跳表和红黑树查找的时间复杂度都是logN,插入删除也是logN。范围查找貌似也都是O(k+logn),其中n是树中节点的数量,k是满足范围条件的节点数量。但是实现起来跳表要简单很多。1.zset有个很核心的操作叫范围查找,我们要查找某个范围区间的元素。跳表可以做到logN时间复杂度内的快......
  • cookie+session(这里使用redistemplate代替)实现单点登录流程
     user发起资源请求(带上回调的路径方便回调),通过判断是否浏览器的cookie中是否存在登录过的痕迹,比如有人登了,然后存了一个cookie到浏览器如果拿到了cookie是有东西的,则带上这个cookie的内容返回给client,如果没有东西,则继续登录,向session中存入userInfo,并给浏览器设置cookie......
  • redis 取出指定集合
    Redis取出指定集合Redis是一种高性能的键值存储数据库,它支持多种数据类型,包括字符串、哈希、列表、集合和有序集合。在Redis中,集合是一种无序且唯一的数据结构,它可以存储多个元素。本文将介绍如何在Redis中取出指定集合的元素,并提供相关代码示例。Redis集合Redis集合是一个无序......
  • redis 切换db0到db1命令
    Redis切换DB0到DB1命令实现步骤作为一名经验丰富的开发者,你需要教导一位刚入行的小白如何实现Redis的DB0切换到DB1命令。下面是整个流程的步骤展示:步骤操作1连接Redis服务器2切换到DB03选择DB14验证切换成功接下来,让我们逐步教会小白每......
  • redis 启动 停止
    Redis启动停止流程1.确认Redis安装在开始之前,确保已经正确安装了Redis数据库。可以通过以下命令检查是否已安装:redis-server--version如果没有安装,可以参考Redis官方文档进行安装。2.启动RedisRedis启动步骤如下:步骤命令代码示例1.打开终端或命令行......