객체권한은 USER가 소유하고 있는 특정 객체를 다른 사용자들이 엑세스 하거나 조작 할 수 있게 하기 위해 생성 한다.
객체권한(Object Privileges) 이란?
- – 테이블이나 뷰, 시퀀스, 프로시저, 함수, 또는 패키지 중 지정된 한 객체에 특별한 작업을 수행 할 수 있게 한다.
- – 객체 소유자는 다른 사용자에게 특정 객체권한을 부여 할 수 있다.
- – PUBLIC으로 권한을 부여하면 회수할 때도 PUBLIC으로 해야 한다.
- – 기본적으로 소유한 객체에 대해서는 모든 권한이 자동적으로 획득된다.
- – WITH GRANT OPTION 옵션은 ROLE에 권한을 부여할 때는 사용할 수 없다.
객체에 따른 권한 목록 예
객체권한 | 테이블 | 뷰 | 시퀀스 | 프로시저 |
---|---|---|---|---|
ALTER | ○ | ○ | ||
DELETE | ○ | ○ | ||
EXECUTE | ○ | |||
INDEX | ○ | |||
INSERT | ○ | ○ | ||
SELECT | ○ | ○ | ○ |
객체권한 부여 문법
위의 표에서 맨 왼쪽에 있는 ALTER, DELETE, EXECUTE.. 등등은 object_privilege란에 오면 되고, 맨 윗줄에 있는 테이블, 뷰, 시퀀스, 프로시저 등등은 ON 다음에 있는 object에 입력하면 된다.
- – object_privilege : 부여할 객체권한의 이름
- – object : 객체명
- – user, role : 부여할 사용자 이름과 다른 데이터 베이스 역할 이름
- – PUBLIC : 객체권한, 또는 데이터베이스 역할을 모든 사용자에게 부여할 수 있다.
- – WITH GRANT OPTION : 권한을 부여 받은 사용자도 부여 받은 권한을 다른 사용자 또는 역할로 부여할 수 있게 된다.
객체권한 부여 예제
-- scott USER에게 emp테이블을 SELECT, INSERT할 수 있는 권한을 부여했다. -- scott USER도 다른 USER에게 그 권한을 부여 할 수 있다. SQL>GRANT SELECT, INSERT ON emp TO scott WITH GRANT OPTION; 권한이 부여되었습니다.
객체권한의 회수
- – 객체 권한의 철회는 그 권한을 부여한 부여자만이 수행할수 있다.
- – CASCADE CONSTRAINTS : 이 명령어의 사용으로 참조 객체 권한에서 사용 된 참조 무결성 제한을 같이 삭제 할 수 있다.
- – WITH GRANT OPTION으로 객체 권한을 부여한 사용자의 객체 권한을 철회하면, 권한을 부여받은 사용자가 부여한 객체 권한 또한 같이 철회되는 종속철회가 발생한다.
객체권한 회수 예제
-- scott USER에게 부여한 emp 테이블에 대한 SELECT, INSERT 권한 회수 예제 -- 만약 scott USER가 다른 사용자에게 SELECT, INSERT권한을 부여했으면 그 권한들도 같이 회수가 된다. SQL>REVOKE SELECT, INSERT ON emp FROM scott; 권한이 회수되었습니다.
WITH GRANT OPTION을 사용하여 객체권한 회수
WITH GRANT OPTION을 사용하여 부여한 객체 권한을 취소하면 취소 작업이 연쇄적으로 수행 된다.시나리오
- 1. SCOTT가 STORM에게 WITH GRANT OPTION을 사용하여 emp 테이블의 SELECT 권한을 부여 한다.
- 2. STORM이 emp 테이블의 SELECT 권한을 TEST에게 부여 한다.
- 3. SCOTT가 STORM에게 부여한 emp 테이블의 SELECT 권한을 취소 한다.
결과
- – SCOTT가 STORM에게 부여한 emp 테이블에 대한 SELECT 권한을 취소하면, TEST USER가 emp 테이블을 SELECT할 수 있는 권한도 자동으로 취소가 된다.
객체권한관련 데이터 사전
데이터 사전 | 설 명 |
---|---|
USER_TAB_PRIVS | 객체권한의 소유자, 객체권한 부여자, 객체권한 피부여자를 볼수 있음 |
USER_TAB_PRIVS_MADE | 사용자가 부여한 모든 객체권한 |
USER_TAB_PRIVS_RECD | 사용자가 부여받은 모든 객체권한 |
USER_COL_PRIVS | 객체권한의 소유자, 객체권한 부여자, 객체권한 피부여자의 컬럼의 객체권한 |
USER_COL_PRIVS_MADE | 사용자가 부여한 객체 컬럼에 대한 모든 객체권한 |
USER_COL_PRIVS_RECD | 사용자가 부여받은 객체 컬럼에 대한 모든 객체권한 |