DB2权限管理-组(group) 和角色(role)的区别
来源:互联网 发布:美工需要具备什么条件 编辑:程序博客网 时间:2024/05/29 03:07
DB2权限管理中组和角色的管理的确让很多人(不管是菜鸟还是老鸟)感到困惑。 相对而言,oracle就好多了,根本就没有组的概念,只有角色。 而在DB2和Oralce的概念映射里,DB2的组实际上也被影射为Oracle的角色。 这说明原来组和角色原来是差不多的东西啊!
其实,从实际应用角度而言,的确是那么回事,组和角色在很多时候是可以互换的。虽然定义有所不一样。
组(group) - 一组用户的集合,就是LUW(linux/unix/Windows)中操作系统所管理的组,组的创建,修改,维护都是在数据库之外的OS级别进行的。
角色(role) - 一组权限的集合,是数据库级别进行创建,修改和维护的。
从定义上看,还是完全不同的东西嘛。但是如果仔细一想,其实他们解决的是相同的问题。就是为了方便权限的管理,批量的赋予用户权限。下面我们就举一个具体例子来说明三种情况下的权限管理。
权限需求: 某个数据库中有HR的两张表TAB1和TAB2,HR部门有两个数据库用户,分别是HR_USR1和HR_USR2, 这两个用户需要对这两张表有SELECT权限。
同时此数据库中Finance部门有两张表TAB3和TAB4,Finance部门有两个用户,分别是FN_USR1和FN_USR2, 这两个用户需要对这两张表有SELECT权限。
第一种: 即不使用组也不是用角色,具体赋权SQL如下:
grant SELECT on HR.TAB1 to user HR_USR1;grant SELECT on HR.TAB2 to user HR_USR1;grant SELECT on FN.TAB3 to user FN_USR1;grant SELECT on HR.TAB4 to user FN_USR1;grant SELECT on HR.TAB1 to user HR_USR2;grant SELECT on HR.TAB2 to user HR_USR2;grant SELECT on FN.TAB3 to user FN_USR2;grant SELECT on HR.TAB4 to user FN_USR2;
第二种:只使用组,具体步骤如下(假设操作系统是Linux):
1. 在操作系统上创建两个组HR_GRP, FN_GRP
groupadd HR_GRPgroupadd FN_GRP
2. 在操作系统上将已经存在的用户HR_USR1,HR_USR2加入HR_GRP, 将FN_USR1,FN_USR2加入FN_GRP
usermod -G HR_GRP HR_USR1usermod -G HR_GRP HR_USR2usermod -G FN_GRP FN_USR1usermod -G FN_GRP FN_USR2
3.具体赋权SQL如下:
grant SELECT on HR.TAB1 to group HR_GRP;grant SELECT on HR.TAB2 to user HR_GRP;grant SELECT on FN.TAB3 to user FN_GRP;grant SELECT on FN.TAB4 to user FN_GRP;
第三种:只使用角色,具体赋权SQL如下:
--创建角色
create role HR_ROLE;create role FN_ROLE:
--定义角色权限
grant SELECT on HR.TAB1 to role HR_ROLE;grant SELECT on HR.TAB2 to user HR_ROLE;grant SELECT on FN.TAB3 to user FN_ROLE;grant SELECT on FN.TAB4 to user FN_ROLE;
--将角色赋予用户
grant role HR_ROLE to user HR_USR!,HR_USR2;grant role FN_ROLE to user FN_USR1,FN_USR2;
是不是条条大路通罗马? 上面三种方式都能完成任务。但是孰优孰劣呢? 毫无疑问,没有人会喜欢第一种,当用户数量(m)和表的数量(n)都很多的时候,赋权语句的复杂度是O(mxn), 第二种和第三种的复杂度是O(m). 那么第二种和第三种哪种好呢?这个仁者见仁,智者见智, 我自己倾向于第三种(使用角色)。理由如下:
- 使用Role的方式,不需要在操作系统层面进行用户组的管理,全部是在数据库级别的管理。减少了DBA和操作系统管理员之间沟通成本。(虽然我知道很多DBA直接就是数据库服务器上的Linux/Unix系统管理员)
- 在创建视图,物化视图,存储过程,用户自定义函数,触发器以及Package中的静态SQL,赋予组的权限不起作用。
- 角色可以有层次关系,就是说可以把一个角色赋给另外一个角色。(grant role ROLE1 to role ROLE2)
- 因为ORACLE使用ROLE,方便以后移植。
我给的理由充分吧?不管如何,作为一个DB2使用的老鸟,我也逐步开始抛弃Group,使用Role了。
- DB2权限管理-组(group) 和角色(role)的区别
- SAP BW权限管理基于角色的权限管理(Role-Based Access Control)
- Jenkins配置基于角色的项目权限管理-Role Strategy Plugin
- PostgreSQL的用户、角色和权限管理
- PostgreSQL的用户、角色和权限管理
- 权限管理系统(4):角色和组
- oracle的权限和角色区别
- DB2的权限管理
- shiro 的role 角色权限控制简单demo论述
- Role分析模式(二)角色对象创建和管理
- 用户、权限和角色管理
- rabbitmq 权限和角色管理
- 关于(系统/用户对象)权限、角色及角色内权限的相关表 [role 、privilege]
- 基于角色的权限管理
- oracle权限、角色的管理!
- 基于角色的权限管理
- 基于角色的权限管理
- oracle的权限,角色和用户的管理
- ResultSet.next()方法
- SSH三大框架的工作原理及流程
- javascript中对象字面量的理解
- 个人认为不错的代码结构:利用switch case语句进行参数的取值校验
- JAVA判断移动端还是PC端访问
- DB2权限管理-组(group) 和角色(role)的区别
- TSQL Merge 用法
- 论文阅读:An Automatic Panoramic Image Reconstruction Scheme from Dental Computed Tomography Images
- 70. Climbing Stairs
- 3D数学基础 图形与游戏开发的学习 第三章 多坐标系
- Android百度 地图打开显示某坐标的地图
- HDU 4059 The Boss on Mars(容斥原理+四次方数列求和)
- OC中的extern,static,const
- android 蓝牙通信