클라우드 환경에서의 데브옵스 보안

안전한 클라우드 서비스를 위한 보안 기법과 데브옵스 실천법

클라우드 서비스를 더욱 안전하게 만드는 방법을 소개합니다!

이 책에서는 웹 응용 프로그램 및 인프라 보안에 사용되는 최신 사례를 검토하고 보안 기능을 제품에 직접 통합하는 방법을 알려줍니다. 지속적인 통합(CI), 지속적인 전달(CD)과 서비스로서의 인프라 같은 데브옵스의 핵심 개념을 배웁니다. 또한 다양한 사례 연구를 통해 자동화된 테스트, 지속적인 전달(CD), 다양한 핵심 데브옵스 프로세스에 보안을 구축하는 방법을 보여줍니다.

저자의 풍부하고 다양한 경험을 담고 있는 이 책은 웹 애플리케이션을 공격으로부터 보호하고, 사기와 같은 부정행위 시도를 방지하며, 대규모 서비스를 운영할 때 안전하게 시스템을 보호하는 핵심 전략으로 가득합니다.

더불어 현대 인프라에서 일반적으로 사용되는 클라우드 환경에서의 배포 및 자동화 도구에 의해 발생하는 고유한 취약점을 식별하고 평가하며, 취약점으로부터 보호하는 방법을 배울 수 있습니다.

 

★ 이 책에서 다루는 내용 ★

  • 지속적인 보안에 대한 접근 방식
  • 데브옵스에서의 테스트 기반 보안 구현
  • 클라우드 서비스를 위한 보안 기법
  • 사기 및 부정 행위 감시와 사고 대응
  • 보안 테스트 및 위험 평가

줄리엔 비앙트 (Julien Vehent)

줄리엔 비앙트는 모질라의 파이어폭스 운영 보안(Firefox Operations Security) 팀을 이끌고 있다. 그는 수백만 파이어폭스 사용자가 매일 상호 작용하는 웹 서비스의 보안을 정의하고 구현 및 운영하는 일을 담당하고 있다. 줄리엔은 2000년대 초반부터 웹에서의 서비스 보안에 중점을 두었으며, 리눅스 시스템 관리자로 시작해 2007년 정보 보안 석사 학위를 받았다.

홍성민

2000년 초반부터 웹메일을 시작으로 SSO/EAM과 MDM 솔루션을 개발했으며, 다수의 SI/SM 프로젝트에서 소프트웨어 아키텍트 및 성능/문제해결 전문가로 일했다. 또한 여러 오픈소스 미들웨어의 기술 검증과 이를 활용한 아키텍처 설계와 컨설팅에 참여했으며, 현재는 기존 인프라와 애플리케이션을 클라우드 환경으로 이전하고 클라우드를 잘 활용하는 방법을 대중에게 알리고 설명하는 일에 관심이 많다. 위키북스의 『데브옵스: 개발자, QA, 관리자가 함께 보는 리눅스 서버 트러블슈팅 기법』과 『AWS 기반 서버리스 아키텍처』를 번역했고 『파이썬 웹 프로그래밍: 플라스크를 이용한 쉽고 빠른 웹 개발』을 저술했다.

주성식

