장바구니 담기 close

장바구니에 상품을 담았습니다.

Microservices Security in Action

Microservices Security in Action

  • 프라바스시리와데나 ,누완디아스
  • |
  • 에이콘출판
  • |
  • 2021-09-29 출간
  • |
  • 788페이지
  • |
  • 188 X 235 X 36 mm
  • |
  • ISBN 9791161755670
판매가

48,000원

즉시할인가

43,200

배송비

무료배송

(제주/도서산간 배송 추가비용:3,000원)

수량
+ -
총주문금액
43,200

※ 스프링제본 상품은 반품/교환/환불이 불가능하므로 신중하게 선택하여 주시기 바랍니다.

출판사서평




◈ 이 책에서 다루는 내용 ◈

◆ 마이크로서비스 보안 개념
◆ API 게이트웨이로 경계 지점 보호
◆ 도커, 쿠버네티스, 이스티오 사용과 배포
◆ 코드 수준의 보안 점검
◆ HTTP, gRPC, 카프카 통신


◈ 이 책의 대상 독자 ◈

마이크로서비스 설계 원칙에 정통하고 자바에 대한 기본 지식이 있는 개발자를 위한 책이다. 자바 개발자가 아니더라도 C++나 C# 같은 객체지향 프로그래밍 언어에 익숙하고 기본적인 프로그래밍 구조를 이해하고 있다면 이 책에서 많은 것을 얻을 수 있다. 온라인상에 일부 관련 문서와 블로그 게시물이 존재하지만 이 책은 모든 걸 명확하고 따르기 쉬운 형식으로 모아뒀기 때문에 마이크로서비스 보안을 이해하려는 모든 사람에게 도움을 줄 수 있다.


◈ 이 책의 구성 ◈

이 책은 5부 13장으로 구성돼 있다. 1부는 마이크로서비스 보안의 기본사항을 설명한다.
◆ 1장은 마이크로서비스 보안이 어려운 이유와 마이크로서비스 환경을 보호하기 위한 핵심 원칙을 설명한다.
◆ 2장은 스프링 부트로 첫 번째 마이크로서비스를 빌드하고 OAuth 2.0으로 보호하는 방법을 설명하며 OAuth 2.0 토큰 발급자를 설정하는 방법까지 다룬다.

2부는 일반적인 마이크로서비스 환경의 경계 지점이나 진입점에서 마이크로서비스를 보호하는 방법을 설명한다.
◆ 3장은 마이크로서비스 소비자 환경을 살펴보고 Zuul API 게이트웨이 뒷단의 스프링 부트 마이크로서비스를 배포하는 방법을 설명하며 Zuul API 게이트웨이에 OAuth 2.0 기반 보안을 적용하는 방법까지 다룬다.
◆ 4장은 앵귤러(Angular)로 단일 페이지 애플리케이션(SPA)를 개발하는 방법을 설명하며 OIDC(OpenID Connect)로 단일 페이지 애플리케이션을 보호하는 방법까지 다룬다.
◆ 5장은 Zuul API 게이트웨이에 트래픽 제한, 모니터링 및 접근 제어를 적용해 4장에서 구축한 사례를 확장하는 방법을 설명한다.

3부는 클라이언트 애플리케이션의 요청이 경계 지점의 보안 정책을 통과해 마이크로서비스 그룹 내부로 들어간 다음 마이크로서비스 간의 상호작용을 보호하는 프로세스를 설명한다.
◆ 6장은 mTLS(상호 TLS)로 HTTP 프로토콜 기반 마이크로서비스 간 통신을 보호하는 방법을 설명한다.
◆ 7장은 JWT(JSON Web Token)를 사용해 마이크로서비스 간 컨텍스트 데이터(예: 최종 사용자 컨텍스트)를 공유하는 방법을 설명한다.
◆ 8장은 mTLS와 JWT를 사용하는 gRPC 프레임워크 기반 마이크로서비스 간 통신을 보호하는 방법을 설명한다.
◆ 9장은 반응형 마이크로서비스를 보호하는 방법을 설명하며 카프카를 메시지 브로커로 설치하는 방법과 카프카 토픽에 접근 제어 정책을 적용하는 방법까지 다룬다.

4부는 컨테이너화한 환경에서 마이크로서비스를 배포하고 보호하는 방법을 설명한다.
◆ 10장은 도커에 마이크로서비스를 배포하고 mTLS와 JWT로 마이크로서비스 간 상호작용을 보호하는 방법을 설명하며 도커가 내장하고 있는 몇 가지 보안 기능을 다룬다.
◆ 11장은 쿠버네티스에서 도커 컨테이너로 마이크로서비스를 배포하고 mTLS와 JWT로 서비스 간 통신을 보호하는 방법을 설명한다.
◆ 12장은 이스티오 서비스 메시로 마이크로서비스의 보안 처리 부담을 전가하는 방법을 설명한다.
5부는 개발 프로세스에서 보안 점검을 수행하는 방법을 설명한다.
◆ 13장은 소나큐브, 젠킨스 및 OWASP ZAP으로 마이크로서비스를 대상으로 한 보안 점검을 자동화하는 방법을 설명한다.


목차


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. 서비스 메시와 이스티오의 원리

교환 및 환불안내

도서교환 및 환불
  • ㆍ배송기간은 평일 기준 1~3일 정도 소요됩니다.(스프링 분철은 1일 정도 시간이 더 소요됩니다.)
  • ㆍ상품불량 및 오배송등의 이유로 반품하실 경우, 반품배송비는 무료입니다.
  • ㆍ고객님의 변심에 의한 반품,환불,교환시 택배비는 본인 부담입니다.
  • ㆍ상담원과의 상담없이 교환 및 반품으로 반송된 물품은 책임지지 않습니다.
  • ㆍ이미 발송된 상품의 취소 및 반품, 교환요청시 배송비가 발생할 수 있습니다.
  • ㆍ반품신청시 반송된 상품의 수령후 환불처리됩니다.(카드사 사정에 따라 카드취소는 시일이 3~5일이 소요될 수 있습니다.)
  • ㆍ주문하신 상품의 반품,교환은 상품수령일로 부터 7일이내에 신청하실 수 있습니다.
  • ㆍ상품이 훼손된 경우 반품 및 교환,환불이 불가능합니다.
  • ㆍ반품/교환시 고객님 귀책사유로 인해 수거가 지연될 경우에는 반품이 제한될 수 있습니다.
  • ㆍ스프링제본 상품은 교환 및 환불이 불가능 합니다.
  • ㆍ군부대(사서함) 및 해외배송은 불가능합니다.
  • ㆍ오후 3시 이후 상담원과 통화되지 않은 취소건에 대해서는 고객 반품비용이 발생할 수 있습니다.
반품안내
  • 마이페이지 > 나의상담 > 1 : 1 문의하기 게시판 또는 고객센터 1800-7327
교환/반품주소
  • 경기도 파주시 문발로 211 1층 / (주)북채널 / 전화 : 1800-7327
  • 택배안내 : CJ대한통운(1588-1255)
  • 고객님 변심으로 인한 교환 또는 반품시 왕복 배송비 5,000원을 부담하셔야 하며, 제품 불량 또는 오 배송시에는 전액을 당사에서부담 합니다.