ORACLE SYSTEM, ROLE, OBJECT 권한 조회

 

오라클에서 권한(Privileges)은 크게 3가지로 나뉜다.

 

1. 시스템 권한(SYSTEM PRIVILEGES)

: 데이터베이스 전체에서 특정 작업을 수행할 수 있는 권한.

 

2. 롤(ROLE)

: 여러 (1,2,3) 권한을 그룹화하여 관리하기 쉽게 만든 권한 세트

 

3. 객체 권한(OBJECT PRIVILEGES)

: 특정 데이터베이스 객체(테이블, 뷰, 프로시저 등)에 대해 특정 작업을 허용하는 권한

 

각각의 권한은 데이터베이스에서 다른 유형의 작업을 제어하며, 이 권한들을 통해 사용자는 다양한 데이터베이스 작업을 수행 할 수 있다. 아래는 위 3가지 관련 불출현황 조회 쿼리 이다.

 

 

DB : ORACLE 19C

 

 

1. 오라클 SYSTEM 권한 조회

: 총 257 개 ( 개인적으로는 이 테이블명이 암기가 되지 않아 정리하다가.. 이 글을 쓰게 되었다. )

SELECT * FROM SYSTEM_PRIVILEGE_MAP;
 
etc-image-0
대표사진 삭제

SYSTEM 권한 일부 발췌

 

 

 

2. SYSTEM 권한 불출 현황

SELECT * FROM DBA_SYS_PRIVS ORDER BY PRIVILEGE;

SELECT GRANTEE, NVL2(USERNAME,'계정','ROLE') AS "계정,ROLE", COUNT(*)
  FROM DBA_SYS_PRIVS A
     , DBA_USERS B
 WHERE A.GRANTEE = B.USERNAME (+)  
 GROUP BY GRANTEE,  NVL2(USERNAME,'계정','ROLE') 
 ORDER BY COUNT(*) DESC;

 

 
etc-image-1

SYSTEM 권한 불출 현황 ( GRANTEE는 계정 또는 ROLE 임 )

 

 

 

3. ROLE 권한 불출 현황

SELECT * FROM DBA_ROLE_PRIVS ORDER BY GRANTED_ROLE;

SELECT GRANTEE, NVL2(USERNAME,'계정','ROLE') "계정,ROLE" , COUNT(*)
  FROM DBA_ROLE_PRIVS A 
     , DBA_USERS B
 WHERE A.GRANTEE = B.USERNAME (+)
 GROUP BY GRANTEE, NVL2(USERNAME,'계정','ROLE')
 ORDER BY  COUNT(*) DESC;
 
etc-image-2

ROLE 권한 불출 현황 ( GRANTEE는 계정 또는 ROLE 임 )

 

 

 

 

4. OBJECT 권한 불출 현황

SELECT * FROM DBA_TAB_PRIVS ORDER BY OWNER, TABLE_NAME, GRANTOR, GRANTEE, PRIVILEGE;
 
etc-image-3

오브젝트에 대한 권한을 누가(GRANTOR) , 누구(GRANTEE)에게 불출했는지 조회가 됨

 

 

 

 

5. ROLE에 속한 SYSTEM 권한 확인

: SQLD 문제에도 출제된 CONNECT 권한에 어떤 SYSTEM 권한이 있는지 알수 있다.

SELECT * FROM ROLE_SYS_PRIVS ORDER BY ROLE, PRIVILEGE;
 
etc-image-4

 

 

 

 

 

6. ROLE에 속한 ROLE 권한 확인

SELECT * FROM ROLE_ROLE_PRIVS ORDER BY ROLE;
 
etc-image-5

 

 

 

 

7. ROLE에 속한 OBJECT 권한 확인

SELECT * FROM ROLE_TAB_PRIVS ORDER BY ROLE, OWNER, TABLE_NAME, PRIVILEGE;
 
etc-image-6

 

 

 

 

8. 현 세션 계정에 부여된 권한 확인

1) SESSION_PRIVS 는 SYSTEM 권한만 조회됨 ( OBJECT 권한 조회 되지 않음 )

예시 : DBA ROLE 권한이 있더라도, ROLE명은 조회되지 않으며,

ROLE 내에 포함된 SYSTEM 권한들이 조회 됨

 

2) 그 이외는 VIEW 명칭과 동일하게 현재 계정에 부여 된 "SYSTEM", "ROLE", "OBJECT" 권한 조회임

2.1) USER_TAB_PRIVS는 OBJECT 권한 불출 현황

- 누가(GRANTOR), 누구(GRANTEE)에 접속 계정이 포함되면 모두 조회

2.2) USER_TAB_PRIVS_RECD

- Recived의 약자로 타 계정으로 부터 부여 받은 권한 내역 조회 ( 즉, 2.1에서 GRANTEE가 접속 계정인 것만 조회 )

SELECT * FROM SESSION_PRIVS ORDER BY PRIVILEGE ;
SELECT * FROM USER_ROLE_PRIVS;
SELECT * FROM USER_SYS_PRIVS;
SELECT * FROM USER_TAB_PRIVS;
SELECT * FROM USER_TAB_PRIVS_RECD;
 

 

튜너는 보통 SYSTEM 권한만 있으면 되기 때문에, SESSION_PRIVS 조회로 권한 부여 확인 끝남