장바구니 담기 close

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

API 보안 인 액션

API 보안 인 액션

  • 닐 매든
  • |
  • 에이콘출판
  • |
  • 2024-03-29 출간
  • |
  • 716페이지
  • |
  • 188 X 235 X 33mm
  • |
  • ISBN 9791161758299
판매가

45,000원

즉시할인가

40,500

배송비

무료배송

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

수량
+ -
총주문금액
40,500

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

출판사서평

# 추천의 글 #

“보안 서비스 설계 및 구현에 대한 포괄적인 가이드이다. 보안을 관리하는 모든 API 실무자가 반드시 읽어야 할 책이다.”
─ 길베르트토 타카리(Gilberto Taccari), 펜타(Penta)

“API 보안에 대한 심층적인 이해를 원하는 사람은 이 책을 읽어야 한다.”
─ 바비 린(Bobby Lin), DBS 은행

"API를 개발하는 사람들에게 이 책을 강력히 추천한다."
─ 호르헤 보(Jorge Bo), 나란자 X(Naranja X)

"내가 읽은 API 보안에 대한 가장 포괄적인 가이드이다."
─ 마크 롤로(Marc Roulleau), 지로(GIRO)

# 이 책의 대상 독자 #

다양한 환경에서 API를 보호하는 데 필요한 기술을 안내하기 위해 쓴 책이다. 기본 보안 코딩 기술을 다루는 것을 시작으로 인증 및 권한에 대한 기술을 심도 있게 살펴본다. 그 과정에서 속도 제한 및 암호화와 같은 기술을 사용해 공격으로부터 API를 강화할 수 있는 방법을 알게 될 것이다.
웹 API 구축 경험이 있고 API 보안 기술 및 모범 사례에 대한 지식을 향상시키려는 개발자를 위해 이 책을 썼다. 독자는 RESTful이나 다른 원격 API를 구축하는 데 익숙해야 하며, 편집기나 통합 개발 환경(IDE, Integrated Development Environment)과 같은 프로그래밍 언어와 도구를 사용할 수 있어야 한다. 하지만 보안 코딩이나 암호화에 대한 사전 경험은 없다고 가정할 것이다. 이 책은 최신 API 보안의 적용 방식을 빠르게 알고 싶어하는 기술 설계자(technical architect)에게도 유용하게 사용될 것이다.

# 이 책의 구성 #

