D-11: DBA 이외의 인가되지 않은 사용자가 시스템 테이블에 접근할 수 없도록 설정
분류: DBMS
중요도: 상
개요
점검 내용
시스템 테이블에 일반 사용자 계정이 접근할 수 없도록 설정되어 있는지 점검
점검 목적
시스템 테이블의 일반 사용자 계정 접근 제한 설정 적용 여부를 점검하여 일반 사용자 계정 유출 시 발생할 수 있는 비인가자의 시스템 테이블 접근 위험을 차단하기 위함
보안 위협
시스템 테이블의 일반 사용자 계정 접근 제한 설정이 되어있지 않을 경우 Object, 사용자, 테이블 및 뷰, 작업 내역 등의 시스템 테이블에 저장된 정보가 누출될 수 있음
참고
-
점검 대상 및 판단 기준
대상
Oracle DB, MSSQL, MySQL, Altibase, Tibero, PostgreSQL 등
판단 기준
✅ 양호: 시스템 테이블에 DBA만 접근 가능하도록 설정되어 있는 경우
❌ 취약: 시스템 테이블에 DBA 외 일반 사용자 계정이 접근 가능하도록 설정되어 있는 경우
조치 방법
시스템 테이블에 일반 사용자 계정이 접근할 수 없도록 설정
조치 시 영향
일반 계정으로 시스템 테이블 접근 불가
점검 및 조치 사례
Oracle DB, Tibero
Step 1) DBA만 접근 가능한 테이블의 권한 확인
SQL> SELECT grantee, privilege, owner, table_name FROM dba_tab_privs WHERE (owner = 'SYS' or t able_name LIKE 'DBA_%') AND privilege <> 'EXECUTE' AND grantee NOT IN ('PUBLIC', 'AQ_AD MINISTRATOR_ROLE', 'AQ_USER_ROLE', 'AURORA$JIS$UTILITY$', 'OSE$HTTP$ADMIN', 'TR ACESVR', 'CTXSYS', 'DBA', 'DELETE_CATALOG_ROLE', 'EXECUTE_CATALOG_ROLE', 'EXP_F ULL_DATABASE', 'GATHER_SYSTEM_STATISTICS', 'HS_ADMIN_ROLE', 'IMP_FULL_DATAB ASE', 'LOGSTDBY_ADMINISTRATOR', 'MDSYS', 'ODM', 'OEM_MONITOR', 'OLAPSYS', 'ORDSY S', 'OUTLN', 'RECOVERY_CATALOG_OWNER', 'SELECT_CATALOG_ROLE', 'SNMPAGENT', 'SY STEM', 'WKSYS', 'WKUSER', 'WMSYS', 'WM_ADMIN_ROLE', 'XDB', 'LBACSYS', 'PERFSTAT', 'X DBADMIN') AND grantee NOT IN (SELECT grantee FROM dba_role_privs WHERE granted_role = 'D BA') ORDER BY grantee;
-- (어떤 계정이나 role이 나타나지 않으면 양호)
Step 2) 불필요하게 테이블 접근 권한이 사용자 계정에 할당된 경우
MSSQL
Step 1) system tables 접근 권한이 PUBLIC, GUEST 또는 비인가된 사용자에게 부여된 경우 접근 권한을 제거
Step 2) 시스템 테이블에 접근하기 위해서는 stored procedure 또는 information_schema views를 통해 접근해야 함
Step 3) 시스템 테이블에 접근 가능한 stored procedure는 사용이 제한되어야 함
MySQL
Step 1) 사용자 계정에 부여된 권한 확인
Step 2) 접근이 필요한 데이터베이스 및 테이블에만 권한 적용
Altibase
Step 1) sys_tables_를 조회하여 system_ 외 접근 계정 유무 확인
Step 2) 불필요 계정 접근 시 해당 접근 해제
PostgreSQL
Step 1) 사용자 및 역할 권한 정보 조회
Step 2) 스키마명에 해당되는 Table에 대한 접근 권한을 일반 사용자로부터 제거