D-23
🎚️ 최소 권한 원칙(Role)
데이터베이스 보안
위험도: 상💡 쉽게 말하면
신입에게 회사의 모든 방 만능열쇠를 직접 쥐여주면 관리도 회수도 어렵고 사고도 큽니다. 사용자에게 ANY 권한을 직접 다 주는 것이 그렇습니다. 업무별로 꼭 필요한 권한 꾸러미(Role)만 주는 것이 안전합니다.
신입에게 회사의 모든 방 만능열쇠를 직접 쥐여주면 관리도 회수도 어렵고 사고도 큽니다. 사용자에게 ANY 권한을 직접 다 주는 것이 그렇습니다. 업무별로 꼭 필요한 권한 꾸러미(Role)만 주는 것이 안전합니다.
🎯 직접 해보기 — 공격을 실행해 보세요
아래에서 시스템 상태를 취약 또는 안전(조치 적용)으로 바꾼 뒤 공격 실행을 눌러, 같은 공격이 어떻게 다르게 끝나는지 직접 확인하세요.
# 공격자가 직접 부여된 ANY 권한으로 모든 스키마를 휘젓는다
# [공격 실행] 버튼을 누르면 시작합니다.
📋 설정 비교 (왜 막혔나?)
✗ 취약한 설정
-- 과다 권한 예시
SQL>
SELECT * FROM dba_sys_privs WHERE grantee='APPUSER';
SELECT ANY TABLE / CREATE ANY PROCEDURE
→ ANY 권한 직접 부여 (취약)
✓ 안전한 설정
-- Role 기반 최소 권한
SQL>
GRANT app_read TO APPUSER;
ANY 권한 회수, 업무 Role만 부여
→ 최소 권한 적용 (양호)
🔧 조치 방법
- 업무 단위
Role을 정의하고 필요한 객체 권한만 부여합니다. - SELECT ANY/CREATE ANY 등 ANY 권한을 회수합니다.
- 권한 부여 현황을 주기적으로 검토합니다.
✅ 점검 체크리스트
- ANY 등 과다 권한이 회수됨
- 업무 Role로 최소 권한이 부여됨
점검기준: 데이터베이스 > 최소 권한 원칙