[DBMS/데이터베이스/dbms] DBA 이외의 인가되지 않은 사용자가 시스템 테이블에 접근할 수 없도록 설정

 

 

D-06 DBA 이외의 인가되지 않은 사용자가 시스템 테이블에 접근할 수 없도록 설정

 

■ 점검영역 : 접근관리

 

■ 항목 중요도 :

 

■ 점검내용

 

시스템 테이블에 일반 사용자 계정이 접근할 수 없도록 설정되어 있는지 점검

 

■ 점검목적

 

시스템 테이블의 일반 사용자 계정 접근 제한 설정 적용 여부를 점검하여 일반 사용자 계정 유출 시 발생할 수 있는 비인가자의 시스템 테이블 접근 위험을 차단하기 위함

 

■ 보안위협

 

시스템 테이블의 일반 사용자 계정 접근 제한 설정이 되어 있지 않을 경우 객체, 사용자, 테이블 및 뷰, 작업 내역 등의 시스템 테이블에 저장된 정보가 누출될 수 있음

 

■ 참고

 

-

 

 

점검대상 및 판단기준(데이터베이스/dbms 취약점 진단)

 

■ 대상 : Oracle, MSSQL, MySQL, ALTIBASE, TIBERO, PostgreSQL 등

 

양호

시스템 테이블이 DBA만 접근 가능하도록 설정되어 있는 경우

 

취약

시스템 테이블이 DBA 외 일반 사용자 계정이 접근 가능하도록 설정되어 있는 경우

 

■ 조치방법

 

-

 

 

점검 및 조치 방법(oracle, mssql, mysql 등)

 

■ Oracle, Tibero


Step 1) DBA만 접근 가능한 테이블의 권한 확인(SQL*Plus)
SQL> select grantee, privilege, owner, table_name from dba_tab_privs where (owner='SYS' or table_name like 'DBA_%') and privilege <> 'EXECUTE' and grantee not in ('PUBLIC', 'AQ_ADMINISTRATOR_ROLE', 'AQ_USER_ROLE', 'AURORA$JIS$UTILITY$', 'OSE$HTTP$ADMIN', 'TRACESVR', 'CTXSYS', 'DBA', 'DELETE_CATALOG_ROLE', '
EXECUTE_CATALOG_ROLE', 'EXP_FULL_DATABASE', 'GATHER_SYSTEM_STATISTICS', 'HS_ADMIN_ROLE', 'IMP_FULL_DATABASE', 'LOGSTDBY_ADMINISTRATOR', 'MDSYS','ODM', 'OEM_MONITOR', 'OLAPSYS', 'ORDSYS', 'OUTLN', 'RECOVERY_CATALOG_OWNER', 'SELECT_CATALOG_ROLE', 'SNMPAGENT', 'SYSTEM', 'WKSYS', 'WKUSER', 'WMSYS', 'WM_ADMIN_ROLE', 'XDB', 'LBACSYS', 'PERFSTAT', 'XDBADMIN') and grantee not in (select grantee from dba_role_privs where granted_role='DBA') order by grantee;
(어떤 계정이나 role이 나타나지 않으면 양호)


Step 2) 불필요하게 테이블 접근 권한이 사용자 계정에 할당된 경우(SQL*Plus)
SQL> REVOKE 권한 on 객체 FROM User;

 

■ MSSQL

 

Step 1) System tables 접근 권한이 Public, Guest 또는 비 인가된 사용자에게 부여된 경우 접근 권한을 Public, Guest, 비인가된 사용자로부터 권한 제거
Use database name
Revoke <권한> on <object> from [user name]|[public]|[guest];


Step 2) 시스템 테이블에 접근하기 위해서는 stored procedure 또는, information_schema views를 통해 접근해야 함


Step 3) 시스템 테이블에 접근 가능한 stored procedure는 사용이 제한되어야 함


■ MySQL

 

Step 1) 일반 사용자로부터 mysql.user 테이블 모든 접근 권한 제거
mysql> revoke all on mysql.user from ‘[user name]’@’[hosts]’;
mysql> flush privileges


Step 2) 일반 사용자로부터 mysql.user 테이블 접근 권한 제거
mysql> revoke [권한] on mysql.user from [user name];
mysql> flush privileges


■ Altibase


Step 1) sys_tables_을 조회하여 system_ 외 접근 계정 유무 확인
select * from system_.sys_tables_;


Step 2) 불필요 계정 접근 시 해당 접근 해제


■ PostgreSQL


Step 1) Select * from information_schema.role_table_grants;


Step 2) Schema명에 해당되는 Table에 대한 접근 권한을 일반사용자로부터 제거
revoke [all,select,insert,update...] on all tables in schema ‘schema명’ from ‘user명’;

 

 

조치 시 영향 : 일반 계정으로 시스템 테이블 접근 불가

 

댓글

Designed by JB FACTORY