이 책은 총 5부, 13장으로 구성돼 있다.
1부에서는 API 보안의 기본 사항을 설명하고, 책의 나머지 부분을 위한 보안의 기초적인 내용으로 구성한다.
1장에서는 API 보안에 대한 주제와 API 보안의 구성 요소를 정의하는 방법에 대해 소개하고, API 보안과 관련된 기본 메커니즘과 API의 위협 및 취약성을 어떻게 고려할 것인지에 대해 알아본다.
2장에서는 보안 개발과 관련된 기본 원칙과 이러한 원칙이 API 보안에 적용되는 방법에 대해 설명하고, 표준 코딩 방식을 사용해 일반적인 소프트웨어 보안 결함을 방지하는 방법에 대해 알아본다. 또한 API를 위해 책 전체에 걸쳐 코드 샘플의 기초가 되는 Natter라는 예제 애플리케이션을 소개한다.
3장에서는 이 책의 나머지 부분의 모든 기본 보안 메커니즘 개발에 대해 살펴보며, 기본 인증(authentication), 속도 제한(rate-limiting), 감사 로깅(audit logging), 접근 통제(access control) 메커니즘을 Natter API에 추가하는 방법에 대해 알아본다.
2부에서는 RESTful API에 대한 인증 메커니즘을 자세히 살펴본다. 인증은 다른 모든 보안 통제의 기반이기 되기 때문에 확실하게 구축되도록 시간을 투자해야 한다.
4장에서는 전통적인 세션 쿠키(session cookie) 인증에 대해 다루고 최신 웹 API를 사용하기 위해 이를 업데이트해서 기존 웹 애플리케이션의 기술을 적용하는 방법을 보여준다. 또한 최신 웹 API 사용을 위해 SameSite 쿠키 설정과 같은 새로운 개발에 대해서도 다루게 될 것이다.
5장에서는 전달자 토큰(bearer token)과 표준 권한 헤더를 포함한 토큰 기반 인증에 대한 대체 접근 방식을 살펴본다. 또한 로컬 저장소를 사용해 웹 브라우저에 토큰을 저장하고 백엔드(backend)에서 데이터베이스 토큰 저장소를 강화하는 내용도 다룬다.
6장에서는 JSON 웹 토큰(JSON Web Token)과 같은 자체 포함 토큰 형식과 대체 토큰 형식에 대해 설명한다.
3부에서는 권한에 대한 접근 방식과 누가 무엇을 할 수 있는지 결정하는 것에 대해 살펴본다.
7장에서는 토큰 기반 인증(token-based authentication)에 대한 표준 접근 방식이자 권한 위임에 대한 접근 방식인 OAuth2에 대해 설명한다.
8장에서는 사용자의 신원을 통해서 수행할 수 있는 행위를 결정하는 신원 기반(identity-based) 접근 통제 기술을 자세히 살펴보며, 접근 통제 목록(access control list), 역할 기반(role-based) 접근 통제 및 속성 기반(attribute-based) 접근 통제에 대해 다룬다.
9장에서는 세분화된 키를 기반으로 하는 신원 기반 방식을 대체하는 기능 기반(capability-based) 접근 통제에 대해 살펴보며, 접근 통제에 대한 흥미롭고 새로운 접근이 가능한 토큰 형식인 마카롱(macaroon)에 대해 다룬다.
4부에서는 쿠버네티스 환경에서 실행되는 마이크로서비스 API 보안에 대해 자세히 설명한다.
10장에서는 쿠버네티스에 API를 배포하는 방법과 개발자 관점에서 보안을 위한 모범 사례를 자세히 소개한다.
11장에서는 서비스 간(service-to-service) API 호출 시 인증에 대한 접근 방식과 서비스 계정 자격 증명 및 기타 비밀 정보를 안전하게 저장하는 방법에 대해 설명한다.
5부에서는 사물 인터넷(IoT, Internet of Things)에서의 API에 대해 살펴본다.
12장에서는 사물 인터넷 환경에서 클라이언트와 서비스 간의 통신을 보호하는 방법에 대해 설명한다. API 요청이 여러 전송 프로토콜(transport protocol)을 통해 이동해야 할 때 단대단(end-to-end) 보안을 보장하는 방법에 대해 배울 것이다.
13장에서는 사물 인터넷 환경에서 API 요청을 승인하는 방식에 대해 자세히 설명하며, 온라인 서비스에서 장치의 연결이 끊겼을 때 오프라인 인증 및 접근 통제에 대해서도 살펴본다.

# 옮긴이의 말 #

