omg,繁琐授权一套模型解决,用它!
在以往的分享中,给大家介绍了如何建表,写数据,查数据以及各种实操类,但是大家有没有发现,小编并没有介绍过,怎么给新用户或者子账号授权,这是为什么呢?本篇分享有点长,请耐心看完,保证你收获慢慢!
授权痛点
相信大家在使用各种大数据开发产品时,一定会遇见给子账号授权的场景,一个产品一套授权体系,如何给子账号授权,授什么权限比较好,如何简单快速的授权,成为开发人员经常面临的难题。
同样,在使用交互式分析时,初期也很难绕过权限的痛点,因为交互式分析兼容Postgres,使用与Postgres完全一致的权限系统。但典型的Postgres权限系统划分非常严格,在实际业务场景中使用时,业务人员想要给某个用户授权,需要执行大量的授权语句。
例如,新建一个DB,并给用户授予DB级别的管理员,PostgreSQL标准的授权语句如下:
CREATE DATABASE autonavi_ridesharing; CREATE ROLE autonavi_ridesharing_owner; ALTER DATABASE autonavi_ridesharing OWNER TO autonavi_ridesharing_owner; CREATE USER "xxxx" CREATEROLE; \c autonavi_ridesharing REVOKE ALL ON DATABASE autonavi_ridesharing FROM public; GRANT CREATE ON DATABASE autonavi_ridesharing to autonavi_ridesharing_owner; GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO autonavi_ridesharing_owner WITH GRANT OPTION; GRANT USAGE ON SCHEMA public TO "xxxx" WITH GRANT OPTION; ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO autonavi_ridesharing_owner; GRANT CONNECT ON DATABASE autonavi_ridesharing TO autonavi_ridesharing_owner WITH GRANT OPTION; GRANT SELECT,INSERT,UPDATE ON ALL TABLES IN SCHEMA hologres TO PUBLIC; GRANT SELECT,INSERT,UPDATE ON ALL TABLES IN SCHEMA hologres TO "xxxx" WITH GRANT OPTION; GRANT USAGE ON SCHEMA hologres TO PUBLIC; GRANT USAGE ON SCHEMA hologres TO "xxxx" WITH GRANT OPTION; GRANT autonavi_ridesharing_owner TO "xxxx";
不同的角色有不同的权限,在操作上非常繁琐,有时也会出现某条授权语句遗漏导致某个权限缺失的情况。同时,每新增一个用户就需要执行相同的批量授权语句,浪费大量时间。尽管提供了大家常用授权语句的参考,但还是有很多朋友觉得晦涩难懂,操作极其不便。
为解决以上业务痛点,交互式分析在Postgres权限的基础上,结合多个业务的整体权限体系,设计实现了一种粗粒度的简单权限模型(Simple Privilege Model, SPM)。
简单权限模型以DB作为维度,在老版本的交互式分析中会默认不打开,可根据业务需要由superuser自行打开。
在新版本的交互式分析中,会默认打开权限模型,但也可以由superuser自行关闭,各取所需。
简单权限模型介绍
可参照以下两张图理解简单权限模型:
1.当前实例内的对象(实例、数据库、表、视图)的层级关系:
2.简单权限模型下实例内的角色层级关系以及每个角色对应的权限参照。
简单权限模型角色介绍
下面对简单模型下每个角色进行细致的说明:
以下角色的权限以及限制只有在简单权限模型开启时才生效。
db_admin可以是某个用户,也可以是某个用户组(即很多用户在同一个DB下都是db_admin)
db_schema_developer可以是某个用户,也可以是某个用户组
和db_schema_viewer可以是某个用户,也可以是某个用户组
superuser
- 申请实例的账号会被系统默认为该实例的管理员,即superuser,拥有整个实例的所有权限。
- 可对某个DB关闭或者开启简单权限模型。
- 在简单权限模型开启下,可管理db_admin,db_schema_developer和db_schema_viewer的用户及用户组,但不可对这3个用户组做任何权限修改,也不能再新增用户组。
- 在简单权限模型开启下,不可使用有封禁限制的功能(见下文简单模型功能限制)
- 除了特定的权限(见下文简单权限模型的权限概览),无其他权限。
_admin
- 某个数据库(DB)的管理者,但是没有删除该DB的权限。
- 可管理当前DB下db_admin、db_schema_developer和db_schema_viewer的用户及用户组,包括新增、删除某个用户至上述的3个用户组。
- 可对该DB的逻辑对象进行增删改,例如增删改schema,修改db等。
__developer
- 某个DB下某个schema(默认为public schema)的开发者。
- 某个DB开启了简单权限模型后,每创建一个schema,会自动创建developer用户组。
- 是当前schema下所有表的管理者。
- 对schema有读写、创建、修改和删除表/类表对象的权限。
__viewer
- 某个DB下某个schema (默认为public schema)的成员。
- 某个DB开启了简单权限模型后,每创建一个schema,会自动创建viewer用户组。
- 只能读取schema下所有表/类表对象的数据,即SELECT权限。
wilduser
- 没有加入以上任何用户组的用户,即为野用户。
- 在某个DB开启简单权限模型之后,访问该DB时,会没有连接权限。
- 如需访问某个DB,需要db_admin或superuser授权。
了解完简单权限模型,是不是觉得顿时打开新世界的大门?在下期分享中,小编将会为您介绍,如何执行一条命令语句就能完成所有授权。若您在使用过程中,有任何问题,欢迎加入钉钉群咨询。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
VMware 迁移到专有宿主机 DDH
场景描述 介绍本地部署或托管在IDC环境的VMware系统迁移上云至专有宿主机(DDH)的最佳实践。使用DDH在云端构建由独享物理服务器组成的资源池,同时配合ECS成熟稳定的虚拟化技术体系,充分利用云上资源弹性、按使用付费的优势,快速构建高性能、高可靠和可快速动态伸缩的虚拟化系统,满足安全、合规、自定义部署、自带许可证(BYOL)等企业级需求。 解决问题 云端独享高性能、高可靠、高弹性的物理服务器资源池。 基于成熟云原生虚拟化技术体系,支持ECS自定义部署,可在DDH环境和多租户环境间迁移。 支持自带许可证(BYOL) 。 产品列表 访问控制RAM 专有网络VPC 云服务器ECS 对象存储OSS 专有宿主机DDH 直达最佳实践 》》
- 下一篇
Content Replace Plugin 1.4.0 发布,Jenkins 文件内容替换插件
Content Replace Plugin 1.4.0 发布了,作为一个 Jenkins 插件,用于构建过程中对一些文本文件内容的修改替换。 比如:每次构件时需要在指定的文件中修改版本号、只在持续集成时写入一些敏感信息等,适合构建工具不支持或编写代码不方便的内容修改 插件有以下特点: 支持多文件内容替换 支持常见编码格式选择 支持正则表达式匹配 支持使用变量设置内容 支持设置匹配次数,实际替换次数与设置不一致时,构建失败 支持多种任务类型设置 支持子节点、多平台 新版更新内容有: 修复该插件未出现在Jenkins流水线语法片段生成器中的问题 下面是1.3.0版本中更新点,未知原因未能同步到插件更新中心,因此略过1.3.0版的发布 开启正则表达式多行模式 打印替换行信息,美化日志输出 详细使用方法,参见文档
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Mario游戏-低调大师作品
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS8编译安装MySQL8.0.19
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7