티스토리 뷰

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


시스템 권한이란?

시스템 권한은 사용자가 데이터베이스를 조작하기 위한 권한을 의미한다.

 

예를 들어

A라는 사용자가 아래의 권한을 가지고 있다고 가정해보자.

- 데이터베이스를 만들거나 변경하는 권한

- 테이블이나 인덱스를 만들거나 변경하는 권한

 

테이블을 생성하는 권한은 「CREATE TABLE」권한으로 부여한 스키마 내에서만 테이블을 작성할 수 있다.

다른 스키마에서 테이블을 생성하려면 「CREATE_ANY_TABLE」와 같이 ANY를 붙여야 한다.

 

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

 - 시스템 권한데이터베이스에 대한 권한이고

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

이라는 차이가 있다.

 

■ 시스템 권한을 확인

사용자에게 부여된 시스템 권한은 DBA_SYS_PRIVS에서 확인이 가능하다.

※ Oracle DB에서 사용자에게 부여된 권한을 확인하는 SQL은 https://kr98gyeongim.tistory.com/106 를 참고


■ 시스템 권한을 부여

사용자에게 시스템 권한을 부여할 때는 GRANT문을 사용한다.

 

GRANT문은 시스템 권한 이름과 사용자 이름을 지정한다.

GRANT 시스템권한명 TO 사용자명
[WITH ADMIN OPTION];

- [WITH ADMIN OPTION]을 지정함으로써 역할을 부여받은 사용자가 그 권한을 다른 사용자에게 부여할 수 있다.

- 시스템 권한은 100개가 넘게 있으므로,, 필요할 때마다 검색하는 방법 밖에 없는듯하당..ㅎ

   시스템 권한 목록은 https://kr98gyeongim.tistory.com/103 에서 참고

 

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

GRANT CREATE TABLE TO user1; --USER1에게 테이블을 생성하는 시스템 권한을 부여
GRANT SELECT ANY TABLE TO user1; -- USER1에게 테이블의 조회를 할 수 있는 권한을 부여

 

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

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

여러 권한을 부여하는 경우 시스템 권한 이름을 콤마(,)로 구분해서 추가하면 된다.

GRANT CREATE INDEX,CREATE VIEW TO user1; 
-- USER1에게 인덱스를 생성하는 시스템 권한과 뷰를 생성하는 시스템 권한을 부여

 

<예제 3: 모든 권한을 부여>

GRANT 문은 한 번에 모든 시스템 권한 (SELECT ANY DICTIONARY 제외)을 부여할 수 있다.

GRANT ALL PRIVILEGES TO user1;

■ 시스템 권한 취소 

사용자의 시스템 권한을 취소할 때는 REVOKE문을 사용한다.

REVOKE문은 취소하려는 시스템 권한 이름과 사용자 이름을 지정한다.

REVOKE 시스템권한명 FROM 사용자명;

<예제1 : 하나의 권한을 취소하는 방법>

REVOKE CREATE TABLE FROM user1;
REVOKE SELECT ANY TABLE FROM user1;

 

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

REVOKE CREATE INDEX,CREATE VIEW FROM user1;

 

<예제3 : 모든 권한을 취소하는 방법>

REVOKE ALL PRIVILEGES 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
글 보관함