바야흐로 IT 서비스의 대혁신기라고 해도 과언은 아닌 것 같다. 마이크로서비스, 클라우드, 컨테이너, 사물 인터넷의 등장으로 인해 IT 환경은 급격히 변화하고 있으며, 이러한 변화의 핵심에는 API가 있다. 이제는 모든 것을 혼자 담당하지 않는다. 일부만 담당하고 나머지는 API를 통해서 연결하기만 하는 편안한 세상이 온 것이다.
이러한 환경에서 보안도 변화해야 한다. 특히 각 서비스를 연결하는 API 보안은 무엇보다도 중요하며, API의 보안 취약점으로 인해 중요 정보가 노출되는 보안 사고가 발생할 수 있다.
이 책은 API가 무엇인지부터 시작해서 실제적으로 API 보안을 적용하기 위한 방법까지 제시하고 있다. API 개념과 개발 보안, 토큰 기반 인증과 권한, 쿠버네티스 환경에서의 마이크로서비스와 사물인터넷 환경에서 API까지 전반적인 API 보안에 대한 영역을 다루고 있다. 보안 코딩 기술을 시작으로 인증 및 권한에 대한 기술을 심도 있게 다루고 있으며, 속도 제한, 암호화와 같은 기술을 통해 공격으로부터 API를 보호할 수 있는 방법을 제공한다.
특히나 단순히 개념 위주의 설명이 아닌 이해를 돕기 위한 예시나 실제 적용 가능한 다양한 프로그램 소스까지 제공하고 있어 독자에게 많은 도움을 주기 위한 흔적이 엿보인다.
저자는 API 보안에 대한 내용 이외에도 보안에 대한 기초적이고, 전반적인 영역을 다루고 있으며, 자신만의 다양한 철학을 담아서 책을 집필했다. IT 보안 분야는 빠르게 변화하고 있다. 하지만 시대와 상관없이 처음 API를 접하는 학생부터 API 개발자, 전문적으로 보안을 다루는 담당자까지 다양한 사람에게 이 책이 도움을 줄 수 있을 것이라 확신한다.

목차

1부. 기초

1장. API 보안의 정의
1.1 비유: 운전면허 시험 응시
1.2 API 정의
1.2.1 API 방식
1.3 상황상의 API 보안.
1.3.1 일반적인 API 배포
1.4 API 보안 요소.
1.4.1 자산
1.4.2 보안 목표
1.4.3 환경 및 위협 모델
1.5 보안 메커니즘.
1.5.1 암호화
1.5.2 식별 및 인증
1.5.3 접근 통제 및 권한
1.5.4 감사 로깅
1.5.5 속도 제한
연습 문제 정답
요약

2장. 보안 API 개발
2.1 Natter API
2.1.1 Natter API 개요
2.1.2 구현 개요
2.1.3 프로젝트 준비
2.1.4 데이터베이스 초기화
2.2 REST API 개발
2.2.1 신규 공간 생성
2.3 REST 엔드포인트 연결
2.3.1 사용
2.4 주입 공격.
2.4.1 주입 공격 방지
2.4.2 권한을 통한 SQL 주입 완화
2.5 입력 유효성 검증
2.6 안전한 출력 생성
2.6.1 크로스 사이트 스크립팅 공격 악용
2.6.2 크로스 사이트 스크립팅 방지
2.6.3 보안 기능 구현
연습 문제 정답
요약

3장. Natter API 보안
3.1 보안 통제를 통한 위협 해결
3.2 가용성을 위한 속도 제한
3.2.1 구아바로 속도 제한
3.3 위조 방지를 위한 인증
3.3.1 HTTP Basic 인증
3.3.2 스크립트로 안전한 비밀번호 저장
3.3.3 비밀번호 데이터베이스 생성
3.3.4 Natter API에 사용자 등록
3.3.5 사용자 인증
3.4 암호화를 통한 데이터 비공개 유지
3.4.1 HTTPS 활성화
3.4.2 엄격한 전송 보안
3.5 책임 추적성을 위한 감사 로깅
3.6 접근 통제
3.6.1 인증 적용
3.6.2 접근 통제 목록
3.6.3 Natter에서 접근 통제 적용
3.6.4 Natter 공간에 신규 멤버 추가
3.6.5 권한 상승 공격 방지
연습 문제 정답
요약


2부. 토큰 기반 인증

4장. 세션 쿠키 인증
4.1 웹 브라우저에서 인증
4.1.1 자바스크립트에서 Natter API 호출
4.1.2 양식 제출 가로채기
4.1.3 동일한 출처에서 HTML 제공
4.1.4 HTTP 인증의 문제점
4.2 토큰 기반 인증
4.2.1 토큰 저장소 추상화
4.2.2 토큰 기반 로그인 구현
4.3 세션 쿠키
4.3.1 세션 고정 공격 방지
4.3.2 쿠키 보안 속성
4.3.3 세션 쿠키 유효성 검증
4.4 사이트 간 요청 위조 공격 방지
4.4.1 SameSite 쿠키
4.4.2 해시 기반 이중 제출 쿠키
4.4.3 Natter API용 이중 제출 쿠키
4.5 Natter 로그인 UI 구축
4.5.1 자바스크립트에서 로그인 API 호출
4.6 로그아웃 구현
연습 문제 정답
요약

