LXC
•어플리케이션의
고립 환경을 지원하기 위해 리눅스 커널의 cgroup과 namespace
기능을
조합하여 만든 framework
•Cgroup:
리소스(CPU,
memory, disk, I/O, network, etc) 사용에 대한 제한, 점유, 고립을
지원
üResource
control
üFilesystem
access
üGeneral
device access
üMemory
resources
üNetwork
device resources
üCPU
bandwidth
üBlock
device IO bandwidth
üVarious
other aspects of a control group's view of the system
•
•Namespace:
리소스들을
서로 다른 네임스페이스 그룹으로 나눠서,
다른
네임스페이스에서 볼 수 없도록 함
üpid,
mnt, net, uts, ipc, user
Characteristic
•어플리케이션
관점에서의 분리(동작환경, 프로세스
트리,
네트워크, 사용자 id)
•
•어플리케이션과
OS와의 분리
실현
•
•퍼포먼스
저하 없는 실행시간 제공(Virtual
machine대비)
•Emulate
단계가
없어 낮은 오버헤드 제공
•
•Virtual
machine을
위한 부팅시간 불필요
•KVM,
Xen, Vmware가상화
대비 빠른 시작/종료
•
•어플리케이션
컨테이너 지원(<->시스템
컨테이너)
•init및 각종
데몬을 실행할 필요 없이 목적에 맞는 프로세스만 존재하는 환경 구현 가능
•
•프로세스
단위 리소스(cpu,
ram, devices)
분리 및 분배
•CPU
•RAM
•Devices
•Display
•GPU
•Serial(tty,
i2c…)
•block
device(hdd, emmc…)
•input
device
•.
•.
•.
•단독
컨테이너가(프로세스) 대량의
리소스를 점유하는것을 방지(외부 공격
방지)
•SELinux
와
함께 컨테이너의 안전한 분리 실현(Guest 내의 root가 다른 HOST를
제어하지 못하게 함)
Disadvantages
•Host
OS에
종속적
•Linux
kernel만
가능
•컨테이너별
커널 구성 불가능(드라이버단의
공유 이슈 있음)
응용 예(Application container)
Security side
•SE
linux와 결합한 보안 환경
•프로세스, 파일에 유형을 표시하여 이들의 분리, 상호작용하는 방식을 정의
•세분화된 액세스 제어(사용자, 역할, 유형, 레벨…)
•시스템 전체의 정책 관리(사용자 재량에 의한 설정 불가능)
•공격자는 정책의 변경 추가 없이 사용자 홈 디렉토리의 파일을
읽을 수 없음
•신뢰할 수 없는 입력으로부터 프로세스를 보호 하며 데이터의
기밀성과 무결성을 강화하는데 사용될
수 있음