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 소스 코드 디렉토리에는 어떤
◈ 이 책의 대상 독자 ◈
마이크로서비스 설계 원칙에 정통하고 자바에 대한 기본 지식이 있는 개발자를 위한 책이다. 자바 개발자가 아니더라도 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 프로토콜 기반 마이크로서비스 간 통신을 보호