oracle安全管理之角色管理
2013-01-12 21:28
387 查看
角色管理
角色概述
所谓角色,就是一系列权限的集合。如下图
预定义角色
预定义角色的查询
通过视图dba_roles查询当前数据库中所有的预定义角色通过视图dba_sys_privs查询各个预定义角色所具有的系统权限
eg:
SQL> select * from dba_roles;
ROLE PASSWORD
------------------------------ --------
CONNECT NO
RESOURCE NO
DBA NO
SELECT_CATALOG_ROLE NO
EXECUTE_CATALOG_ROLE NO
DELETE_CATALOG_ROLE NO
EXP_FULL_DATABASE NO
IMP_FULL_DATABASE NO
RECOVERY_CATALOG_OWNER NO
GATHER_SYSTEM_STATISTICS NO
LOGSTDBY_ADMINISTRATOR NO
ROLE PASSWORD
------------------------------ --------
AQ_ADMINISTRATOR_ROLE NO
AQ_USER_ROLE NO
GLOBAL_AQ_USER_ROLE GLOBAL
SCHEDULER_ADMIN NO
HS_ADMIN_ROLE NO
AUTHENTICATEDUSER NO
OEM_ADVISOR NO
OEM_MONITOR NO
WM_ADMIN_ROLE NO
J***AUSERPRIV NO
J***AIDPRIV NO
SQL> select * from dba_sys_privs where grantee='CONNECT';
GRANTEE PRIVILEGE ADM
------------------------------ ---------------------------------------- ---
CONNECT CREATE SESSION NO
自定义角色
创建角色
CREATE ROLE role [ NOT IDENTIFIED | IDENTIFIED { BY password | EXTERNALLY | GLOBALLY | USING package } ]其中:
role:是角色的名称
NOT IDENTIFIED:表明启用该角色时,不需要进行验证
IDENTIFIED:表明启用该角色时,需要进行验证
BY password :提供用户在启用角色时必须指定的口令
USING package :创建应用程序角色,该角色只能由使用授权的程序包的应用程序启用
EXTERNALLY:表明在启用该角色之前,用户必须由外部服务(例如操作系统或第三方服务)授权
GLOBALLY :表明通过SET ROLE 语句启用角色之前或登录时,必须由企业目录服务授权用户使用该角色
eg:
创建一个角色,不验证
SQL> create role high_manager_role;
Role created.
创建一个角色,需验证
SQL> create role middle_manager_role identified by middlerole;
Role created.
外部验证
SQL> create role low_manager_role identified externally;
Role created.
角色权限的授予与回收
给一个角色授予系统权限,对象权限或者是已有角色一个角色可以被授予另外一个角色,打不可以授予其本身
eg:
SQL> grant connect,create table,create view
to low_manager_role;
Grant succeeded.
SQL> grant connect,create table,create view to middle_manager_role;
Grant succeeded.
SQL> grant connect,resource,dba to high_manager_role;
Grant succeeded.
回收:
SQL> revoke connect
from low_manager_role;
Revoke succeeded.
SQL> revoke create table,create view from middle_manager_role;
Revoke succeeded.
修改角色
修改角色时,只能更改其验证方法。而且,您的角色必须通过ADMIN选项进行授予,或者您必须具有ALTER ANY ROLE 系统权限。ALTER ROLE role { NOT IDENTIFIED | IDENTIFIED { BY password | USING package | EXTERNALLY | GLOBALLY } };
其中:
role:是角色的名称
NOT IDENTIFIED:表明启用该角色时,不需要进行验证
IDENTIFIED:表明启用该角色时,需要进行验证
BY password :提供启用角色时所使用的口令
EXTERNALLY:表明在启用该角色之前,用户必须由外部服务(例如操作系统或第三方服务)授权
GLOBALLY :表明通过SET ROLE 语句启用角色之前或登录时,必须由企业目录服务授权用户使用该角色
eg:
SQL> alter role high_manager_role identified by
highrole;
Role altered.
SQL> alter role middle_manager_role
not identified;
Role altered.
角色的生效与失效
• 禁用角色以暂时撤消用户拥有的该角色。• 启用角色以暂时授予该角色。
• SET ROLE 命令可启用和禁用角色。
• 登录时启用用户的缺省角色。
• 启用角色可能需要口令。
eg
1设置当前用户所有的角色失效
SQL> set role none;
Role set.
2设置某一个角色生效,如有口令则需输入口令
SQL> set role high_manager_role ;
set role high_manager_role
*
ERROR at line 1:
ORA-01979: missing or invalid password for role 'HIGH_MANAGER_ROLE' 需要密码
SQL> set role high_manager_role identified by highrole;
Role set.
3.同时设置多个角色生效
SQL> set role middle_manager_role,low_manager_role identified by lowrole;
Role set.
4.可以设置所有的角色生效
SQL> set role all except middle_manager_role;
set role all except middle_manager_role
*
ERROR at line 1:
ORA-01979: missing or invalid password for role 'HIGH_MANAGER_ROLE'
注:只有在启用的每个角色都没有口令时,不带EXCEPT 子句的ALL 选项才有效。
修改high_manager_role的口令
SQL> alter role high_manager_role not identified;
Role altered
再次执行方可执行
SQL> set role all except middle_manager_role;
Role set.
删除角色
使用drop role +角色名eg:
SQL> drop role low_manager_role;
Role dropped.
利用角色进行权限管理
1,给用户或角色授予角色SQL> grant connect,high_manager_role
to user10;
Grant succeeded.
SQL> grant resource,connect
to middle_manager_role;
Grant succeeded.
2.回收角色
SQL> revoke high_manager_role from user10;
Revoke succeeded.
3.用户角色的激活与屏蔽
语句:
alter user user_name
default role [role_name] | [all [except role_name]]|none;
1.屏蔽用户所有角色
SQL> alter user user10 default role none;
User altered.
2,激活用户的某些角色
3,激活用户所有的角色
SQL> alter user user1 default role all;
User altered.
查询角色信息
dba_roles:数据库中所有的角色及其描述dba_role_privs:数据库中所有用户和角色授予的角色信息
查询角色CONNECT所具有的系统权限信息
SQL> select * from role_sys_privs where role='CONNECT';
ROLE PRIVILEGE ADM
------------------------------ ---------------------------------------- ---
CONNECT CREATE SESSION NO
查询dba角色被授予的角色信息
SQL> select * from role_role_privs where role='DBA';
ROLE GRANTED_ROLE ADM
------------------------------ ------------------------------ ---
DBA SCHEDULER_ADMIN YES
DBA OLAP_DBA NO
DBA EXECUTE_CATALOG_ROLE YES
DBA DELETE_CATALOG_ROLE YES
DBA SELECT_CATALOG_ROLE YES
DBA EXP_FULL_DATABASE NO
DBA WM_ADMIN_ROLE NO
DBA GATHER_SYSTEM_STATISTICS NO
DBA J***A_DEPLOY NO
DBA J***A_ADMIN NO
DBA IMP_FULL_DATABASE NO
DBA XDBADMIN NO
DBA XDBWEBSERVICES NO
13 rows selected.
相关文章推荐
- oracle 安全管理 用户 角色
- Oracle 起步日记(19)——安全管理、角色管理
- oracle安全管理的几个常用方法
- Oracle用户、权限、角色管理
- Oracle信息安全管理架构帮助企业实现“由内到外”的整体安全
- Oracle用户角色权限管理
- Oracle用户及角色的权限管理[Oracle基础]
- oracle管理权限和角色
- Oracle用户、权限、角色管理
- Oracle用户、角色、权限和系统资源管理常用操作
- Oracle用户,权限,角色以及登录管理 scoot 授权
- Oracle用户、权限、角色管理
- Oracle用户、权限、角色管理
- sql server2005安全管理之用户、角色、架构 与 权限
- Oracle用户、权限、角色管理
- Oracle用户、权限、角色管理
- Oracle用户、授权、角色管理
- oracle角色管理
- oracle之管理角色
- Oracle 体系结构及安全管理