오라클에서 권한(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;

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;

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;

ROLE 권한 불출 현황 ( GRANTEE는 계정 또는 ROLE 임 )
4. OBJECT 권한 불출 현황
SELECT * FROM DBA_TAB_PRIVS ORDER BY OWNER, TABLE_NAME, GRANTOR, GRANTEE, PRIVILEGE;

오브젝트에 대한 권한을 누가(GRANTOR) , 누구(GRANTEE)에게 불출했는지 조회가 됨
5. ROLE에 속한 SYSTEM 권한 확인
: SQLD 문제에도 출제된 CONNECT 권한에 어떤 SYSTEM 권한이 있는지 알수 있다.
SELECT * FROM ROLE_SYS_PRIVS ORDER BY ROLE, PRIVILEGE;

6. ROLE에 속한 ROLE 권한 확인
SELECT * FROM ROLE_ROLE_PRIVS ORDER BY ROLE;

7. ROLE에 속한 OBJECT 권한 확인
SELECT * FROM ROLE_TAB_PRIVS ORDER BY ROLE, OWNER, TABLE_NAME, PRIVILEGE;

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 조회로 권한 부여 확인 끝남
'ORACLE > DBA' 카테고리의 다른 글
인덱스 사용 여부 확인 (0) | 2024.10.20 |
---|---|
프로시져, 함수 AUTHID 이해 (0) | 2024.10.19 |
오라클 힌트 목록 (0) | 2024.09.23 |
인덱스 invisible, visible 변경 (0) | 2024.09.23 |
오라클 서버시간 변경 ( -9 시간 조회 되는 현상 ) (0) | 2024.09.22 |