# 추천의 글 #
“보안 서비스 설계 및 구현에 대한 포괄적인 가이드이다. 보안을 관리하는 모든 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 개발자, 전문적으로 보안을 다루는 담당자까지 다양한 사람에게 이 책이 도움을 줄 수 있을 것이라 확신한다.