Microservices Security in Action

마이크로서비스 아키텍처 보안 설계와 구현
$57.96
SKU
9791161755670
+ Wish
[Free shipping over $100]

Standard Shipping estimated by Fri 12/6 - Thu 12/12 (주문일로부 10-14 영업일)

Express Shipping estimated by Tue 12/3 - Thu 12/5 (주문일로부 7-9 영업일)

* 안내되는 배송 완료 예상일은 유통사/배송사의 상황에 따라 예고 없이 변동될 수 있습니다.
Publication Date 2021/09/29
Pages/Weight/Size 188*235*36mm
ISBN 9791161755670
Categories IT 모바일 > 네트워크/해킹/보안
Description
마이크로서비스 아키텍처에서 발생할 수 있는 다양한 보안 이슈를 살펴보고 예제 코드와 실습을 활용해 해당 이슈를 해결하는 데 필요한 지식을 전달한다. 책을 다 읽을 때쯤이면 마이크로서비스 보안을 이해하고 안전한 설계와 구현에 필요한 지식까지 습득할 수 있을 것이다.
Contents
1부. 개요

1장. 마이크로서비스 보안의 특징

1.1 모놀리식 애플리케이션의 보안 동작 원리

1.2 마이크로서비스 보안의 어려움
1.2.1 공격 노출 지점이 넓어질수록 공격받을 위험도 증가
1.2.2 보안 검증 지점 분리는 성능 저하를 초래
1.2.3 배포 복잡성으로 인한 마이크로서비스 간 초기 신뢰 설정 어려움
1.2.4 다양한 마이크로서비스 간 통신 추적의 어려움
1.2.5 컨테이너의 불변성으로 인한 자격증명과 접근 제어 정책 유지의 어려움
1.2.6 마이크로서비스의 분산된 특성으로 인한 사용자 컨텍스트 공유의 어려움
1.2.7 다중 개발 언어 지원 아키텍처는 개발 팀에 더 많은 보안 전문지식을 요구

1.3 핵심 보안 원칙
1.3.1 인증은 스푸핑으로부터 시스템을 보호
1.3.2 무결성 검증으로 데이터 변조에서 시스템을 보호
1.3.3 부인방지: 한 번의 서명으로 영구적으로 기록하자
1.3.4 기밀성은 의도하지 않은 정보 노출에서 시스템을 보호
1.3.5 가용성: 어떠한 상황에서도 시스템을 가동 중인 상태로 유지
1.3.6 인가: 권한 범위를 넘어선 행위 차단

1.4 외부 경계 보안
1.4.1 마이크로서비스 그룹에서 API 게이트웨이의 역할
1.4.2 경계 지점에서의 인증
1.4.3 경계 지점 인가 절차
1.4.4 클라이언트 애플리케이션/사용자 컨텍스트를 상위 마이크로서비스로 전달

1.5 서비스 간 통신 보안
1.5.1 서비스 간 인증
1.5.2 서비스 수준 인가
1.5.3 마이크로서비스 간 사용자 컨텍스트 전파
1.5.4 신뢰 경계 간 연결

요약

2장. 마이크로서비스 보안을 위한 첫 단계

2.1 첫 번째 마이크로서비스 제작
2.1.1 필요 소프트웨어 다운로드 및 설치
2.1.2 예제 코드 저장소 복사본 생성
2.1.3 주문 처리 마이크로서비스 컴파일
2.1.4 주문 처리 마이크로서비스 접근
2.1.5 소스 코드 디렉토리에는 어떤 것이 있는가?
2.1.6 마이크로서비스의 소스 코드 이해

2.2 OAuth 2.0 서버 준비
2.2.1 인가 서버와의 통신
2.2.2 OAuth 20 인가 서버 실행
2.2.3 OAuth 20 인가 서버에서 액세스 토큰 획득
2.2.4 액세스 토큰 응답 이해하기

2.3 OAuth 2.0을 사용한 마이크로서비스 보안
2.3.1 OAuth 20 기반 보안
2.3.2 예제 코드 실행

2.4 클라이언트 애플리케이션에서 보안이 적용된 마이크로서비스 호출

