Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

MAC

MAC(Mandatory access control)는 컴퓨터 보안에서 사용하는 용어로, 운영체제가 어떤 수행 객체(subject)가 다른 객체(object)로의 접근과 수행 기능을 제한하는 식으로 보안성을 높이는 기능을 의미한다. 운영체제가 직접 관여하기 때문에 이 보안 기능은 강제(Mandatory)된다.

보통 프로세스나 스레드가 수행 객체가 되고, 파일이나 디렉토리, TCP/UDP 포트, 공유메모리 영역, IO 디바이스 등이 객체가 된다. 수행 객체와 객체는 보안 속성을 가진다. 프로세스가 어떤 객체에 접근을 시도할 때마다 운영체제의 커널은 권한룰을 수행하고 보안 속성을 조사해서, 객체에 대한 접근을 허용할지를 결정한다.

데이터베이스 시스템과 같이, 애플리케이션이 데이터베이스, 테이블, 뷰, 프로시저에 대한 MAC을 수행하기도 한다.

MAC와 DAC

MAC에서 보안 규칙은 보안 책임자에 의해서 중앙에서 관리된다. 따라서 일반 유저는 보안 정책들을(파일에 대한 허가나 제한 같은) 무시할 수 없다. 대조적으로, DAC(dscretionary access control)는 일반 사용자로 하여금 보안 정책을 수립하고, 보안 속성을 수정할 수 있는 권한을 허용한다.

MAC는 조직전체의 보안 정책을 수립/적용하기 위해서 사용한다. 전체 조직에 일괄적으로 적용하는 규칙이기 때문에, 유저는 의도적으로 혹은 우연히 정책을 수정하거나 무시할 수 없다.

구현

  • SELinux : NSA(National Security Agent) 연구소에서 개발해서 사용하고 있다. 2003년 부터 리눅스 커널에 통합됐으며, Red Hat Enterprise Linux 4버전 이후로 SELinux enable 상태로 사용하고 있다.
  • TOMOYO Linux : NTT Data Corporation에서 개발한 경량의 MAC 구현이다.
  • AppArmor : SUSE 리눅스과 우분투 리눅스 7.10 부터 사용하고 있는 MAC 구현이다. 리눅스 커널의 LSM(Linux sceurity Module interface)를 이용한다.
  • Oracle Label Security : 오라클 데이터베이스에 구현된 MAC
  • SE-PostgreSQL
  • Astra Linux : 러시아 군부에서 개발