저자

닐매든

저자:닐매든
포지록의보안책임자로응용암호화,애플리케이션보안,최신API보안기술에대한심층적인지식을보유하고있다.20년동안프로그래머로일했으며컴퓨터과학박사학위를취득했다.

역자:허용건
컴퓨터공학을전공하고보안분야에입문하게됐으며,여러IT보안분야를거쳐현재는클라우드보안분야에몸담고있다.안전한IT환경을만들어야한다는사명감을갖고모든분야의보안을책임질수있도록하루하루정진하고있다.

목차


1부.기초
1장.API보안의정의
1.1비유:운전면허시험응시
1.2API정의
1.2.1API방식
1.3상황상의API보안
1.3.1일반적인API배포
1.4API보안요소
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.1NatterAPI
2.1.1NatterAPI개요
2.1.2구현개요
2.1.3프로젝트준비
2.1.4데이터베이스초기화
2.2RESTAPI개발
2.2.1신규공간생성
2.3REST엔드포인트연결
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장.NatterAPI보안
3.1보안통제를통한위협해결
3.2가용성을위한속도제한
3.2.1구아바로속도제한
3.3위조방지를위한인증
3.3.1HTTPBasic인증
3.3.2스크립트로안전한비밀번호저장
3.3.3
3.3.4NatterAPI에사용자등록
3.3.5사용자인증
3.4암호화를통한데이터비공개유지
3.4.1HTTPS활성화
3.4.2엄격한전송보안
3.5책임추적성을위한감사로깅
3.6접근통제
3.6.1인증적용
3.6.2접근통제목록
3.6.3Natter에서접근통제적용
3.6.4Natter공간에신규멤버추가
3.6.5권한상승공격방지
연습문제정답
요약


2부.토큰기반인증

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

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

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


3부.권한

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

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

9장.기능기반보안및마카롱
9.1기능기반보안
9.2기능및REST
9.2.1URI로서의기능
9.2.2NatterAPI에서기능URI사용
9.2.3HATEOAS
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.3NatterAPI를도커컨테이너로빌드
10.2.4링크미리보기마이크로서비스
10.2.5신규마이크로서비스배포
10.2.6링크미리보기마이크로서비스호출
10.2.7SSRF공격방지
10.2.8DNS리바인딩공격
10.3마이크로서비스통신보안
10.3.1TLS로통신보안
10.3.2TLS에서비스메시사용
10.3.3네트워크연결잠금
10.4들어오는요청보안
연습문제정답
요약


11장.서비스간API보안
11.1API키및JWT베어러인증
11.2OAuth2클라이언트자격증명부여
11.2.1서비스계정
11.3OAuth2에JWT베어러부여
11.3.1클라이언트인증
11.3.2JWT생성
11.3.3서비스계정인증
11.4상호TLS인증
11.4.1TLS인증서인증작동방식
11.4.2클라이언트인증서인증
11.4.3클라이언트신원유효성검증
11.4.4서비스메시사용
11.4.5OAuth2를통한상호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.2OAuth2토큰교환
연습문제정답
요약


5부.IoT용API

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


13장.IoTAPI보안
13.1장치인증
13.1.1장치식별
13.1.2장치인증서
13.1.3전송계층에서인증
13.2종단간인증
13.2.1OSCORE
13.2.2RESTAPI에서재생방지
13.3제한된환경을위한OAuth2
13.3.1장치권한부여
13.3.2ACE-OAuth
13.4오프라인접근통제
13.4.1오프라인사용자인증
13.4.2오프라인권한
연습문제정답
요약
부록A.자바및메이븐설정
부록B.쿠버네티스설정

출판사 서평

#이책의대상독자#

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

#이책의구성#

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