컨테이너 보안
공격과 사고에 대비하는 컨테이너 보안의 기술
컨테이너 환경에 특화된 보안 문제를 다루는 실무 지침서다. 컨테이너를 배치하고 실행하는 단계마다 어떤 일이 일어나며, 발생할 수 있는 위협은 무엇인지 상세히 설명한다. 컨테이너의 작동 및 통신 원리를 파헤친 뒤 컨테이너를 격리하는 다양한 방법을 안내하고, 리눅스가 제공하는 기능을 활용하여 컨테이너별로 보안을 강화하는 방법을 익힌다. 컨테이너 이미지를 안전하게 구축하는 모범 관행도 소개한다. 이 책으로 컨테이너의 원리와 보안 문제의 본질을 이해하고 나면, 각 환경에 최적화된 방식으로 잠재 위험을 발견하고 해결해나가는 자신만의 방법을 구축하게 될 것이다.
컨테이너 오픈소스 보안 전문 회사 Aqua Security의 오픈소스 공학 부사장(Vice President of Open Source Engineering)으로서 Trivy, Tracee, kubehunter, kube-bench 같은 프로젝트를 관리한다. CNCF의 기술 감독 위원회(Technical Oversight Committee)의 의장이며 코펜하겐, 상하이, 시애틀에서 열린 ‘KubeCon + CloudNativeCon 2018’ 행사들의 공동 의장을 역임했다.
네트워크 프로토콜 및 분산 시스템에 대한 소프트웨어 개발 관리와 개발팀 관리, 제품 관리에 풍부한 경험을 가지고 있으며, VOD나 음악, VoID 같은 디지털 기술 분야에 대한 경험도 풍부하다. 코드를 작성하거나 강연을 하지 않을 때는 고향인 런던보다 날씨가 좋은 곳에서 자전거 타기를 즐기며, 비디오게임
제1장 컨테이너 보안 위협
__1.1 위험, 위협, 완화
__1.2 컨테이너 위협 모형
__1.3 보안 경계
__1.4 다중 입주
__1.5 보안 원칙들
__1.6 요약
제2장 리눅스 시스템 호출, 접근 권한, 능력
__2.1 시스템 호출
__2.2 파일 접근 권한
__2.3 리눅스 능력
__2.4 권한 확대
__2.5 요약
제3장 cgroups와 제어 그룹
__3.1 제어 그룹 위계구조
__3.2 제어 그룹 생성
__3.3 자원 한계 설정
__3.4 프로세스를 제어 그룹에 배정
__3.5 도커와 cgroups
__3.6 cgroups 버전 2
__3.7 요약
제4장 컨테이너 격리
__4.1 리눅스 이름공간
__4.2 호스트 이름 격리
__4.3 프로세스 ID 격리
__4.4 루트 디렉터리 변경
__4.5 이름공간과 루트 변경의 조합
__4.6 마운트 이름공간
__4.7 네트워크 이름공간
__4.8 사용자 이름공간
__4.9 IPC 이름공간
__4.10 제어 그룹 이름공간
__4.11 호스트의 관점에서 본 컨테이너 프로세스
__4.12 컨테이너 전용 호스트
__4.13 요약
제5장 VM과 컨테이너
__5.1 컴퓨터 부팅 과정
__5.2 VMM의 등장
__5.3 “가두고 흉내 낸다” 접근 방식
__5.4 가상화 불가 명령의 처리
__5.5 프로세스 격리와 보안
__5.6 VM의 단점
__5.7 컨테이너 격리와 VM 격리의 비교
__5.8 요약
제6장 컨테이너 이미지
__6.1 루트 파일 시스템과 이미지 설정
__6.2 실행 시점에서 매개변수를 명시적으로 설정
__6.3 OCI 표준
__6.4 이미지 설정 정보
__6.5 이미지 구축
__6.6 이미지 저장
__6.7 이미지 식별
__6.8 이미지 보안
__6.9 구축 시점 보안
__6.10 이미지 저장 보안
__6.11 이미지 배치 과정의 보안
__6.12 GitOps와 배치 보안
__6.13 요약
제7장 컨테이너 이미지의 소프트웨어 취약점
__7.1 취약점 연구
__7.2 취약점, 패치, 배포판
__7.3 응용 프로그램 수준 취약점
__7.4 취약점 위험 관리
__7.5 취약점 스캐닝
__7.6 설치된 패키지 찾기
__7.7 컨테이너 이미지 스캐닝
__7.8 스캐닝 도구들
__7.9 스캐닝 과정을 CI/CD 파이프라인에 도입
__7.10 취약한 이미지가 실행되지 않게 하는 방법
__7.11 제로데이 취약점
__7.12 요약
제8장 컨테이너 격리의 강화
__8.1 seccomp
__8.2 AppArmor
__8.3 SELinux
__8.4 gVisor
__8.5 카타 컨테이너
__8.6 파이어크래커
__8.7 유니커널
__8.8 요약
제9장 컨테이너 격리 깨기
__9.1 루트로 컨테이너 실행
__9.2 --privileged 플래그와 리눅스 능력
__9.3 민감한 디렉터리의 마운팅
__9.4 도커 소켓 마운팅
__9.5 컨테이너와 호스트의 이름공간 공유
__9.6 사이드카 컨테이너
__9.7 요약
제10장 컨테이너 네트워크 보안
__10.1 컨테이너 방화벽
__10.2 OSI 네트워크 모형
__10.3 IP 패킷이 전송되는 과정
__10.4 컨테이너의 IP 주소
__10.5 네트워크 격리
__10.6 계층 3, 4의 라우팅과 규칙들
__10.7 네트워크 정책
__10.8 서비스 메시
__10.9 요약
제11장 TLS를 이용한 구성요소 간 보안 연결
__11.1 보안 연결
__11.2 X.509 인증서
__11.3 TLS 연결
__11.4 컨테이너들 사이의 보안 연결
__11.5 인증서 폐기
__11.6 요약
제12장 비밀 정보를 컨테이너에 전달
__12.1 비밀 값의 속성들
__12.2 컨테이너에 정보를 전달하는 방법
__12.3 쿠버네티스의 비밀 값
__12.4 루트의 비밀 값 접근
__12.5 요약
제13장 실행 시점 컨테이너 보호
__13.1 컨테이너 이미지 프로파일
__13.2 표류 방지
__13.3 요약
제14장 컨테이너와 OWASP 10대 위험
__14.1 주입
__14.2 취약한 인증
__14.3 민감한 데이터 노출
__14.4 XML 외부 개체
__14.5 취약한 접근 제어
__14.6 잘못된 보안 설정
__14.7 교차 사이트 스크립팅(XSS)
__14.8 안전하지 않은 역직렬화
__14.9 알려진 취약점을 가진 구성요소 사용
__14.10 불충분한 로그 기록과 감시
__14.11 요약
부록: 보안 점검 목록