64. 접근 통제 및 권한 관리 (RBAC) 감사

⚠️ 이 문서는 시스템 감리 시 가장 빈번하게 적발되는 보안 취약점 중 하나로, "누가(주체) 어떤 데이터(객체)에 접근할 수 있는가?"를 규정하는 접근 통제 모델(특히 RBAC)이 설계대로 잘 구현되었는지, 그리고 퇴사자나 보직 변경자의 권한이 방치되어 오남용되고 있지는 않은지 점검하는 감리 활동을 다룹니다.

핵심 인사이트 (3줄 요약)

  1. 본질: 시스템의 문을 잠그는 자물쇠(인증, Authentication)를 통과한 이후, 그 사람이 금고방에 들어갈 수 있는지, 창고에 들어갈 수 있는지를 결정하는 '방문 출입증(인가, Authorization)'의 설계 및 운영 적정성을 평가한다.
  2. 가치: 외부 해커의 침입보다 훨씬 빈번하고 치명적인 '내부자 소행(권한이 있는 자의 데이터 유출)'을 원천 차단하고, 개인정보보호법 등 컴플라이언스의 필수 요건인 '최소 권한의 원칙'을 보장한다.
  3. 기술 체계: 감리인은 사람과 파일을 1:1로 매핑하는 비효율적인 접근 통제 행렬(ACM) 대신, 직무(Role)를 중간에 두어 권한을 묶음 관리하는 역할 기반 접근 통제(RBAC)가 시스템에 올바르게 적용되었는지 코드를 점검한다.

Ⅰ. 접근 통제의 기본 원칙과 모델

권한 부여는 덧셈이 아니라 뺄셈에서 시작해야 한다.

  1. 최소 권한의 원칙 (Need-to-Know):
    • 직원이 업무를 수행하는 데 필요한 '딱 그만큼의 최소한의 권한'만 주어야 한다. 개발자에게 운영 DB의 삭제(Drop) 권한을 편의상 부여하는 관행은 감리에서 즉각 시정 조치 대상이다.
  2. 임의적 접근 통제 (DAC) vs 강제적 접근 통제 (MAC):
    • DAC: 파일의 주인이 "이 파일은 홍길동도 보게 해줘"라고 권한을 임의로 넘겨줄 수 있다 (Unix 파일 시스템). 유연하지만 관리가 엉망이 되기 쉽다.
    • MAC: 시스템 관리자만 권한을 부여할 수 있으며, 파일의 1급 비밀 마크(보안 레이블)와 사람의 1급 비밀 취급 인가증을 기계적으로 대조하여 통제한다 (군대, 정보기관).
  3. 역할 기반 접근 통제 (RBAC, Role-Based Access Control):
    • 대기업에서 가장 널리 쓰이는 표준이다. 사람과 권한 사이에 '역할(Role: 영업팀장, 개발자)'을 둔다.
    • 영업팀장이라는 Role에 '고객 DB 조회 권한'을 매핑하고, 홍길동에게 '영업팀장 Role'을 부여한다.

📢 섹션 요약 비유: 회사 건물을 지을 때, 사원증에 "101호, 105호 출입 가능"이라고 방 번호를 일일이 적는 것(DAC)이 아니라, 사원증에 '영업부'라는 스티커(RBAC의 Role)를 붙여주고 건물 시스템이 영업부 스티커를 인식해 알아서 관련 층의 문을 모두 열어주는 효율적인 통제 방식입니다.


Ⅱ. 접근 통제 시스템 감리 핵심 점검 사항

감리인은 서류에 적힌 권한 정책이 실제 DB와 시스템에 똑같이 적용되어 있는지 찌른다.

  1. 접근 통제 행렬 (Access Control Matrix) 검증:
    • 설계 산출물인 권한 매트릭스(엑셀 표)와 실제 시스템의 권한 테이블(DB)을 덤프 떠서 1:1로 대조한다.
    • 표에는 '사원'이 결재 승인을 못 하게 되어 있는데, 시스템에서 사원 계정으로 접속해 URL을 강제로 /approve로 조작(파라미터 변조)했을 때 승인이 뚫려버리면 치명적인 결함으로 지적한다.
  2. 퇴사자 및 보직 변경자 권한 회수 (Dormant Account):
    • 감리 시 인사부서(HR)의 최근 퇴사자/이동자 명단과 IT 시스템의 계정 목록을 크로스 체크한다.
    • 퇴사한 지 한 달이 지났는데 시스템 계정이 살아있거나(휴면 계정 방치), 개발팀에서 영업팀으로 부서를 옮겼는데 여전히 개발 서버 접근 권한을 가지고 있는 것(권한 누적)을 샅샅이 찾아낸다.
  3. 직무 분리 (Segregation of Duties) 위반:
    • '지출 결의서 작성자'와 '지출 승인자'의 권한을 동일한 한 사람이 가질 수 없도록 로직이 구현되었는지 점검한다. (횡령 방지)

📢 섹션 요약 비유: 감리인은 아파트 보안 검열관입니다. "마스터키를 가진 경비원이 몇 명인가요?", "퇴사한 경비원의 열쇠는 당일 회수했나요?", "혹시 돈을 금고에 넣는 사람과 금고 문을 여는 사람이 동일 인물인가요?"를 꼬치꼬치 캐물어 내부 범죄의 싹을 자릅니다.


Ⅲ. 권한 오남용 감사(Audit)와 추적성

권한을 뚫은 자는 반드시 흔적을 남겨야 한다.

  1. 감사 증적 (Audit Trail) 로깅:
    • 시스템 내에서 중요한 데이터(개인정보, 재무 정보)를 조회, 수정, 삭제한 모든 행위는 누가(ID), 언제(Time), 어디서(IP), 무엇을 했는지 위변조가 불가능한 로그로 남아야 한다.
    • 감리인은 이 감사 로그 기능이 켜져 있는지, 그리고 관리자조차 이 로그 파일을 임의로 지울 수 없게(WORM 스토리지 등) 통제되어 있는지 확인한다.
  2. 비정상 행위 경보 (Alerting):
    • 고객 정보를 하루 평균 10건 조회하던 영업사원이, 퇴사 직전인 어느 날 자정 새벽에 갑자기 1만 건의 고객 DB를 엑셀로 다운로드하려 할 때, 시스템이 이를 이상 징후로 탐지하고 즉시 차단(또는 경보)하는 로직이 적용되었는지 권고한다.

📢 섹션 요약 비유: 은행 금고에 들어갈 수 있는 정당한 권한(RBAC)을 가졌더라도, 금고에 들어간 사람이 몇 시 몇 분에 어떤 서랍을 열고 돈을 얼마나 만졌는지 천장에 달린 고해상도 CCTV(감사 로그)로 영구히 녹화하여 나중에 딴소리를 못 하게 박아두는 과정입니다.