DB 접근통제 모델과 데이터베이스 권한 관리
DB 접근통제의 주체·객체·조치·규칙을 바탕으로 DAC, MAC, RBAC 권한 관리 방식을 비교하고 운영 고려사항을 정리합니다.
2026-08-14 · 최초 발행 2025-08-10
DB 자원을 보호하는 접근 규칙
데이터베이스에는 조직의 핵심 정보가 쌓인다. 따라서 누가 어떤 데이터에 어떤 작업을 할 수 있는지를 통제하는 일은 정보보안의 기본 조건이다. DB 접근통제는 권한을 가진 사용자만 특정 데이터나 자원에 접근하도록 만드는 방법론이다.
접근 여부는 보통 다음 요소의 조합으로 결정된다.
- 주체(Subject): 접근을 요청하는 사용자나 응용프로그램
- 객체(Object): 데이터베이스, 테이블, 컬럼처럼 접근 대상이 되는 자원
- 조치(Action): SELECT, DELETE, UPDATE 등의 수행 작업
- 규칙(Access Rule): 주체·객체·조치에 대해 허용된 범위와 Constraint 설정 등을 정의한 명세
이 체계의 목적은 필요한 권한을 가진 사용자만 데이터에 접근하게 해 기밀성, 무결성, 가용성을 보호하는 데 있다.
소유자, 관리자, 역할로 나뉘는 권한 부여 방식
임의적 접근제어(DAC: Discretionary Access Control)
DAC는 주체 또는 주체가 속한 그룹의 신원을 기준으로 객체 접근을 제한한다. 객체 소유자가 자신의 객체에 대한 접근 가능 여부를 정할 수 있다는 점이 핵심이다.
권한은 사용자 정보 단위와 ID를 중심으로 관리한다. 객체 소유자는 다른 사용자에게 권한을 부여하거나 회수할 수 있다.
권한 표현에는 두 방식이 있다.
- Capability List(행 중심 표현): 각 주체가 접근할 수 있는 객체와 권한을 나열한다. 예를 들어 사용자 A가 테이블 X에 SELECT 권한, 테이블 Y에 UPDATE 권한을 갖는 형태다.
- Access Control List(ACL, 열 중심 표현): 각 객체를 기준으로 권한을 가진 주체와 그 권한을 기록한다. 예를 들어 테이블 X에 대해 사용자 A는 SELECT, 사용자 B는 DELETE 권한을 갖는 형태다.
-- 사용자에게 특정 테이블에 대한 권한 부여
GRANT SELECT, INSERT ON employees TO user1;
-- 사용자로부터 권한 회수
REVOKE DELETE ON employees FROM user1;
강제적 접근제어(MAC: Mandatory Access Control)
MAC는 비밀성을 가진 객체에 대해 주체의 권한을 근거로 접근을 허용한다. 정책은 시스템 관리자가 설정하며 일반 사용자는 이를 변경할 수 없다.
객체에 보안 등급을 지정하고, 허가된 사용자만 접근하게 하는 구조다. 객체 지향 보안 관점에서 권한을 정의하며 높은 수준의 기밀성과 무결성을 보장한다.
시스템 카탈로그 수정은 System Administrator만 수행하도록 제한할 수 있으며, 군사·정부 시스템의 기밀 정보 접근 제어도 이 방식의 사례다. 접근 요청이 들어오면 강제적 요청 공리 충족 여부와 주체·객체의 보안 등급을 비교해 허용 여부를 결정한다.
역할 기반 접근제어(RBAC: Role Based Access Control)
RBAC는 조직에서 맡은 역할을 기준으로 자원 접근을 결정한다. 개별 사용자에게 권한을 직접 연결하기보다 직무와 책임에 맞는 역할에 권한을 부여한다.
권한 부여 단위는 수행 기능인 역할이며, 권한이 필요한 사용자에게 해당 역할을 배정한다. DBA role, 인사부서 역할, 회계부서 역할처럼 업무 기능에 따라 권한을 구성할 수 있어 관리 효율성이 높다.
역할 중심 구조는 사용자의 권한을 논리적이고 독립적으로 할당하거나 회수할 수 있게 한다. 인사 이동이 발생해도 역할만 바꾸면 된다. 역할 계층을 두면 상위 역할이 하위 역할의 권한을 상속할 수 있으며, 필요한 최소 권한만 부여하는 최소 권한 정책도 적용할 수 있다.
-- 역할 생성
CREATE ROLE accounting_manager;
-- 역할에 권한 부여
GRANT SELECT, INSERT, UPDATE ON financial_data TO accounting_manager;
GRANT SELECT ON customer_info TO accounting_manager;
-- 사용자에게 역할 부여
GRANT accounting_manager TO user_kim;
권한을 관리하는 기준의 차이
| 접근제어 방식 | 권한 부여 주체 | 적용 범위 | 관리 복잡도 | 보안 수준 |
|---|---|---|---|---|
| DAC | 객체 소유자 | 개별 사용자/그룹 | 낮음 | 중간 |
| MAC | 시스템 관리자 | 시스템 전체 | 높음 | 높음 |
| RBAC | 시스템 관리자 | 역할 기반 | 중간 | 중간~높음 |
Oracle은 세 접근통제 방식을 모두 지원한다. DAC는 GRANT/REVOKE 명령으로 관리하고, MAC는 Oracle Label Security로 구현하며, RBAC는 역할 기반 권한 관리 시스템을 사용한다.
은행 시스템에서 RBAC를 적용하면 창구직원은 고객정보 조회와 입출금 처리만 수행하고, 대출담당자는 대출 관련 업무만 처리하게 할 수 있다. 지점장에는 직원관리, 고액 대출승인, 보고서 생성 권한을 추가로 부여한다.
권한 체계를 운영할 때 확인할 항목
업무 수행에 필요한 최소한의 권한만 부여하는 최소 권한 원칙이 출발점이다. 중요한 업무는 여러 역할로 분리해 한 사람이 모든 권한을 갖지 않도록 해야 한다.
접근통제 정책이 제대로 작동하는지 확인하려면 감사 로그를 유지해야 한다. 권한 관리가 복잡해질수록 오류 가능성이 높아지므로 적절한 자동화와 문서화도 필요하다. 접근 권한은 정기적으로 검토하고, 더 이상 필요하지 않은 권한은 제거한다.
조직은 보안 요구사항과 업무 특성에 따라 DAC, MAC, RBAC를 선택하거나 혼합해 적용할 수 있다. RBAC는 관리 효율성과 보안성의 균형을 제공하므로 현대 조직에서 널리 사용된다. 기술적 구현만으로 끝내지 않고 정책, 절차, 교육, 감사를 함께 운영해야 한다.