티스토리 뷰

이번 게시글은 Oracle DB에서 사용자에게 오브젝트 권한을 부여하는 SQL에 대해서 작성.


오브젝트 권한이란?

오브젝트 권한이란 사용자가 오브젝트에 대한 접근을 허용하거나 제한하는 것이 객체 권한이다.

 

예를 들어 B라는 사용자가  A라는 사용자의 TAB1 테이블을 SELECT 하고 싶은 경우,

B라는 사용자에게 A 사용자의 TAB1 테이블을 조회할 수 있는 SELECT 권한을 부여한다.

이때, UPDATE나 INSERT의 권한은 부여하지 않았으므로

B라는 유저가 TAB1 테이블의 데이터를 수정하거나 추가는 할 수 없다.

 

이 예제를 이해했다면 오브젝트 단위로 권한을 세밀하게 부여할 수 있다는 것을 알 수 있을 것이다.

 

・오브젝트 권한과 시스템 권한의 차이

오브젝트 권한임의의 테이블이나 오브젝트에 대한 권한이며

시스템 권한데이터베이스에 대한 권한이라는 차이가 있다.

 

※ 시스템 권한에 대해서는 https://kr98gyeongim.tistory.com/104 를 참고

 

 

 오브젝트 권한을 확인

오브젝트 권한은 DBA_TAB_PRIVS를 참조해서 확인할 수 있다.

※ 오브젝트 권한을 확인하는 DBA_TAB_PRIVS에 대해서는 https://kr98gyeongim.tistory.com/102 를 참고


 

■ 오브젝트 권한을 부여

사용자에게 객체 권한을 부여할 때는 GRANT 문을 사용한다.

GRANT문은 오브젝트 권한 이름, 오브젝트 이름 및 사용자 이름을 지정한다.

GRANT 오브젝트 권한 이름 ON 오브젝트 이름 TO 사용자 이름
[WITH GRANT OPTION];

※ [WITH GRANT OPTION]를 지정하면

오브젝트 권한을 부여받은 사용자가 부여된 권한을 다른 사용자에게 부여할 수 있다.

 

 

・오브젝트 권한 종류

오브젝트 권한명 설명
ALTER 테이블 등의 오브젝트의 정의를 변경하는 권한
SELECT SELECT문으로 조회하는 권한
INSERT INSERT문으로 레코드를 추가하는 권한
UPDATE UPDATE문으로 레코드를 수정하는 권한
DELETE DELETE문으로 레코드를 삭제하는 권한
REFERENCE 참조 제약을 작성하는 권한
INDEX 테이블에 인덱스를 작성하는 권한
EXECUTE 프로시자나 함수를 실행하는 권한
READ 디렉토리 내의 파일을 가져오는 권한
WRITE 디렉토리 내의 파일에 작성할 수 있는 권한

 

<예제1 : 하나의 권한을 부여하는 방법>

GRANT 문을 사용하여 오브젝트에 대한 하나의 권한을 부여할 수 있다.

 

아래의 SQL에서는 USER1에 TAB1 테이블에 대한 SELECT 권한을 부여하고 있다.

두번째 행에서는 USER2에 TAB1 테이블의 UPDATE 권한을 부여하고 있다.

GRANT SELECT ON tab1 TO user1;
GRANT UPDATE ON tab1 TO user2;

 

<예제2 : 동시에 여러 권한을 부여하는 방법>

GRANT문에서는 동시에 여러 권한을 부여할 수 있다.

여러 권한을 부여할 경우에는 객체 권한명을 쉼표로 구분해 추가한다.

 

아래의 SQL에서는 USER1에 TAB1테이블의 SELECT, DELETE, INSERT권한을 부여하고 있다.

GRANT SELECT, DELETE, INSERT ON tab1 TO user1;

 

<예제3 : 모든 권한을 부여하는 방법>

GRANT 문에서는 한번에 모든 권한을 부여할 수도 있다.

 

아래의 SQL에서는 USER1에 TAB1 테이블에 대한 모든 객체 권한을 부여하고 있다.

GRANT ALL ON tab1 TO user1;

■ 오브젝트 권한을 취소

사용자에게 오브젝트 권한을 취소할 때는 REVOKE 문을 사용한다.

REVOKE문에서는 취소하고자 하는 오브젝트의 권한 이름과 객체 이름, 사용자 이름을 지정한다.

REVOKE 오브젝트 권한 이름 ON 오브젝트이름 FROM 사용자이름

<예제1 : 하나의 권한을 부여하는 방법>

REVOKE 문을 사용하여 오브젝트에 대한 하나의 권한을 취소할 수 있다.

 

아래의 SQL의

첫번째 행에서는 USER1에 TAB1 테이블에 대한 SELECT 권한을 취소하고 있다.

두번째 행에서는 USER2에 TAB1 테이블의 UPDATE 권한을 취소하고 있다.

REVOKE SELECT ON tab1 FROM user1;
REVOKE UPDATE ON tab1 FROM user2;

 

<예제2 : 동시에 여러 권한을 부여하는 방법>

REVOKE문에서는 동시에 여러 권한을 취소할 수 있다.

여러 권한을 취소할 경우에는 객체 권한명을 쉼표로 구분해 추가한다.

 

아래의 SQL에서는 USER1에 TAB1테이블의 SELECT, DELETE, INSERT권한을 취소하고 있다.

REVOKE SELECT, DELETE, INSERT ON tab1 FROM user1;

 

<예제3 : 모든 권한을 부여하는 방법>

REVOKE 문에서는 한번에 모든 권한을 취소할 수도 있다.

 

아래의 SQL에서는 USER1에 TAB1 테이블에 대한 모든 객체 권한을 취소하고 있다.

REVOKE ALL ON tab1 FROM user1;

<정리>

- 오브젝트 권한 부여는 GRANT문, 취소는 REVOKE문을 사용한다.

- GRANT ALL로 모든 권한을 부여할 수 있으며, REVOKE ALL로 모든 권한을 취소할 수 있다.

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함