새로운 것을 찾아내고 가까운 곳에 적용해 보기를 좋아하는 탐구자. 늘 배우는 것에 주저하지 않고 배움 앞에 겸손한 학생이 되고 싶다. 위키북스의 『데브옵스: 개발자, QA, 관리자가 함께 보는 리눅스 서버 트러블슈팅 기법』과 『AWS 기반 서버리스 아키텍처』 를 번역했고 『파이썬 웹 프로그래밍: 플라스크를 이용한 쉽고 빠른 웹 개발』을 저술했다.

  • [1부] 사례 연구: 기본 데브옵스 파이프라인에 보안 계층 적용하기
    •  
  • ▣ 1장: 데브옵스 보안
    • 1.1 데브옵스 접근법
      • _1.1.1 지속적인 통합(Continuous integration)
      • _1.1.2 지속적인 전달(Continuous delivery)
      • _1.1.3 서비스형 인프라(Infrastructure as a service)
      • _1.1.4 문화와 신뢰
    • 1.2 데브옵스에서의 보안(Security in DevOps)
    • 1.3 지속적인 보안(Continuous security)
      • _1.3.1 테스트 주도 보안(Test-driven security)
      • _1.3.2 공격 모니터링 및 대응
      • _1.3.3 위험 평가 및 보안 성숙
    •  
  • ▣ 2장: 기본 데브옵스 파이프라인 구축하기
    • 2.1 로드맵 구현
    • 2.2 코드 저장소: 깃허브
    • 2.3 CI 플랫폼: CircleCI
    • 2.4 컨테이너 저장소: 도커 허브
    • 2.5 운영 인프라: 아마존 웹 서비스
      • _2.5.1 3티어 아키텍처
      • _2.5.2 AWS에 대한 접근 구성
      • _2.5.3 Virtual Private Cloud
      • _2.5.4 데이터베이스 티어 생성
      • _2.5.5 Elastic Beanstalk을 사용해 처음 두 개의 티어 생성
      • _2.5.6 시스템에 컨테이너 배포
    • 2.6 신속한 보안 감사
    •  
  • ▣ 3장: 보안 계층 1 - 웹 애플리케이션 보호하기
    • 3.1 웹 앱의 보안과 테스트
    • 3.2 웹사이트 공격 및 콘텐츠 보안
      • _3.2.1 교차 사이트 스크립팅과 콘텐츠 보안 정책
      • _3.2.2 교차 사이트 요청 위조
      • _3.2.3 클릭재킹(Clickjacking) 및 IFrames 보호
    • 3.3 사용자 인증 방식
      • _3.3.1 HTTP 기본 인증
      • _3.3.2 암호 관리
      • _3.3.3 ID 제공자
      • _3.3.4 세션 및 쿠키 보안
      • _3.3.5 인증 테스트
    • 3.4 종속성 관리
      • _3.4.1 Golang 벤더링
      • _3.4.2 Node.js 패키지 관리
      • _3.4.3 파이썬 요구사항
    •  
  • ▣ 4장: 보안 계층 2 - 클라우드 인프라 보호하기
    • 4.1 클라우드 인프라 보안 및 테스트: deployer
      • _4.1.1 deployer 설정
      • _4.1.2 도커 허브와 deployer 간에 구성 알림
      • _4.1.3 인프라에 대한 테스트 실행
      • _4.1.4 invoicer 환경 업데이트
    • 4.2 네트워크 접근 제한
      • _4.2.1 보안 그룹 테스트
      • _4.2.2 보안 그룹 간의 접근 열기
    • 4.3 보안 진입 지점 구축
      • _4.3.1 SSH 키 생성
      • _4.3.2 EC2에 베스천 호스트 생성
      • _4.3.3 SSH로 이중 인증 활성화
      • _4.3.4 접근 시 알림 전송
      • _4.3.5 일반 보안 고려 사항
      • _4.3.6 보안 그룹 간의 접근 열기
    • 4.4 데이터베이스에 대한 접근 제어
      • _4.4.1 데이터베이스 구조 분석
      • _4.4.2 PostgreSQL에서의 역할과 권한
      • _4.4.3 invoicer 애플리케이션에 대한 세분된 권한 정의
      • _4.4.4 deployer에 있는 권한 표시
    •  
  • ▣ 5장: 보안 계층 3 - 통신 보안
    • 5.1 통신 보안이란 무엇을 의미하는가?
      • _5.1.1 초기 대칭 암호화
      • _5.1.2 Diffie-Hellman과 RSA
      • _5.1.3 공개키 인프라
      • _5.1.4 SSL과 TLS
    • 5.2 SSL/TLS 이해
      • _5.2.1 인증서 사슬(The certificate chain)
      • _5.2.2 TLS 핸드셰이크
      • _5.2.3 완전 순방향 비밀성
    • 5.3 HTTPS를 사용하는 애플리케이션 가져오기
      • _5.3.1 AWS에서 인증서 받기
      • _5.3.2 Let’s Encrypt에서 인증서 얻기
      • _5.3.3 AWS ELB에서 HTTPS 활성화
    • 5.4 HTTPS 현대화
      • _5.4.1 TLS 테스트
      • _5.4.2 모질라의 최신 지침 구현
      • _5.4.3 HSTS: Strict Transport Security
      • _5.4.4 HPKP: Public Key Pinning
    •  
  • ▣ 6장: 보안 계층 4 - 전달 파이프라인 보안
    • 6.1 코드 관리 인프라에 대한 접근 제어
      • _6.1.1 깃허브 조직(organization)에서 권한 관리
      • _6.1.2 깃허브와 CircleCI 간의 권한 관리
      • _6.1.3 깃으로 커밋과 태그에 서명하기
    • 6.2 컨테이너 저장소에 대한 접근 제어
      • _6.2.1 도커 허브와 CircleCI 간의 권한 관리
      • _6.2.2 도커 컨텐트 트러스트로 컨테이너에 서명하기
    • 6.3 인프라 관리를 위한 접근 제어
      • _6.3.1 AWS 역할 및 정책을 사용해 권한 관리
      • _6.3.2 운영 시스템에 기밀 정보 배포
    •  
  • [2부] 이상징후 발견과 공격으로부터의 서비스 보호
    •  
  • ▣ 7장: 로그 수집 및 저장하기
    • 7.1 시스템 및 애플리케이션에서의 로그 수집
      • _7.1.1 시스템으로부터 로그 수집하기
      • _7.1.2 애플리케이션 로그 수집하기
      • _7.1.3 인프라 로깅
      • _7.1.4 깃허브에서 로그 수집
    • 7.2 메시지 브로커로 로그 이벤트 스트리밍
    • 7.3 로그 소비자의 이벤트 처리
    • 7.4 로그 저장 및 보관
    • 7.5 로그에 접근하기
    •  
  • ▣ 8장: 부정행위와 공격에 대한 로그 분석
    • 8.1 로그 분석 계층의 아키텍처
    • 8.2 문자열 패턴을 사용해 공격 탐지
    • 8.3 부정행위 탐지를 위한 통계 모델
      • _8.3.1 슬라이딩 윈도와 원형 버퍼
      • _8.3.2 이동 평균(Moving Averages)
    • 8.4 지리 데이터를 사용해 악용 사례 찾기
      • _8.4.1 사용자 지오프로파일링(Geoprofiling)
      • _8.4.2 거리 계산하기
      • _8.4.3 사용자의 정상 연결 영역 구하기
    • 8.5 이상 징후 탐지를 위한 알려진 패턴들
      • _8.5.1 사용자 에이전트 시그니처
      • _8.5.2 비정상적인 브라우저
      • _8.5.3 상호작용 패턴
    • 8.6 운영자와 최종 사용자에게 경보 전달
      • _8.6.1 운영자에게 보안 이벤트 전달하기
      • _8.6.2 최종 사용자에게 언제 어떻게 통지해야 할까?
    •  
  • ▣ 9장: 침입 탐지
    • 9.1 침입의 7 단계: 킬 체인
    • 9.2 침해 지표란 무엇인가?
    • 9.3 엔드포인트에서 IOC 스캔
    • 9.4 Suricata를 이용한 네트워크 트래픽 검사.
      • _9.4.1 Suricata 설정하기
      • _9.4.2 네트워크 모니터링
      • _9.4.3 규칙 작성하기
      • _9.4.4 사전 정의된 규칙 세트 사용
    • 9.5 시스템 호출 감사 로그를 통한 침입 탐지
      • _9.5.1 실행 취약점
      • _9.5.2 부정행위 실행 포착
      • _9.5.3 파일 시스템 모니터링
      • _9.5.4 불가능한 것을 모니터링하기
    • 9.6 이상 징후를 감지하기 위해 사람 신뢰하기
    •  
  • ▣ 10장: 캐리비안 침해 사고: 침해 사고 대응 사례 연구
    • 10.1 캐리비안 침해 사고
    • 10.2 식별
    • 10.3 격리
    • 10.4 근절
      • _10.4.1 AWS에서 디지털 포렌식 아티팩트 수집
      • _10.4.2 아웃바운드 IDS 필터링
      • _10.4.3 MIG로 IOC 제거하기
    • 10.5 복구
    • 10.6 교훈 및 사고 대비의 이점
    •  
  • [3부] 데브옵스 보안을 성숙하게 만들기
    •  
  • ▣ 11장: 위험평가
    • 11.1 위험 관리란 무엇인가?
    • 11.2 CIA
      • _11.2.1 기밀성
      • _11.2.2 무결성
      • _11.2.3 가용성
    • 11.3 조직에 대한 주요 위협 요소 설정
    • 11.4 위험의 영향 평가
      • _11.4.1 재정
      • _11.4.2 평판
      • _11.4.3 생산성
    • 11.5 위협 식별 및 취약성 측정
      • _11.5.1 STRIDE 위협 모델링 프레임 워크
      • _11.5.2 DREAD 위협 모델링 프레임워크
    • 11.6 신속한 위험 평가
      • _11.6.1 정보 수집
      • _11.6.2 데이터 사전 설정
      • _11.6.3 위험 식별 및 측정
      • _11.6.4 권고안 작성하기
    • 11.7 위험 기록 및 추적
      • _11.7.1 위험 수락, 거부, 위임
      • _11.7.2 정기적으로 위험 재검토
    •  
  • ▣ 12장: 보안 테스트
    • 12.1 보안 가시성 유지
    • 12.2 내부 애플리케이션 및 서비스 감사
      • _12.2.1 웹 애플리케이션 스캐너
      • _12.2.2 퍼징(Fuzzing)
      • _12.2.3 정적 코드 분석
      • _12.2.4 클라우드 인프라 감사
    • 12.3 레드팀과 외부 침투 테스트
    • 12.4 버그 현상금 프로그램
    •  
  • ▣ 13장: 지속적인 보안
    • 13.1 연습과 반복: 10,000시간의 보안
    • 13.2 1년 차: 데브옵스에 보안 통합
      • _13.2.1 너무 일찍 판단하지 않기
      • _13.2.2 모든 것을 테스트하고 대시보드를 만든다
    • 13.3 2년 차: 최악의 상황에 대비
      • _13.3.1 인프라 중복 방지
      • _13.3.2 구축 vs. 구매
      • _13.3.3 침해당하기
    • 13.4 3년 차: 변화 추진
      • _13.4.1 보안 우선순위 재검토
      • _13.4.2 반복적으로 진행하기