공격과 사고에 대비하는 컨테이너 보안의 기술
컨테이너 환경에 특화된 보안 문제를 다루는 실무 지침서다. 컨테이너를 배치하고 실행하는 단계마다 어떤 일이 일어나며, 발생할 수 있는 위협은 무엇인지 상세히 설명한다. 컨테이너의 작동 및 통신 원리를 파헤친 뒤 컨테이너를 격리하는 다양한 방법을 안내하고, 리눅스가 제공하는 기능을 활용하여 컨테이너별로 보안을 강화하는 방법을 익힌다. 컨테이너 이미지를 안전하게 구축하는 모범 관행도 소개한다. 이 책으로 컨테이너의 원리와 보안 문제의 본질을 이해하고 나면, 각 환경에 최적화된 방식으로 잠재 위험을 발견하고 해결해나가는 자신만의 방법을 구축하게 될 것이다.
출판사 리뷰
보안 문제에는 만능 해결책이 없다. 조직마다 구축한 환경이 다르고 외부 공격과 위협은 시시각각 변하기 때문이다. 컨테이너 보안 전문가인 저자는 독자가 스스로 잠재적인 보안 위험을 발견하고 문제를 해결하는 방법을 익히도록 돕는다. 활용이나 변형이 어려운 매뉴얼을 제시하기보다는 컨테이너를 구동하는 환경에 대해 근본적으로 이해하고 변수가 많은 보안 문제에 유동적으로 대응하게 한다. 개발자, 운용자, 보안 전문가 누구든 컨테이너가 단순한 배치의 단위가 아니라 가장 중요한 ‘보안의 단위’임을 이해하게 될 것이다. 사물의 작동 방식과 원리를 파헤치고 이해하길 좋아하는 사람이라면 이 책의 서술 방식을 무척 흥미롭게 느낄 것이며, 리눅스 터미널을 익숙하게 다룰 줄 안다면 더 없이 좋을 것이다.
이 책에서 다루는 내용
- 컨테이너 배치본에 영향을 미치는 공격 벡터
- 컨테이너를 지탱하는 리눅스 기능
- 컨테이너의 보안을 강화하는 수단
- 컨테이너의 격리를 깰 수 있는 설정 오류
- 컨테이너 이미지 구축을 위한 모범 관행
- 컨테이너 이미지의 취약점을 찾는 방법
- 컨테이너간 보안 네트워크 연결 설정
- 보안 도구를 활용해 배치본에 대한 공격을 방어하는 방법
추천사
리눅스 커널, 컨테이너, 가상머신 격리에 관한 완벽한 가이드. 핵심을 설명한 뒤 예시를 보여주는 저자의 설명 방식은 당신을 컨테이너 보안이라는 신비의 세계로 안내한다.
_ 앤드루 마틴, ControlPlane 이사
컨테이너 격리, 이미지 보안, 핵심 리눅스 개념에 관해 원리부터 설명하는 방식이 뛰어나다. 저자가 제시하는 보안 원칙과 지침을 따라보길 적극 권한다.
_ 필 에스테스, 리눅스 및 컨테이너 전략 분야 수석 엔지니어 & CTO, IBM 클라우드
제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 요약
부록: 보안 점검 목록