본문 바로가기

배우기/복습노트[oracle sql]

[복습] SQL | Oracle 권한에 대하여(GRANT, REVOKE)

728x90
반응형

일반적으로 본인(접속한 계정) 소유가 아닌 경우 원칙적으로 테이블 조회가 불가하다(권한이 통제되어 있음). 따라서 업무적으로 필요 시 소유자가 아닌 계정에 테이블 조회, 수정, 권한 부여가 가능하다.

 

권한 종류

1) OBJECT(오브젝트) 권한: 특정 테이블에 대한 권한 제어

예를 들면 테이블에 대한 SELECT, INSERT, UPDATE, DELETE, MERGE 권한이다(테이블 하나 당 두는 권한).

 

2) 시스템 권한: 시스템 작업(테이블 생성 등)등을 제어

예를 들면 테이블 생성 권한, INDEX 삭제 권한 등

 

1. 권한 부여

문법은 아래와 같다.

 

예) OBJECT(오브젝트) 권한 부여(어떤 테이블의 어떤 권한, 이런 정보가 들어가야 함)

 

GRANT DBA TO SCOTT; 이런 ROLE을 통한 권한 부여는 반드시 재접속을 해야 하나 이런 일반 권한을 부여하면 리세션 맺지 않아도 된다.

오브젝트 권한은 SELECT ON PROFESSOR가 세트이다.

 

 

다음 중 권한 부여가 불가한 것은? 이렇게 시험에 나오기도 한다.

LINE 1처럼 동시에 여러 유저에 권한 부여가 가능하다, 그리고 LINE 2처럼 동시에 여러 권한을 부여할 수 있다.

그러나 동시에 여러 객체에 대한 권한부여는 불가능하다.

 

 

예) 시스템 권한 부여

시스템 권한은 CREATE TABLE 이 세트이다.

 

LINE 1처럼 동시에 여러 유저에 권한 부여가 가능하며, LINE 2처럼 동시에 여러 권한 부여가 가능하다.

 

 

 

2. 권한 회수

권한 회수 문법이다.

 

LINE 1과 같이 동시에 여러 권한 회수가 가능하다.

LINE 2는 에러가 났는데 동시에 여러 유저 회수는 가능하나 LINE 1에서 SELECT 권한을 회수했기에, 이미 회수된 권한을 재회수 하려니 에러가 났다. 

 

 

HR계정으로 접속했을 때 상황을 알아보자.

HR 계정에서 BI로 SCOTT의 테이블 권한을 부여할 수 없으나(LINE 1)

본인 소유의 테이블은 언제든지 권한 부여가 가능하다(LINE 2).

 

 

3. 권한 부여 옵션(중간관리자의 권한) 시험에 나오는 부분이다.

1) WITH GRANT OPTION: 오브젝트에 대한 일임받은 권한에 한해 다른 유저에게 권한을 부여한다. 즉 오브젝트 권한에 대해 다른 사용자에게 해당 권한을 부여할 수 있는 권한 옵션이다

★ 중간관리자를 거치지 않고 SYSTEM에서 직접 회수가 불가능하다.

★ 중간관리자 권한 회수 시 제3자에게 부여된 권한도 함께 회수된다.

 

2) WITH ADMIN OPTION: 시스템에 대한 일임받은 권한에 한해 다른 유저에게 권한을 부여한다. 즉, 시스템 권한 및 롤에 대해 다른 사용자에게 권한을 부여할 수 있는 권한 옵션이다.

★ 중간관리자를 거치지 않고 직접 회수가 가능하다.

★ 중간관리자 권한을 회수하여도 제3자에게 부여된 권한은 회수되지 않는다.

 

위 내용을 TEST 한 내용이다.

 

 

4. 권한 부여 현황 확인

1) 테이블 권한 부여 현황

SELECT * 
  FROM DBA_TAB_PRIVS;

따라서 EMP 테이블은 누가 보고 있는지 궁금할 때에는 

 

이렇게 쿼리를 짜면 된다.

결과테이블 이름을 나타내면 다음과 같다.

 

 

2) 시스템 권한 부여 현황

SELECT * 
  FROM DBA_SYS_PRIVS;

 

3) 롤 권한 부여 현황(오브젝트)

select *
  from role_tab_privs;

 

4) 롤 권한 부여 현황(시스템)

select *
  from role_sys_privs;

 

 

권한은 여기까지이다.

 

728x90
반응형