2.5 OAuth 2.0 권한 범위를 사용한 서비스 수준 인가 수행
2.5.1 인가 서버에서 범위가 지정된 액세스 토큰 획득
2.5.2 OAuth 20 범위를 사용한 마이크로서비스 접근 보호

요약

2부. 외부 경계 보안

3장. API 게이트웨이를 사용한 클라이언트와 내부 시스템 사이의 트래픽 보안

3.1 마이크로서비스 그룹에서 API 게이트웨이의 필요성
3.1.1 마이크로서비스에서 보안 영역 분리
3.1.2 소비를 더 어렵게 하는 마이크로서비스 그룹의 고유한 복잡성
3.1.3 외부에 노출하지 않는 게 바람직한 마이크로서비스의 특성

3.2 외부 경계 보안
3.2.1 마이크로서비스 소비자 환경 이해
3.2.2 접근 위임
3.2.3 API 보호를 위해 Basic 인증을 사용해선 안 되는 이유
3.2.4 API 보호를 위해 공통 전송 계층 보안을 사용해선 안 되는 이유
3.2.5 OAuth 20을 사용해야 하는 이유

3.3 Zuul API 게이트웨이 설치
3.3.1 주문 처리 마이크로서비스 컴파일 및 실행
3.3.2 Zuul 프록시 컴파일 및 실행
3.3.3 Zuul 게이트웨이에 OAuth 20 기반 보안 적용

3.4 Zuul과 마이크로서비스 간의 통신 보안
3.4.1 방화벽으로 접근 방지
3.4.2 mTLS를 사용한 API 게이트웨이와 마이크로서비스 간의 통신 보안

요약

4장. 단일 페이지 애플리케이션으로 보안을 강화한 마이크로서비스 접근

4.1 앵귤러를 사용해 단일 페이지 애플리케이션 실행
4.1.1 앵귤러 애플리케이션 빌드 및 실행
4.1.2 단일 페이지 애플리케이션의 동작원리 살펴보기

4.2 CORS 구축
4.2.1 동일 출처 정책 사용
4.2.2 CORS 사용
4.2.3 교차 출처 요청을 허용하는 출발지 검사
4.2.4 API 게이트웨이를 리소스 서버 프록시로 운영

4.3 OIDC를 사용한 단일 페이지 애플리케이션 보안
4.3.1 OIDC 로그인 흐름 이해
4.3.2 애플리케이션 코드 분석

4.4 연합 인증 사용
4.4.1 다수의 신뢰 도메인들
4.4.2 도메인 간의 신뢰 형성

요약

5장. 요청 제한, 모니터링 및 접근 제어 수행

5.1 Zuul을 사용해 API 게이트웨이로 보내지는 요청 관리
5.1.1 할당량 기반 애플리케이션 요청 제한
5.1.2 사용자를 위한 공평한 사용 정책
5.1.3 주문 처리 마이크로서비스에 할당량 기반 요청 제한 적용
5.1.4 마이크로서비스의 최대 처리 용량
5.1.5 운영 관점에서의 요청 제한
5.1.6 OAuth 20 토큰 및 인가 처리 지점을 향한 요청 제한
5.1.7 권한 기반 요청 제한

5.2 프로메테우스와 그라파나를 사용한 모니터링 및 분석
5.2.1 주문 처리 마이크로서비스 모니터링
5.2.2 프로메테우스 메트릭 모니터링의 동작원리

5.3 OPA를 사용해 API 게이트웨이에 접근 제어 정책 적용
5.3.1 도커 컨테이너로 OPA 실행
5.3.2 OPA 엔진에 데이터 제공
5.3.3 OPA 엔진에 접근 제어 정책 제공
5.3.4 OPA 정책 평가
5.3.5 OPA 사용 시 참고사항

요약

3부. 서비스 간 통신

6장. 인증서를 사용해 내부 시스템(서비스) 간의 트래픽 보호

6.1 mTLS를 사용하는 이유
6.1.1 인증기관을 이용해 클라이언트와 서버 간에 신뢰 구축
6.1.2 mTLS는 클라이언트와 서버가 서로를 식별하도록 지원
6.1.3 HTTPS는 TLS 기반으로 동작하는 HTTP 프로토콜

