기타/Linux Container on Embedded

Linux container overview

Onionfra 2017. 6. 20. 21:56

LXC

어플리케이션의 고립 환경을 지원하기 위해 리눅스 커널의 cgroupnamespace 기능을 조합하여 만든 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와 결합한 보안 환경
프로세스, 파일에 유형을 표시하여 이들의 분리, 상호작용하는 방식을 정의
세분화된 액세스 제어(사용자, 역할, 유형, 레벨…)
시스템 전체의 정책 관리(사용자 재량에 의한 설정 불가능)
공격자는 정책의 변경 추가 없이 사용자 홈 디렉토리의 파일을 읽을 수 없음
신뢰할 수 없는 입력으로부터 프로세스를 보호 하며 데이터의 기밀성과 무결성을 강화하는데 사용될

 수 있음