5장. 최신 토큰 기반 인증
5.1 CORS를 통한 도메인 간 요청 허용
5.1.1 사전 요청
5.1.2 CORS 헤더
5.1.3 Natter API에 CORS 헤더 추가
5.2 쿠키를 사용하지 않는 토큰
5.2.1 데이터베이스에 토큰 상태 저장
5.2.2 베어러 인증 스키마
5.2.3 만료된 토큰 삭제
5.2.4 웹 저장소에 토큰 저장
5.2.5 CORS 필터 업데이트
5.2.6 웹 저장소에 대한 크로스 사이트 스크립팅 공격
5.3 데이터베이스 토큰 저장소 강화
5.3.1 데이터베이스 토큰 해싱
5.3.2 HMAC으로 토큰 인증하기
5.3.3 민감한 속성 보호
연습 문제 정답
요약

6장. 자체 포함 토큰 및 JSON 웹 토큰
6.1 클라이언트에 토큰 상태 저장
6.1.1 HMAC를 통한 JSON 토큰 보호
6.2 JSON 웹 토큰
6.2.1 표준 JWT 클레임
6.2.2 JOSE 헤더
6.2.3 표준 JWT 생성
6.2.4 서명된 JWT 유효성 검증
6.3 민감한 속성 암호화
6.3.1 인증된 암호화
6.3.2 NaCl로 인증된 암호화
6.3.3 암호화된 JWT
6.3.4 JWT 라이브러리 사용
6.4 안전한 API 설계를 위한 유형 사용
6.5 토큰 폐기 처리
6.5.1 하이브리드 토큰 구현
연습 문제 정답
요약


3부. 권한

7장. OAuth2 및 OpenID 연결
7.1 범위 토큰
7.1.1 Natter에 범위 토큰 추가
7.1.2 범위와 허가의 차이
7.2 OAuth2 소개
7.2.1 클라이언트 유형
7.2.2 권한 부여
7.2.3 OAuth2 엔드포인트 검출
7.3. 권한 코드 부여
7.3.1 다른 유형의 클라이언트에 대한 URI 리다이렉트
7.3.2 증명 키 코드 교환으로 코드 교환 강화
7.3.3 새로 고침 토큰
7.4 접근 토큰 유효성 검증
7.4.1 토큰 자체 검사
7.4.2 HTTPS 클라이언트 구성 보안
7.4.3 토큰 폐기
7.4.4 JWT 접근 토큰
7.4.5 암호화된 JWT 접근 토큰
7.4.6 권한 서버의 토큰 복호화 허용
7.5 통합 인증.
7.6 OpenID 연결.
7.6.1 ID 토큰
7.6.2 OIDC 강화
7.6.3 API에 ID 토큰 전달
연습 문제 정답
요약

8장. 신원 기반 접근 통제
8.1 사용자 및 그룹
8.1.1 LDAP 그룹
8.2 역할 기반 접근 통제
8.2.1 허가에 역할 매핑
8.2.2 고정 역할
8.2.3 사용자 역할 결정
8.2.4 동적 역할
8.3 속성 기반 접근 통제
8.3.1 결정 결합
8.3.2 ABAC 결정 구현
8.3.3 정책 에이전트 및 API 게이트웨이
8.3.4 분산 정책 시행 및 XACML
8.3.5 ABAC의 모범 사례
연습 문제 정답
요약

