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

취약점 개요

■ 위험도
- 상

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

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

점검 및 조치 방법

■ 판단 기준
- 양호: 계정별 관리자권한이 차등 부여 되어 있는 경우
- 취약: 일반 사용자 계정에 불필요하게 관리자 권한이 부여되어 있는 경우

■ 조치 방법

■ Oracle
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'; (어떠한 계정이라도 나오는 경우 취약)

2.특정 계정에 SYSDBA 권한 적용 SQL> GRANT sysdba TO scott;

3.특정 계정에 SYSDBA 권한 제거 SQL> REVOKE FROM sysdba FROM scott;;

※ 불필요하게 시스템 권한을 부여한 계정의 권한 변경 필요
※ 시스템 권한 부여가 필요한 경우 필요한 테이블별 권한 부여
※ 인가된 사용자는 관리자 권한에 role을 grant한 후, 시스템 권한을 grant하고 role을 인가된 사용자에게 grant 함

■ MSSQL
1. sysadmin 서버 역할의 계정 목록을 확인 후 해당 서버 역할에 불필요한 계정이 있는 경우 서버 역할에서 삭제
sysadmin 서버 역할에서 불필요한 계정 삭제
Exec sp_droprolemember ‘user_name’, ‘sysadmin’

(예) Exec sp_dropsrvrolemember 'user01', 'sysadmin'
(user01 계정을 sysadmin 서버 역할에서 삭제)


■ MySQL
1. mysql.user 테이블에 적용된 권한은 모든 데이터베이스에 적용되므로 host, user, password를 제외한 나머지 권한은 허용하지 않음(‘N’)으로 설정
• 사용자 등록
mysql> insert into mysql.user (host, name, password) values(‘%’, ’user name’, password
(‘password’) ※ 디폴트로 모든 권한 ‘N’ 설정
• 권한 변경
mysql> update mysql.user set =’N’ where user=’user name’
2. 각 사용자는 접근하고자 하는 DB를 mysql.db에 등록 후 접근 권한을 부여하여 사용
• 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
• DB 권한 업데이트
mysql> update mysql.db set =’Y’ where db= and user=’user name’ mysql> flush privileges

댓글

Designed by JB FACTORY