6.2 마이크로서비스 접근을 보호하기 위해 인증서 생성
6.2.1 인증기관 생성
6.2.2 주문 처리 마이크로서비스에서 사용할 키 생성
6.2.3 재고 마이크로서비스에서 사용할 키 생성
6.2.4 한 번의 스크립트 실행으로 필요한 모든 키 생성

6.3 TLS를 사용해 마이크로서비스 보호
6.3.1 TLS를 적용한 주문 처리 마이크로서비스 실행
6.3.2 TLS를 적용한 재고 마이크로서비스 실행
6.3.3 TLS를 사용해 2개의 마이크로서비스 간 통신 보호

6.4 매력적인 mTLS

6.5 키 관리의 어려움
6.5.1 키 프로비저닝과 부트스트래핑 신뢰
6.5.2 인증서 해지

6.6 키 순환

6.7 키 사용 모니터링

요약

7장 JWT를 사용한 내부 시스템(서비스) 간의 트래픽 보호

7.1 마이크로서비스 보호를 위한 JWT 사용 사례
7.1.1 공유 JWT를 사용해 마이크로서비스 간 사용자 컨텍스트 공유
7.1.2 서비스 간 상호작용을 위해 새로 발급한 JWT를 사용해 사용자 컨텍스트 공유
7.1.3 다른 신뢰 도메인에 속한 마이크로서비스와 사용자 컨텍스트 공유
7.1.4 자체발급 JWT
7.1.5 네스티드 JWT

7.2 JWT를 발급하는 STS 구축

7.3 JWT를 사용해 마이크로서비스 보호

7.4 접근 제어에 사용할 권한 범위 출처로 JWT 사용

7.5 JWT를 사용해 서비스 간 통신 보호

7.6 다른 aud 속성을 가진 새로운 JWT로 JWT 교환

요약

8장. gRPC를 사용한 내부 시스템(서비스) 간의 트래픽 보호

8.1 gRPC를 사용한 서비스 간 통신

8.2 mTLS를 사용해 서비스 간 gRPC 통신 보호

8.3 JWT를 사용해 서비스 간 gRPC 통신 보호

요약

9장. 반응형 마이크로서비스 보호

9.1 반응형 마이크로서비스를 사용하는 이유

9.2 카프카를 메시지 브로커로 구축

9.3 이벤트를 카프카 토픽에 푸시하는 마이크로서비스 개발

9.4 카프카 토픽에서 이벤트를 읽는 마이크로서비스 개발

9.5 TLS를 사용해 전송 데이터 보호
9.5.1 TLS 키와 카프카 인증서 생성 및 서명
9.5.2 카프카 서버에 TLS 설정
9.5.3 마이크로서비스에 TLS 설정

9.6 mTLS를 사용한 인증

9.7 접근 제어 목록을 사용해 카프카 토픽에 대한 접근 제어
9.7.1 카프카 접근 제어 목록 활성화 및 클라이언트 식별
9.7.2 카프카에서 접근 제어 목록 정의

9.8 NATS를 메시지 브로커로 설정

요약

4부. 안전한 배포

10장. 도커로 컨테이너 보안 정복

10.1 도커에서 STS 실행

10.2 도커 컨테이너에서 시크릿 관리
10.2.1 도커 이미지에 포함한 시크릿 외부화
10.2.2 환경 변수로 시크릿 전달
10.2.3 도커로 배포하는 운영 환경의 시크릿 관리 방안

10.3 도커 이미지 서명 및 검증을 위해 도커 컨텐트 트러스트 사용
10.3.1 TUF
10.3.2 도커 컨텐트 트러스트
10.3.3 키 생성
10.3.4 DCT로 서명
10.3.5 DCT로 서명 검증
10.3.6 DCT가 사용하는 키 유형
10.3.7 DCT가 클라이언트 애플리케이션을 리플레이 공격으로부터 보호하는 방법

10.4 주문 처리 마이크로서비스를 도커에서 실행

