您的位置:首页 > 数据库 > Oracle

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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: