[DBMS/데이터베이스/dbms] 데이터베이스 관리자 권한을 꼭 필요한 계정 및 그룹에 허용

 

 

D-04 데이터베이스 관리자 권한을 꼭 필요한 계정 및 그룹에 허용

 

■ 점검영역 : 계정관리

 

■ 항목 중요도 :

 

■ 점검내용

 

관리자 권한이 필요한 계정 및 그룹에만 관리자 권한을 부여하였는지 점검

 

■ 점검목적

 

관리자 권한이 필요한 계정과 그룹에만 관리자 권한을 부여하였는지 점검하여 관리자 권한의 남용을 방지하여 계정 유출로 인한 비인가자의 DB접근 가능성을 최소화하고자 함

 

■ 보안위협

 

관리자 권한이 필요한 계정 및 그룹에만 관리자 권한을 부여하지 않을 경우 관리자 권한이 부여된 계정이 비인가자에게 유출될 경우 DB에 접근할 수 있는 위험이 존재함

 

■ 참고

 

-

 

 

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

 

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

 

양호

관리자 권한이 필요한 계정 및 그룹에만 관리자 권한이 부여된 경우

 

취약

관리자 권한이 필요 없는 계정 및 그룹에 권한이 부여된 경우

 

■ 조치방법

 

관리자 권한이 필요한 계정 및 그룹에만 관리자 권한 부여

 

 

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

 

■ Oracle


Step 1) SYSDBA 권한 점검
SQL> SELECT USERNAME FROM V$PWFILE_USERS WHERE USERNAME NOT IN (SELECT GRANTEE FROM DBA_ROLE_PRIVS WHERE GRANTED_ROLE='DBA') and USERNAME
!='INTERNAL' and sysdba='TRUE'; (어떠한 계정이라도 나오는 경우 취약)


Step 2) Admin에 부적합 계정 존재 여부 점검
SQL> select grantee, privilege from dba_sys_privs where grantee not in ( 'SYS', 'SYSTEM', 'AQ_ADMINISTRATOR_ROLE' , 'DBA ' ,'MDSYS' , 'LBACSYS', 'SCHEDULER_ADMIN', 'WMSYS') and admin_option='YES' and grantee not in (select grantee from dba_role_privs where granted_role='DBA'); (어떠한 계정이라도 나오는 경우 취약)


Step 3) 관리자 권한이 불필요한 계정에서 관련 권한을 제거
※ 불필요하게 시스템 권한을 부여한 계정의 권한 변경 필요
※ 시스템 권한 부여가 필요한 경우 필요한 테이블별 권한 부여

※ 인가된 사용자는 관리자 권한에 role을 grant한 후, 시스템 권한을 grant하고 role을 인가된 사용자에게 grant 함


■ MSSQL

 

Step 1) sysadmin 서버 역할의 계정 목록을 확인 후 해당 서버 역할에 불필요한 계정이 있는 경우 서버 역할에서 삭제
sysadmin 서버 역할에서 불필요한 계정 삭제
(명령어) Exec sp_droprolemember ‘user_name’, ‘sysadmin’;
(예) Exec sp_dropsrvrolemember 'user01', 'sysadmin';
(user01 계정을 sysadmin 서버 역할에서 삭제)


■ MySQL

 

Step 1) mysql.user 테이블에 적용된 권한은 모든 데이터베이스에 적용되므로 host, user, password를 제외한 나머지 권한은 허용하지 않음(‘N’)으로 설정


1. 사용자 등록
mysql> insert into mysql.user (host, name, password) values(‘%’, ’user
name’, password (‘password’); ※ 디폴트로 모든 권한 ‘N’ 설정


2. 권한 변경
mysql> update mysql.user set <권한>=’N’ where user=’user name’;


Step 2) 각 사용자는 접근하고자 하는 DB를 mysql.db에 등록 후 접근 권한을 부여하여 사용


1. DB등록 시 권한 부여
mysql> insert into mysql.db values(‘%’,’DB name’, ’username’, ’Y’, ’Y’, ’Y’, ’Y’, ’Y’, ’Y’, ’Y’, ’Y’, ’Y’, ’Y’, ’Y’, ’Y’, ’Y’, ’Y’, ’Y’, ’Y’, ’Y’);
mysql> flush privileges;


2. DB 권한 업데이트
mysql> update mysql.db set <권한>=’Y’ where db=<DB name> and user=’user name’;
mysql> flush privileges;


■ Altibase

 

Step 1) 계정별 부여된 시스템 권한 목록 확인 후, 아래 명령어 모두 입력
select * from system_.sys_grant_system_;
select * from system_.sys_users_;
select * from system_.sys_privileges_;


Step 2) sys_users_ 결과값에서 user_id 확인


Step 3) sys_grant_system_ 결과값에서 user_id 와 동일한 grantee_id 확인하여 priv_id 확인


Step 4) 일반사용자 계정 생성 시 시스템에 의해 부여되는 기본 권한 외 입력되어 있을 경우 해당 권한 삭제

시스템에 의해 자동으로 부여되는 권한 privileged_id
create session 215
create table 217
create sequence 210
create procedure 205
create view 229
create trigger 241
create synonym 245
create materialized view 252
create library 256

 

■ Tibero

 

Step 1) 계정별 부여된 시스템 권한 목록 확인 후, 아래 명령어 모두 입력
select * from dba_users;
select * from dba_sys_privs;


Step 2) dbs_users 결과값에서 시스템 계정, 일반 계정 확인


Step 3) dba_sys_privs 결과값에서 일반 계정임에도 시스템 권한을 불필요하게 부여받고 있는지 확인


Step 4) 일반 계정에 불필요한 시스템 권한이 부여되어 있을 경우 권한 삭제

 

■ PostgreSQL

 

계정의 용도 파악 후 불필요한 계정은 삭제, 새로운 계정 생성시 적절한 권한을 부여하여 생성


Step 1) 모든 사용자 확인
쿼리문 조회 : select *from pg_shadow;
명령어 조회 : \du


Step 2) 불필요 계정 삭제
DROP ROLE ‘삭제할 계정’;


Step 3) 계정 생성 및 권한 추가
create user ‘생성할 계정’;
alter role ‘계정명’ ‘권한명’ ‘권한명’ ····;
\du (계정 생성 및 권한 확인)

 

 

조치 시 영향 : 일반적인 경우 영향 없음

 

댓글

Designed by JB FACTORY