資料庫安全之許可權與角色

張衝andy發表於2017-01-09

許可權的種類:系統許可權 和 物件許可權

一、系統許可權
所謂系統許可權,就是oracle裡已經寫死的許可權,這些許可權,我們是不能自己去擴充套件的,比如select any table, create any table等。

1.1、系統許可權種類
select count(*) from dba_sys_privs;

1.2、系統許可權傳遞:
增加WITH ADMIN OPTION選項,則得到的許可權可以傳遞。
grant XXX to XXX WITH ADMIN OPTION;

1.3、系統許可權回收:系統許可權只能由DBA使用者回收,統許可權收回的時候是不會級聯收回的。
revoke XXX from XXX;

1.4、檢視使用者擁有的系統許可權。
SQL> SELECT *
FROM DBA_SYS_PRIVS
WHERE GRANTEE = 'ETL'
UNION ALL
SELECT *
FROM DBA_SYS_PRIVS
WHERE GRANTEE IN
(SELECT GRANTED_ROLE FROM DBA_ROLE_PRIVS WHERE GRANTEE = 'ETL');

二、物件許可權
所謂物件許可權,就是針對於特定的物件的許可權,系統許可權是限定了可以操作的功能,而object permission就更細化了,具體到了莫個物件你可以操作的功能的許可權。

2.1、物件許可權種類
select count(*) from dba_tab_privs;

2.1、物件許可權傳遞:
增加with grant option選項,則得到的許可權可以傳遞。
grant XXX to XXX with grant option;

2.2、物件許可權回收:物件許可權可以傳遞賦予,但是回收的時候是級聯回收的。
revoke XXX from XXX;

2.4、檢視使用者擁有的物件許可權。
SELECT *
FROM DBA_TAB_PRIVS
WHERE GRANTEE = 'P_INSERT_LOG'
UNION ALL
SELECT *
FROM DBA_TAB_PRIVS
WHERE GRANTEE IN
(SELECT GRANTED_ROLE FROM DBA_ROLE_PRIVS WHERE GRANTEE = 'P_INSERT_LOG');

三、角色
所謂角色,就是一組許可權的集合。

3.1、檢視系統所有角色
SQL> select * from dba_roles;

3.2、 檢視角色中包含的許可權
SQL> select * from role_sys_privs where role in ('RESOURCE');

3.3、 建立角色並授權
SQL> create role andy_role;
Role created.

SQL> grant connect,resource to andy_role;
Grant succeeded.

3.4、 檢視使用者所擁有的角色。 (用被查詢使用者登入)
SQL> select * from USER_ROLE_PRIVS ;


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31383567/viewspace-2132145/,如需轉載,請註明出處,否則將追究法律責任。

相關文章