10.5 제한된 권한으로 컨테이너 실행
10.5.1 컨테이너를 root 외의 사용자로 실행
10.5.2 root 사용자의 권한 삭제

10.6 Docker Bench for Security 실행

10.7 도커 호스트에 대한 접근 보호
10.7.1 도커 데몬에 원격 접근 활성화
10.7.2 도커 API 접근을 보호하기 위해 엔진엑스 서버에서 mTLS 활성화

10.8 컨테이너 이상의 보안 고려

요약

11장 쿠버네티스상의 마이크로서비스 보안 367

11.1 쿠버네티스상에서 STS 실행
11.1.1 STS로 사용할 쿠버네티스 디플로이먼트를 YAML 형식으로 정의
11.1.2 쿠버네티스에서 STS 디플로이먼트 생성
11.1.3 디플로이먼트 트러블슈팅
11.1.4 쿠버네티스 클러스터 외부에 STS 노출

11.2 쿠버네티스 환경에서 시크릿 관리
11.2.1 컨피그맵을 사용한 쿠버네티스 설정 외부화
11.2.2 applicationproperties 파일을 위한 컨피그맵 정의
11.2.3 keystorejks와 jwtjks 파일을 위한 컨피그맵 정의
11.2.4 키 저장소 자격증명을 위한 컨피그맵 정의
11.2.5 kubectl 클라이언트로 컨피그맵 생성
11.2.6 쿠버네티스 디플로이먼트에서 컨피그맵 소비
11.2.7 초기화 컨테이너를 사용한 키 저장소 로딩

11.3 쿠버네티스 시크릿 사용
11.3.1 모든 컨테이너의 디폴트 토큰 시크릿
11.3.2 시크릿 사용을 위해 STS 업데이트
11.3.3 쿠버네티스가 시크릿을 저장하는 방법에 대한 이해

11.4 쿠버네티스에서 주문 처리 마이크로서비스 실행
11.4.1 주문 처리 마이크로서비스의 컨피그맵/시크릿 생성
11.4.2 주문 처리 마이크로서비스의 디플로이먼트 생성
11.4.3 주문 처리 마이크로서비스의 서비스 생성
11.4.4 종단 간 흐름 테스트

11.5 쿠버네티스에서 재고 마이크로서비스 실행

11.6 쿠버네티스 서비스 계정 사용
11.6.1 서비스 계정 생성 및 파드와 계정 연결
11.6.2 사용자 지정 서비스 계정으로 파드 실행 시 이점

11.7 쿠버네티스에서 역할 기반 접근 제어 사용
11.7.1 STS에서 쿠버네티스 API 서버와 통신
11.7.2 서비스 계정을 클러스터롤과 연결

요약

12장 이스티오 서비스 메시로 마이크로서비스 보호 413

12.1 쿠버네티스 디플로이먼트 설정
12.1.1 이스티오 자동삽입 활성화
12.1.2 기존 작업 정리
12.1.3 마이크로서비스 배포
12.1.4 주문 처리와 STS를 노드포트 서비스 유형으로 재배포
12.1.5 종단 간 흐름 테스트

12.2 이스티오 인그레스 게이트웨이에서 TLS 터미네이션 활성화
12.2.1 이스티오 인그레스 게이트웨이에 TLS 인증서 배포
12.2.2 가상 서비스 배포
12.2.3 PERMISSIVE 인증 정책 정의
12.2.4 종단 간 흐름 테스트

12.3 mTLS로 서비스 간 통신 보호

12.4 JWT로 서비스 간 통신 보호
12.4.1 JWT 인증 적용
12.4.2 JWT 인증으로 종단 간 흐름 테스트
12.4.3 PeerAuthentication과 RequestAuthentication
12.4.4 서비스 간 통신에서 JWT를 사용하는 방법
12.4.5 JWK 상세히 살펴보기

12.5 인가 적용
12.5.1 JWT 상세히 살펴보기
12.5.2 역할 기반 접근 제어 적용
12.5.3 역할 기반 접근 제어를 사용한 종단 간 흐름 테스트
12.5.4 이스티오 14.0 버전 이후 역할 기반 접근 제어 개선사항

