暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

openGauss的高安全——访问控制

MTL 2022-09-23
1258

访问控制

⚫ 管理用户对数据库的访问控制权限,涵盖数据库系统权限和对象权限。 

⚫ 支持基于角色的访问控制机制,将角色和权限关联起来,通过将权限赋予给对应的角色,再将角色授予给用 户,可实现用户访问控制权限管理。其中登录访问控制通过用户标识和认证技术来共同实现,而对象访问控 制则基于用户在对象上的权限,通过对象权限检查实现对象访问控制。用户在为相关的数据库用户分配完成 任务所需要的最小权限从而将数据库使用风险降到最低。

⚫ 支持三权分立权限访问控制模型,数据库角色可分为系统管理员、安全管理员和审计管理员。其中安全管理 员负责创建和管理用户,系统管理员负责授予和撤销用户权限,审计管理员负责审计所有用户的行为。 

⚫ 默认情况下,使用基于角色的访问控制模型。客户可通过设置参数来选择是否开启三权分立控制模型。


基于角色的访问控制

⚫ 什么是基于角色的用户管理? 

 基于角色的用户管理(Role-Based Access Control,简称RBAC)是通过为角色赋予权限,用 户通过成为适当的角色而得到这些角色的权限。 

 使用RBAC可以极大简化对权限的管理。 

⚫ 什么是RBAC模型? 

 为角色赋予适当的权限。 

 指定用户为相应的角色。


⚫ RBAC授权实际上是Who、What、How三元组的关系。 

 Who:权限的拥有者或主体(如用户); 

 What:权限针对的对象(如表、函数); 

 How:具体的权限(正向授权、负向授权)。 

⚫ RBAC模型中用户、角色、权限的关系。 

 一个用户可对应多个角色; 

 一个角色可对应多个用户; 

 一个角色可以拥有多个权限; 

 一种权限可以被分配给许多个角色。

⚫ 其他访问控制模型  Access control lists(ACL) 

 Attribute-Based access control(ABAC) 

 Policy-Based access control(PBAC) 

⚫ RBAC的特点与优势 

 间接关系 

 职责分离 

 便于授权管理 

 可以支持最小特权原则、责任分离原则、数据抽象原则


行级访问控制

⚫ 行级访问控制特性将数据库访问控制精确到数据表行级别,使数据库达到行级访问控制的能力。 

⚫ 不同用户执行相同的SQL查询操作,读取到的结果是不同的。 

⚫ 用户可以在数据表创建行访问控制(Row Level Security)策略,该策略是指针对特定数据库用户、 特定SQL操作生效的表达式: 

 当数据库用户对数据表访问时,若SQL满足数据表特定的Row Level Security策略,在查询优化阶段将满 足条件的表达式,按照属性(PERMISSIVE | RESTRICTIVE)类型,通过AND或OR方式拼接,应用到执行 计划上。 

⚫ 行级访问控制的目的是控制表中行级数据可见性,通过在数据表上预定义Filter,在查询优化阶段 将满足条件的表达式应用到执行计划上,影响最终的执行结果。 

⚫ 当前受影响的SQL语句包括SELECT,UPDATE,DELETE。

⚫ 打开行访问控制策略开关: 

ALTER TABLE tablename ENABLE ROW LEVEL SECURITY;

⚫ 创建行访问控制策略,当前用户只能查看用户自身的数据: 

CREATE ROW LEVEL SECURITY POLICY tablename_rls ON tablename USING(role = CURRENT_USER);

 注意:tablename为所创建的表名,tablename_rls为创建的行级访问控制策略名。


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论