알쓸코지
article thumbnail
Published 2024. 6. 18. 22:03
[OS] 접근 통제 정책 CS

접근 통제 정책

  • 어떤 주체가 언제, 어디서, 어떤 객체에 대하여, 어떠한 행위를 하도록 허용 또는 거부할 것인지를 정의하는 것
  • 주체와 객체 사이의 정보의 흐름을 제한하는 것으로 특정 권한을 가진 자만 접근할 수 있도록 하여 객체의 기밀성, 무결성, 가용성을 보장하는 것

 

임의적 접근 제어(DAC)

Discretionary Access Control. 자원의 소유자가 자원의 접근 권한을 결정하는 접근 통제 방식

  • 하나의 주체마다 객체에 대한 접근 권한을 부여하는 방식
  • 접근 권한을 객체의 소유자가 임의로 지정하는 자율적 정책 ➡️ 유연하다
  • 하지만 그만큼 보안 관리가 어렵고, 잘못된 권한 부여로 인해 보안 취약점이 발생할 수 있다.
  • 대부분의 파일 시스템은 DAC를 사용한다.
    • 파일이나 디렉터리의 소유자는 그 자원에 읽기, 쓰기, 실행 권한을 다른 사용자에게 부여하거나 철회할 수 있다.
chmod 755 test.txt  # 소유자에게 읽기, 쓰기, 실행 권한, 그룹과 기타 사용자에게는 읽기, 실행 권한을 부여함
  • 데이터베이스 시스템에서도 `GRANT` 명령어를 사용해서 권한을 부여할 수 있다.
GRANT SELECT ON testdb.* TO 'choco'@'localhost'; # choco에게 testdb에 대한 모든 권한을 부여함

 

`임의적`: 객체 소유자의 판단에 따라 권한을 줄 수 있다는 뜻

 

DAC 구현 방식

  • 접근 제어 행렬(Access Control Matrix): 전체 주체와 전체 객체에 대한 권한 관계를 2차원 배열로 관리하는 방법

  • 접근 제어 목록(Access Control List, ACL): 각 객체에 대해 권한을 가지고 있는 주체를 리스트 형태로 관리하는 방법

  • 가용성 티켓(Capability Tickets): ACL와 반대로 각 주체에 대해 접근 가능한 객체를 리스트 형태로 관리하는 방법
  • 권한 테이블(Permission Table): 주체와 객체, 그리고 권한을 관리하는 방법
ACL은 각 객체에 대한 접근 권한을 명시하기 때문에 가장 직관적이며, 객체가 많아져도 관리가 용이하기 때문에 ACL를 가장 많이 사용한다. 

 

강제 접근 제어(MAC)

Mandatory Access Control. 시스템이 중앙에서 접근 권한을 결정하여, 사용자가 이를 변경할 수 없는 방식 

  • 보안 관리자가 설정한 정책에 의해 접근 권한이 결정되며, 개별 사용자는 임의로 이를 변경할 수 없다.
  • 주로 군사나 정부 기관 등 보안이 중요한 환경에서 사용된다.
  • 객체의 소유자라고 할지라도 그 객체에 접근할 수 있는 보안 등급을 부여받지 못하면 그 객체에 접근할 수 없다.
  • 모든 주체(사용자/프로세스 등)와 객체(보호하려는 자원)에 대해 일일이 등급을 부여해야 하므로 번거롭고 설정이 복잡하다.

 

역할 기반 액세스 제어(RBAC)

Role-Based Access Control. 권한을 사용자 개인이 아닌 역할 그룹에 부여하고, 사용자에게 역할을 할당하여 접근제어를 하는 방식

  • DAC와 MAC의 단점을 보완한 방식으로, 사용자에게 정적 혹은 동적으로 역할 그룹을 할당할 수 있다.
  • 역할 변경 시 권한만 수정하면 되므로, 사용자 개발 권한을 일일이 수정할 필요가 없다.
  • 사용자는 하나 이상의 역할을 가지며, 각 역할은 특정 권한을 가진다.
  • 단순하고 구현하기 쉽지만, 시스템이 복잡해져 역할의 수가 많아지면 관리가 번거로울 수 있다.

 

속성 기반 액세스 제어(ABAC)

Attribute Based Access Control. 사용자, 리소스, 환경 등의 속성에 따라 접근 권한을 결정하는 방식

  • 어떤 객체에 접근하기 위해 만족시켜야 하는 속성에 대해 정의하고, 그 객체에 접근하려는 주체가 그 속성을 가지고 있는지 검사해서 접근제어를 수행한다.
  • 매우 유연하고 세밀한 접근 제어가 가능하다. 다양한 조건을 조합하여 권한을 설정할 수 있다.
  • 정책이 복잡해질 수 있으며, 설정 및 관리가 어려울 수 있다. 초기 설정에 많은 시간이 필요하다.
  • ex. 사용자의 `위치`가 `대한민국`일 경우에만 `맛집 리스트`를 `WRITE` 할 수 있다.

 

속성 종류

  • 주체 속성: 사용자 또는 주체의 특성 - ex. 사용자 이름, 국적, 직급 등
  • 객체 속성: 자원의 특성 - ex. 파일 유형, 생성 날짜, 소유자 등
  • 환경 속성: 접근 시점의 환경 특성 - ex. 액세스 위치, 시간 등

 

Ref

http://wiki1.kr/index.php/%EC%A0%91%EA%B7%BC%EC%A0%9C%EC%96%B4

https://idk-whatever.tistory.com/54

https://www.cloudflare.com/ko-kr/learning/access-management/role-based-access-control-rbac/

https://medium.com/twolinecode/33-%EC%97%AD%ED%95%A0-%EA%B8%B0%EB%B0%98-%EC%97%91%EC%84%B8%EC%8A%A4-%EC%A0%9C%EC%96%B4-role-based-access-control-rbac-%EB%9E%80-da03143f4bed

https://velog.io/@viewrain/%EA%B6%8C%ED%95%9C-%EA%B4%80%EB%A6%AC-%EC%A0%91%EA%B7%BC%EC%A0%9C%EC%96%B4-%EB%AC%B4%EC%97%87%EC%9D%B4-%EC%9E%88%EA%B3%A0-%EC%96%B4%EB%96%BB%EA%B2%8C-%ED%95%A0%EA%B9%8C

https://www.digitalguardian.com/blog/role-based-access-control

https://blog.naver.com/rockcrash/220478882223

https://blog.naver.com/wnrjsxo/221725554995

 

'CS' 카테고리의 다른 글

[OS] 리눅스 파일 시스템  (0) 2024.06.11
[OS] Swapping과 Paging  (0) 2024.06.04
[OS] 뮤텍스와 세마포어  (0) 2024.05.12
[OS] 스레드 풀(Thread Pool)  (0) 2024.04.26
[OS] Interrupt와 Context Switching  (0) 2024.04.19
profile

알쓸코지

@chocoji

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!