본문 바로가기

프로그래밍/Oracle

오라클 시스템/객체 권한 및 룰


오라클 시스템권한 =======================================================================

create session         - 접속
create table             - 테이블생성
unlimited tablespace - 테이블스페이스에 블록활당
select any table        - 검색

with admin option    // <- revoke시 cascade되지 않는다 (계층적이지 않다.)
with grant option    // <- revoke시 cascade된다.(계층적이다)

 

-- 권한 부여
grant create session to [public|사용자명|사용자명,...] [with admin option]; // <-접속권한
grant create table, unlimited tablespace to [사용자명] [with grant option]; // <- 테이블생성권한(2개필요)

 

-- 권한 회수
revoke create session from [사용자명];

 

-- 권한 딕셔너리 보기
select * from dba_sys_privs; (grantee -> privilege)

 

오라클 객체권한 =========================================================================

*스캇 사용자가 자신의 스키마에 emp 테이블을 다른 사용자에게 select 할 수 있는 권하는 준다.
grant [select|insert|update|delete] on [emp] to [사용자명] [with grant option];


grant update (sal) on emp to [사용자명];    // <- 업데이트시 sal 칼럼만 가능하게 처리

with admin option    // <- revoke시 cascade되지 않는다 (계층적이지 않다.)
with grant option     // <- revoke시 cascade된다.(계층적이다)

 

*다른사용자가 검색

select * from scott.emp;    // <- 스캇사용자에 emp테이블 select

 

*권한 제거

revoke update on emp from [사용자명];    // <- 권한 회수

 

-- 관련 딕셔너리
user_tab_privs - 테이블에 대한 권한 모두
user_tab_privs_made - 소유하고있는 권한
user_tab_privs_recd - 받은 권한
user_col_privs - 열에대한 권한 모두
user_col_privs_made - 소유하고있는 권한
user_col_privs_recd - 받은 권한

 

오라클 룰 ===============================================================================

필요에 따라 enable/disable 할 수 있다.
set role 옵션으로 enable/disable 시킨다.

 

* 룰생성

create role [이름] not identified;

 

*룰에 권한주기
grant create session, create table to [룰이름]

 

*룰을 부여 (다른 룰에도 룰을 부여할 수 있음)
grant [룰이름] to [사용자 | 다른 룰이름];

 

* create role 권한이 있어야 생성 가능하다.

set role [이름] identified by xyz901; // <- 지정한 룰만 활성화하고 나머지는 비화성화 한다.
set role all except [이름];              // <- 저정한 룰만 제외하고 모든 룰을 활성화 한다.
set role none;                              // <- 모든룰을 비활성화 한다.


* all 옵션은 암호가 없는 경우와 외부적인 룰에 대해서만 적용가능하다.

grant create role to scott;              // <- scott 사용자에게 룰생성 권한을 부여

 

-- 룰 관련 딕셔너리
role_sys_privs - 시스템권한
role_tab_privs - 테이블권한
role_role_privs - 룰에 보여된 룰
session_roles - 현 사용자에게 활성화된 룰
user_role_privs - 사용자에게 부여된 룰
dba_sys_privs - 사용자 및 룰에 부여된 시스템 권한
dba_roles - 데이터베이스에 존재하는 모든 룰 정보