詳解使用Role來保護Oracle資料庫的安全性
Oracle資料庫內引入role來管理系統許可權、物件許可權,因為role提供了容易、動態、有選擇的許可權可用性等優點;本文主要通過案例來演示role的有選擇的許可權可用性。
1,建立role:hr_mgr,包括許可權select,update on hr.employees,可以使用passwd 或單獨的pl/sql Procedure啟用角色
sys@EXAM> create role hr_mgr identified by oracle;
Role created.
sys@EXAM> grant select,update on hr.employees to hr_mgr;
Grant succeeded.
2,把role:hr_mgr授予給user:scott,預設未啟用狀態
sys@EXAM> grant hr_mgr to scott;
Grant succeeded.
sys@EXAM> alter user scott default role all except hr_mgr;
User altered.
3,測試
sys@EXAM> conn scott/tiger
Connected.
scott@EXAM> select * from hr.employees;
select * from hr.employees
*
ERROR at line 1:
ORA-00942: table or view does not exist
scott@EXAM> set role hr_mgr identified by oracle;
Role set.
scott@EXAM> select * from hr.employees;
EMPLOYEE_ID FIRST_NAME LAST_NAME
----------- ---------------------------------------- --------------------------------------------------
EMAIL PHONE_NUMBER HIRE_DATE JOB_ID
-------------------------------------------------- ---------------------------------------- ------------ --------------------
SALARY COMMISSION_PCT MANAGER_ID DEPARTMENT_ID
---------- -------------- ---------- -------------
198 Donald OConnell
DOCONNEL 650.507.9833 21-JUN-99 SH_CLERK
4187.33 124 50
建立role時,除了可以使用passwd 來保護role中的許可權使用,還可以用單獨的pl/sql procedure啟用角色
sys@EXAM> create role hr_mgr identified using p_secure_role;
Role created.
sys@EXAM> create or replace procedure p_secure_role authid current_user is
2 begin
3 if sys_context('userenv','ip_address') ='192.168.1.100' then
4 dbms_session.set_role('hr_mgr');
5 else
6 null;
7 end if;
8 end;
9 /
Procedure created.
sys@EXAM> grant execute on p_secure_role to scott;
Grant succeeded.
sys@EXAM> grant hr_mgr to scott;
Grant succeeded.
sys@EXAM> alter user scott default role all except hr_mgr;
User altered.
測試:
SQL> select sys_context('userenv','ip_address') from dual;
SYS_CONTEXT('USERENV','IP_ADDR
--------------------------------------------------------------------------------
192.168.1.100
SQL> select * from hr.employees;
EMPLOYEE_ID FIRST_NAME LAST_NAME EMAIL PHONE_NUMBER HIRE_DATE JOB_ID SALARY COMMISSION_PCT MANAGER_ID DEPARTMENT_ID
----------- -------------------- ------------------------- ------------------------- -------------------- ----------- ---------- ---------- -------------- ---------- -------------
198 Donald OConnell DOCONNEL 650.507.9833 1999/6/21 SH_CLERK 4187.33 124 50
1,建立role:hr_mgr,包括許可權select,update on hr.employees,可以使用passwd 或單獨的pl/sql Procedure啟用角色
sys@EXAM> create role hr_mgr identified by oracle;
Role created.
sys@EXAM> grant select,update on hr.employees to hr_mgr;
Grant succeeded.
2,把role:hr_mgr授予給user:scott,預設未啟用狀態
sys@EXAM> grant hr_mgr to scott;
Grant succeeded.
sys@EXAM> alter user scott default role all except hr_mgr;
User altered.
3,測試
sys@EXAM> conn scott/tiger
Connected.
scott@EXAM> select * from hr.employees;
select * from hr.employees
*
ERROR at line 1:
ORA-00942: table or view does not exist
scott@EXAM> set role hr_mgr identified by oracle;
Role set.
scott@EXAM> select * from hr.employees;
EMPLOYEE_ID FIRST_NAME LAST_NAME
----------- ---------------------------------------- --------------------------------------------------
EMAIL PHONE_NUMBER HIRE_DATE JOB_ID
-------------------------------------------------- ---------------------------------------- ------------ --------------------
SALARY COMMISSION_PCT MANAGER_ID DEPARTMENT_ID
---------- -------------- ---------- -------------
198 Donald OConnell
DOCONNEL 650.507.9833 21-JUN-99 SH_CLERK
4187.33 124 50
建立role時,除了可以使用passwd 來保護role中的許可權使用,還可以用單獨的pl/sql procedure啟用角色
sys@EXAM> create role hr_mgr identified using p_secure_role;
Role created.
sys@EXAM> create or replace procedure p_secure_role authid current_user is
2 begin
3 if sys_context('userenv','ip_address') ='192.168.1.100' then
4 dbms_session.set_role('hr_mgr');
5 else
6 null;
7 end if;
8 end;
9 /
Procedure created.
sys@EXAM> grant execute on p_secure_role to scott;
Grant succeeded.
sys@EXAM> grant hr_mgr to scott;
Grant succeeded.
sys@EXAM> alter user scott default role all except hr_mgr;
User altered.
測試:
SQL> select sys_context('userenv','ip_address') from dual;
SYS_CONTEXT('USERENV','IP_ADDR
--------------------------------------------------------------------------------
192.168.1.100
SQL> select * from hr.employees;
EMPLOYEE_ID FIRST_NAME LAST_NAME EMAIL PHONE_NUMBER HIRE_DATE JOB_ID SALARY COMMISSION_PCT MANAGER_ID DEPARTMENT_ID
----------- -------------------- ------------------------- ------------------------- -------------------- ----------- ---------- ---------- -------------- ---------- -------------
198 Donald OConnell DOCONNEL 650.507.9833 1999/6/21 SH_CLERK 4187.33 124 50
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14359/viewspace-716018/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 保護Oracle資料庫的安全Oracle資料庫
- 使用Hashids來保護你的資料庫主鍵資料庫
- 資料庫保護資料庫
- Oracle的過載保護-資料庫資源限制Oracle資料庫
- oracle: default role 詳解(轉)Oracle
- 保護資料庫的安全(二)資料庫
- 保護資料庫的安全(一)資料庫
- Oracle資料庫AWR的使用例項詳解Oracle資料庫
- Oracle資料庫使用者許可權控制 - Role - SynonymOracle資料庫
- 【oracle DB安全性】保護資料字典引數O7_DICTIONARY_ACCESSIBILITYOracle
- “面向未來,有效保護”——深信服安全理念詳解
- 資料執行保護講解
- 使用CRM保護資料隱私
- 如何保護PostgreSQL資料庫安全? | goteleportSQL資料庫Go
- 詳解oracle資料庫閃回Oracle資料庫
- ORACLE 資料庫審計詳解Oracle資料庫
- oracle 資料庫ASM功能詳解Oracle資料庫ASM
- 使用GnuPG保護你的備份資料
- 資料庫框架Sugar的使用詳解資料庫框架
- 詳解ORACLE資料庫的分割槽表Oracle資料庫
- 講解Oracle資料庫提供的多種安全性措施 (2)Oracle資料庫
- 講解Oracle資料庫提供的多種安全性措施 (1)Oracle資料庫
- 【Oracle-資料庫概念】-Oracle checkpoint詳解Oracle資料庫
- Oracle資料庫系統的安全性(轉)Oracle資料庫
- 用Java的加密機制來保護你的資料Java加密
- 【DataGuard】Oracle DataGuard 資料保護模式切換Oracle模式
- 保護系統 用資料庫加密實現資料的安全資料庫加密
- Oracle大會PPT 用Oracle Database Vault 保護你的資料OracleDatabase
- Teradata的資料保護
- Django資料庫類庫MySQLdb使用詳解Django資料庫MySql
- Oracle資料庫日常維護Oracle資料庫
- 通過SQL Server資料庫映象保護虛擬資料庫ICSQLServer資料庫
- 使用jwt來保護你的介面服務JWT
- SQL Server資料庫備份保護的關鍵UMSQLServer資料庫
- ORACLE資料庫閃回步驟詳解Oracle資料庫
- oracle資料庫 exp/imp命令詳解(轉)Oracle資料庫
- 怎樣保護資料
- Oracle資料庫密碼檔案的使用和維護(轉)Oracle資料庫密碼