9장. 기능 기반 보안 및 마카롱
9.1 기능 기반 보안
9.2 기능 및 REST
9.2.1 URI로서의 기능
9.2.2 Natter API에서 기능 URI 사용
9.2.3 HATEOAS
9.2.4 브라우저 기반 클라이언트의 기능 URI
9.2.5 기능과 신원 결합
9.2.6 기능 URI 강화
9.3 마카롱: 주의 사항이 있는 토큰.
9.3.1 상황별 주의 사항
9.3.2 마카롱 토큰 저장소
9.3.3 자사 주의 사항
9.3.4 타사 주의 사항
연습 문제 정답
요약


4부. 쿠버네티스의 마이크로서비스 API

10장. 쿠버네티스의 마이크로서비스 API
10.1 쿠버네티스의 마이크로서비스 API
10.2 쿠버네티스에 Natter 배포
10.2.1 도커 컨테이너로 H2 데이터베이스 빌드
10.2.2 쿠버네티스에 데이터베이스 배포
10.2.3 Natter API를 도커 컨테이너로 빌드
10.2.4 링크 미리보기 마이크로서비스
10.2.5 신규 마이크로서비스 배포
10.2.6 링크 미리보기 마이크로서비스 호출
10.2.7 SSRF 공격 방지
10.2.8 DNS 리바인딩 공격
10.3 마이크로서비스 통신 보안
10.3.1 TLS로 통신 보안
10.3.2 TLS에 서비스 메시 사용
10.3.3 네트워크 연결 잠금
10.4 들어오는 요청 보안
연습 문제 정답
요약

11장. 서비스 간 API 보안
11.1 API 키 및 JWT 베어러 인증
11.2 OAuth2 클라이언트 자격 증명 부여
11.2.1 서비스 계정
11.3 OAuth2에 JWT 베어러 부여
11.3.1 클라이언트 인증
11.3.2 JWT 생성
11.3.3 서비스 계정 인증
11.4 상호 TLS 인증
11.4.1 TLS 인증서 인증 작동 방식
11.4.2 클라이언트 인증서 인증
11.4.3 클라이언트 신원 유효성 검증
11.4.4 서비스 메시 사용
11.4.5 OAuth2를 통한 상호 TLS
11.4.6 인증서 바인딩 접근 토큰
11.5 서비스 자격 증명 관리
11.5.1 쿠버네티스 비밀
11.5.2 키 및 비밀 관리 서비스
11.5.3 디스크에 수명이 긴 비밀 방지
11.5.4 키 파생
11.6 사용자 요청에 대한 서비스 API 호출
11.6.1 팬텀 토큰 양식
11.6.2 OAuth2 토큰 교환
연습 문제 정답
요약


5부. IoT용 API
12장. IoT 통신 보안
12.1 전송 계층 보안
12.1.1 데이터그램 TLS
12.1.2 제한된 장치를 위한 암호 제품군
12.2 사전 공유 키
12.2.1 PSK 서버 구현
12.2.2 PSK 클라이언트
12.2.3 원시 PSK 암호 제품군 지원
12.2.4 순방향 비밀성을 가진 PSK
12.3 종단 간 보안
12.3.1 COSE
12.3.2 COSE의 대체 방안
12.3.3 오용 방지 인증 암호화
12.4 키 배포 및 관리
12.4.1 일회성 키 프로비저닝
12.4.2 키 분배 서버
12.4.3 전방 비밀 유지에 대한 래칫
12.4.4 침해 후 보안
연습 문제 정답
요약

13장. IoT API 보안
13.1 장치 인증
13.1.1 장치 식별
13.1.2 장치 인증서
13.1.3 전송 계층에서 인증
13.2 종단 간 인증
13.2.1 OSCORE
13.2.2 REST API에서 재생 방지
13.3 제한된 환경을 위한 OAuth2
13.3.1 장치 권한 부여
13.3.2 ACE-OAuth
13.4 오프라인 접근 통제
13.4.1 오프라인 사용자 인증
13.4.2 오프라인 권한
연습 문제 정답
요약

교환 및 환불안내

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