회사 업무/기술 연구편

[Security] 접근 제어 정책(Access Control)

코드몬스터 2025. 2. 13. 14:51
728x90

 

 

 

관련 블로그 글

[Security] 접근 제어 정책(Access Control) - https://jm-baek.tistory.com/370

[Security] Spring Security Framework 개념편 - https://jm-baek.tistory.com/386

[Security] 인증(Authentication) with Spring Security - https://jm-baek.tistory.com/385

[Security] 인가(Authorization) with Spring Security - https://jm-baek.tistory.com/389

[Security] Spring Security Framework 도입편 - https://jm-baek.tistory.com/388

 

 

목차

  1. 들어가기에 앞서
  2. 접근 제어 정책
  3. MAC, RBAC, ABAC의 결합 방식
  4. 결론

 

들어가기에 앞서

보통(?) 개인 및 학원 프로젝트를 하면 로그인 사용자에 대해서 역할(Role Base)로 인증(Authentication)을 제어한다.

 

회사의 기존 플랫폼도 역할 기반으로 인증 처리를 했고 상세한 권한 인가(Authorization) 대한 기능은 없는 상황이었다.

가끔씩 고객사 요구사항을 보면 권한 제어에 대한 기능이 있는 것을 보았다.

 

이번에 새로운 플랫폼을 만드는 과정에서 기회가 생겨 권한 제어 기능(Attribute-Based Access Control)을 적용해보려고 한다.


 접근 제어 정책

1. Mandatory Access Control (MAC)

MAC은 가장 엄격한 형태의 접근 제어 모델로, 보안 정책을 중앙에서 강제하는 방식입니다.

  • 주요 특징:
    • 주체(사용자)와 객체(데이터)에 보안 등급(Security Label) 이 부여됨.
    • 정책은 관리자(시스템 또는 보안 관리자) 가 설정하며, 사용자가 변경할 수 없음.
    • 주로 군사/정부 시스템, 고도 보안 환경에서 사용됨.
  • 예시:
    • 사용자가 "기밀(Confidential)" 등급을 가지고 있으면, "극비(Top Secret)" 등급의 문서를 읽을 수 없음.
    • Bell-LaPadula 모델(기밀성 중심), Biba 모델(무결성 중심) 등이 대표적인 MAC 모델.

2. Role-Based Access Control (RBAC)

RBAC은 사용자가 직접 리소스에 대한 권한을 가지는 것이 아니라 역할(Role)을 기반으로 권한을 부여하는 방식입니다.

  • 주요 특징:
    • 사용자는 하나 이상의 역할(Role)에 할당되며, 역할에 따라 권한이 결정됨.
    • 권한이 역할에 종속되므로, 관리가 용이하며 조직 내에서 직책에 따른 접근 통제가 가능함.
    • 대부분의 기업 및 조직에서 널리 사용됨.
  • 예시:
    • "보안 관리자" 역할을 가진 사용자는 방화벽 정책을 수정할 수 있지만, "일반 사용자"는 수정할 수 없음.
    • "의사" 역할을 가진 사람은 환자 기록을 조회할 수 있지만, "간호사"는 일부 정보만 조회 가능.

3. Attribute-Based Access Control (ABAC)

ABAC은 객체와 주체에 할당된 속성(Attribute)을 기반으로 동적으로 접근 권한을 부여하는 방식입니다.

  • 주요 특징:
    • 정적인 역할 기반이 아니라, 사용자의 속성(부서, 위치, 접속 시간 등), 리소스 속성(보안 등급, 파일 유형) 등을 기반으로 접근 제어를 수행.
    • 정책이 복잡할 수 있지만, 더 세밀한 접근 제어 가능.
    • 클라우드 환경, 분산 시스템에서 주로 활용됨.
  • 예시:
    • 사용자가 "보안 팀"에 속해 있고, 근무시간 내(09:00~18:00)에 회사 네트워크에서 접속하는 경우만 방화벽 로그 조회 가능.
    • 특정 데이터는 GDPR 규정에 따라 유럽 지역에서 접속할 때만 접근 가능.

MAC, RBAC, ABAC의 결합 방식

각 접근 제어 방식은 서로 단독으로 사용될 수도 있지만, 보안성과 유연성을 높이기 위해 혼합하여 적용할 수도 있습니다.

 

1. MAC + RBAC

  • 사용 예:
    • 군사 시스템에서 MAC을 사용하여 기본적인 보안 등급을 적용하고, 그 안에서 RBAC을 통해 세부적인 역할을 관리함.
    • 예: "기밀(Confidential)" 등급 문서는 MAC으로 보호하되, 해당 등급을 가진 사용자도 RBAC을 통해 특정 역할("보안 감사자")이 있어야만 열람 가능하도록 설정.

2. RBAC + ABAC

  • 사용 예:
    • 기업 환경에서 기본적인 역할(Role)을 기반으로 접근을 관리하면서도, 세부적인 접근은 속성(Attribute)으로 제한.
    • 예: "개발자" 역할을 가진 사용자는 시스템 로그에 접근할 수 있지만, 업무 시간(09:00~18:00) 내에 본사 IP에서만 접근 가능(ABAC 적용).

3. MAC + ABAC

  • 사용 예:
    • 고도 보안 환경에서 MAC을 적용하면서도, ABAC을 통해 추가적인 컨텍스트 기반 접근 통제를 수행.
    • 예: "기밀(Confidential)" 등급의 문서라도, 사용자가 해당 문서에 대한 작업이 승인된 경우(Approval 속성) 또는 특정 프로젝트 팀에 속해 있는 경우에만 접근 가능하도록 설정.

 결론

  • MAC은 가장 엄격한 모델로 사용자가 권한을 변경할 수 없으며, 군사/정부 기관에서 주로 사용됨.
  • RBAC은 역할을 기반으로 접근을 제어하는 방식으로 관리가 용이하며, 일반 기업에서 널리 사용됨.
  • ABAC은 속성을 활용하여 유연한 접근 제어가 가능하며, 클라우드 및 분산 환경에서 적합함.
  • RBAC과 ABAC을 결합하면 관리 용이성과 세밀한 제어를 동시에 달성할 수 있으며, MAC과 조합하면 더욱 강력한 보안 정책을 수립 가능.