GaussDB(for Redis)多租户:读写权限控制和数据库隔离的完美融合
本文分享自华为云社区《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子账号,满足多种业务场景的需要。
开源Redis 6.0和GaussDB(for Redis)所具备的权限管理能力比较
功能听上去很全面,具体怎么使用?
GaussDB(for Redis)的租户管理功能需要用户在控制台的账号管理页面建立账号,并为每个账号设置DB的只读/读写权限,操作非常直观方便。例如,下图创建了账号test123,具备读写权限,且只能访问DB1、DB2。
账号建立好之后,用户可以直接在程序中使用“user:pwd”组合字串作为密码参数,并配置目标DB号,即可使用业务专属DB。
下面以一个形象的例子来说明如何通过多租户管理功能来实现账户间的权限隔离。蜀国技术总监诸葛孔明需要为蜀国的用户和合作伙伴吴国的用户设计不同的DB权限,从而达到公有信息共享和机密信息保护这两个目的。
首先,他为刘备设置了所有DB的读写权限;为大将关羽和张飞设置了“桃园结义”DB0和“华容道”DB1和的读写权限,然后为秘书赵云设置了“长坂坡”DB2的读写权限和其余DB(除“桃园结义”DB0)的只读权限。至于吴国的合作伙伴,周瑜和黄盖被授予了“赤壁之战”DB3的读写权限,而他们的主公孙权则被设置了“赤壁之战”DB3的只读权限。
听上去是不是很复杂很难操作?其实GaussDB(for Redis)的账号管理页面设计得很灵活直观,孔明可以通过点击“授权所有数据库”为刘备授权,又可以选择一个或者多个DB为关羽张飞授权,还能选择“未授权数据库”为赵云免除“桃园结义”DB的只读权限,非常方便设置和后期管理。
总结
本文详细介绍了GaussDB(for Redis)全面的多租户管理特性,并以几个生动的例子为例,阐明了开源Redis账号管理能力的不足,以及GaussDB(for Redis)是如何解决这些不足的。在当前的大数据时代,GaussDB(for Redis)的企业级特性完美弥补了开源Redis的短板,为企业的数据安全保驾护航。
附录
• 本文作者:华为云数据库GaussDB(for Redis)团队
• 杭州/西安/深圳简历投递:yuwenlong4@huawei.com
• 更多产品信息,欢迎访问官方博客:bbs.huaweicloud.com/blogs/248875