12.6 이스티오에서 키 관리
12.6.1 볼륨 마운트를 통한 키 프로비저닝과 교체
12.6.2 볼륨 마운트를 통한 키 프로비저닝 및 키 교체 제한
12.6.3 SDS로 키 프로비저닝 및 교체

요약

5부. 안전한 개발

13장. 시큐어 코딩 관행 및 자동화

13.1 OWASP API 보안 TOP 10
13.1.1 취약한 객체 수준 인가
13.1.2 취약한 인증
13.1.3 과도한 데이터 노출
13.1.4 리소스 부족 및 속도 제한
13.1.5 취약한 함수 수준 인가
13.1.6 대량 할당
13.1.7 잘못된 보안 설정
13.1.8 인젝션
13.1.9 부적절한 자산 관리
13.1.10 불충분한 로깅 및 모니터링

13.2 정적 코드 분석 실행

13.3 젠킨스와 보안 점검 통합
13.3.1 젠킨스 설정 및 실행
13.3.2 젠킨스로 빌드 파이프라인 설정

13.4 OWASP ZAP으로 동적 분석 실행
13.4.1 패시브 스캐닝과 액티브 스캐닝 비교
13.4.2 ZAP으로 모의해킹 수행

요약

부록 A. OAuth 2.0과 OIDC
부록 B. JWT
부록 C. 단일 페이지 애플리케이션 아키텍처
부록 D. 마이크로서비스 환경의 모니터링 가능성
부록 E. 도커의 원리
부록 F. OPA
부록 G. OpenSSL을 사용한 인증기관 및 관련 키 생성
부록 H. SPIFFE
부록 I. gRPC 원리
부록 J. 쿠버네티스의 원리
부록 K. 서비스 메시와 이스티오의 원리
Author
프라바스 시리와데나,누완 디아스,박상영
신원 전도사, 저자, 블로거, WSO2에서 신원 관리 및 보안 부사장이다. 이 선정한 100/500 기업을 포함해 글로벌 기업을 위한 중요한 신원 및 액세스 관리(IAM) 인프라를 설계하고 구축하는 데 12년 이상의 업계 경험이 있다. 기술 전도사로서 7권의 책을 썼다. 블록체인, PSD2, GDPR, IAM부터 마이크로서비스 보안에 이르기까지 다양한 주제로 블로그 글을 작성한다. 또한 유튜브(YouTube) 채널을 운영한다. RSA 콘퍼런스, KNOW Identity, Identiverse, European Identity Conference, Consumer Identity World USA, API World, API Strategy and Practice Conference, QCon, OSCON, WSO2Con을 비롯한 많은 콘퍼런스에서 발표했다. IAM 커뮤니티를 전파하려고 전 세계를 여행하며 워크숍과 밋업을 진행하고 있다. 샌프란시스코 베이 지역에서 가장 큰 IAM 밋업인 ‘Silicon Valley IAM User Group’의 창립자다.
신원 전도사, 저자, 블로거, WSO2에서 신원 관리 및 보안 부사장이다. <Fortune>이 선정한 100/500 기업을 포함해 글로벌 기업을 위한 중요한 신원 및 액세스 관리(IAM) 인프라를 설계하고 구축하는 데 12년 이상의 업계 경험이 있다. 기술 전도사로서 7권의 책을 썼다. 블록체인, PSD2, GDPR, IAM부터 마이크로서비스 보안에 이르기까지 다양한 주제로 블로그 글을 작성한다. 또한 유튜브(YouTube) 채널을 운영한다. RSA 콘퍼런스, KNOW Identity, Identiverse, European Identity Conference, Consumer Identity World USA, API World, API Strategy and Practice Conference, QCon, OSCON, WSO2Con을 비롯한 많은 콘퍼런스에서 발표했다. IAM 커뮤니티를 전파하려고 전 세계를 여행하며 워크숍과 밋업을 진행하고 있다. 샌프란시스코 베이 지역에서 가장 큰 IAM 밋업인 ‘Silicon Valley IAM User Group’의 창립자다.