Top

RESTful 자바 웹 서비스 보안 [레스트풀 자바 애플리케이션의 보안 취약점과 방어 기술]

  • 원서명RESTful Java Web Services Security(ISBN 9781783980109)
  • 지은이르네 엔리케(René Enríquez), 안드레 살라자르(Andrés Salazar C.)
  • 옮긴이이일웅
  • ISBN : 9788960777194
  • 18,000원
  • 2015년 05월 29일 펴냄
  • 페이퍼백 | 176쪽 | 188*235mm
  • 시리즈 : acorn+PACKT, 웹 프로페셔널

책 소개

요약

이 책은 자바 개발자가 RESTful 웹 서비스를 구축할 때 간과하기 쉬운 보안 취약점에 대해 보안 관리의 기초적인 내용부터 차근차근 소개하면서, 매우 상세하고 실전적인 예제 코드를 통해 HTTPS, 인증서, OAuth 등의 기술을 이해할 수 있도록 안내한다. 작은 분량의 책에 디지털 서명과 메시지 암호화에 대한 내용까지 아주 컴팩트하게 담아냈다.

이 책에서 다루는 내용

■ 개발 및 테스트 환경 구축과 필요에 따른 사용자 정의
■ RESTful 애플리케이션 보안 관리에 필요한 개념과 중요성 이해
■ 다양한 기법으로 수행하는 RESTful 웹 서비스 구현과 테스트, 결과 분석
■ 보안 프로토콜 설정과 적용 방법
■ RESTful 애플리케이션에 OAuth나 SSO 등의 기술 구현과 통합
■ JEE 애플리케이션과 컨테이너에서의 보안 개념 이해
■ 예제 코드에 디지털 서명과 메시지 암호화 기술 적용

이 책의 대상 독자

RESTful 기반의 웹 서비스 관련 업무에 종사하고 있는 웹 애플리케이션 개발자를 위한 책이다. 필수는 아니지만 RESTful 아키텍처에 대해 잘 알고 있으면 책을 읽는 데 도움이 된다.

이 책의 구성

1장, ‘개발 환경 세팅’에서 다루는 내용은 기본적으로 Hello World 같은 기초적인 예제이지만 실제 상황과 유사한 몇몇 기능이 추가되었다. 이후 사용할 도구를 길들이는 게 1장의 목표다.

2장, ‘웹 서비스 보안의 중요성’에서는 자바 플랫폼에서 제공하는 인증 모델을 알아보고 각각의 작동 원리를 단계별로 차근차근 뜯어볼 것이다. 와이어샤크(Wireshark)라는 트래픽 분석기로, 노출된 정보를 타인이 가로챌 수 있는 상황을 다룬다.

3장, ‘RESTEasy 보안 관리’에서는 RESTEasy 보안 메커니즘을 기본 모델(대단위coarse-grained)과 정교한 모델(소단위fine-grained)로 나누어 설명한다. 그리고 설정 파일 뿐 아니라 직접 코딩하여 보안을 적용하는 방법을 살펴본다.

4장, ‘RESTEasy 스켈레톤 키’에서는 토큰 소지자(token bearer), 싱글 사인 온(Single Sign-On), OAuth 인증을 다룬다. 세 가지 모두 자원 공유의 경로를 제한하기 위해 사용하는데, 곧바로 실무에 적용할 만한 실전적인 예제 코드를 살펴본다. 이러한 기법들을 동원하여 애플리케이션 간 자원/정보 공유를 하면, 토큰 소지자 말고 외부인 접근을 효과적으로 차단하는 동시에 유저가 자신의 크리덴셜(credential)로 처음 한 번만 인증하면 다른 서비스도 함께 이용할 수 있다. 안전하면서도 유연한 애플리케이션을 만들기 위해 이 세 기술을 어떻게 적용하는지 알아본다.

5장, ‘디지털 서명과 메시지 암호화’에서는 디지털 서명의 유용함을 이해하고, 간단한 예제를 통해 메시지 수신자가 송신자의 신원을 어떻게 검증하는지 배운다. 데이터를 송수신하는 과정에서 만약 누군가가 데이터를 변조했을 때 디지털 서명으로 이를 감지하여 잘못된 데이터를 전달받는 일이 없도록 모의 실험을 할 것이다.

끝으로, 서버 요청 및 응답 전체를 암호화하는 것과 S/MIME으로 메시지 본문만을 암호화하는 것, 두 가지를 비교해 살펴보며 마무리할 것이다

저자/역자 소개

저자 서문

웹 서비스 도입에는 언제나 보안이라는 문제가 대두된다. 오늘날 어떤 회사도 완벽하게 고립된 시스템으로 외부와의 정보 공유를 단절한 채 일한다는 건 불가능하지만, 회사 입장에서 정보는 가장 중요한 자산이기도 하다. 개발자는 이러한 상반된 요구를 코딩 시 반영할 수 있어야 한다. 이 책은 여러분이 실제 업무 현장에서 일반적으로 맞닥뜨리게 될 문제의 해법을 직접 손으로 타이핑해가며 깨우칠 수 있게 안내한다.

과거 SOAP 기반의 웹 서비스는 쓰기 불편한 점들이 많았다. 예를 들어, 프로그래밍 언어와 라이브러리에 의존적인 데이터 타입을 다룰 때, NULL 대신 공백 문자(“”)를 사용하면 예상치 못한 결과가 나왔다. 또 웹 서비스를 제작하고 이용하는 양측에서 사용하는 라이브러리 버전이 다를 경우, 파일 전송 시 복잡한 객체를 일일이 매핑해야 했고 간혹 골치 아픈 호환성 이슈가 발생하기도 했다. 심지어 자바 언어로 구현된 웹 서비스를 .NET 애플리케이션이 접속하는 경우, 부득이 둘 사이의 어떤 서비스를 자바로 추가 구현해야 할 일도 있었다. 그러나 RESTful 웹 서비스에선 HTTP 메소드 호출로 모든 기능을 이용할 수 있으니 그럴 일이 없다.

그간 보안 업계 전문가들은 정보 보호에 도움이 될 만한, 여러 가지 재미있는 장치들을 고안했다. 여러분은 인증(authentication)과 인가(authorization)의 개념을 이해하고 보안에 문제가 없는 애플리케이션을 구현할 수 있도록 그들이 고안한 장치들을 익히고 실무에 적용할 줄 알아야 한다. 어떤 방법을 택할지는 각자가 처한 상황이나 해결해야 할 문제의 성격에 따라 다르며, 본문에서 시나리오별로 상세한 실례를 다룰 것이다.

나는 지금까지 대기업 프로젝트 현장에서, 이미 과거에 누군가가 해결하여 표준화시킨 방법이 있음에도 혼자 골치 아픈 보안 문제를 해결하고자 무던히 애만 쓰고 시간을 축내는 사람들을 봐왔다. 이제 이 책으로 지식과 노하우를 공유하고자 하니 부디 독자 여러분은 처음부터 다시 바퀴를 발명하고자 인생을 허비하지 않길 바란다.

저자 소개

르네 엔리케(René Enríquez)

인도 소재 다국적 회사에 근무하는 소프트웨어 아키텍트다. 정부와 민간 기업에서 JAAS, 스프링 시큐리티(Spring Security) 등의 보안 프레임워크를 사용해 웹, BPM, CMS, 웹 서비스 기반의 다양한 플랫폼을 구축한 경력이 있다. 기술 혁신의 신봉자이며, 서너 개 언어로 프로그래밍이 가능하다. 다음과 같은 분야의 인증 자격을 취득했다.

■ 오라클 인증 프로페셔널, 자바 6 프로그래머(Oracle Certified Professional, Java SE6 Programmer)
■ 마이크로소프트 테크놀로지 어소시에이트(Microsoft Technology Associate)
■ 시스코 네트워크 운영시스템(Cisco Network Operating Systems)

지난 수년 동안 정부 기관과 민간 회사의 다양한 프로젝트에서 소프트웨어 컨설턴트로 활약했고, 엔터프라이즈와 모바일 애플리케이션 제작 강의를 했다. 애플리케이션 개발/통합에 관한 모범 사례를 전파하는 전도사(evangelist)이기도 하다.

안드레 살라자르(Andrés Salazar C.)

에콰도르의 전도 유망한 정부 기관에서 일하고 있으며, JAAS와 디지털 서명(digital signature) 기반 보안 기술을 적용하는 업무를 담당하고 있다. 웹 프로젝트의 포괄적인 OAuth 지식을 보유했으며, 신기술과 애자일(Agile)에 심취해 주로 JEE와 TDD 기술을 활용한 프로젝트에 참여해왔다. 다음과 같은 분야의 인증 자격을 취득했다.

■ 오라클 인증 프로페셔널, 자바 6 프로그래머
■ 인증 스크럼 개발자(Certified Scrum Developer)

옮긴이의 말

최근 잇따른 개인 정보 유출 사고로 인해 사회적으로 보안에 대한 관심이 전례 없이 높아졌습니다. 이를 바꿔 말하면, 이제 더 이상 대기업이나 공공 기관의 애플리케이션 개발자들도 보안에 무지해서는 안 되고, 앞으로 보안을 고려하지 않은 프로그래밍은 있을 수 없다는 것입니다. 그렇지 않아도 빡빡한 개발 일정에, 업무 요구 사항은 수시로 바뀌고 고객은 시스템 성능 문제를 제기하는 마당에, 이제는 보안까지 신경 써야 하느냐고 볼멘소리를 하실 분도 계시겠지만, 개발자라는 직업을 가진 사람에게 그야말로 배움의 끝은 존재하지 않는 것 같습니다.

이 책은 실제 현장에서 리더급 프로그래머가 직접 코드를 보여주며 교육을 시키는 것처럼 친절하게 웹 서비스 보안에 관한 코드를 소개하고 있습니다. 특히, 이 책이 모태로 삼은 RESTEasy 프로젝트의 매뉴얼과 예제 코드를 내려받아 시간을 갖고 분석하다 보면 JAX-RS나 보안 이외에도 현장에서 바로 쓸 수 있는 다양한 지식과 기술을 습득하게 될 것입니다. 비록 이 책이 웹 서비스 보안에 대한 모든 내용을 다루지는 않지만, 독자 여러분으로 하여금 새로운 분야에 대한 관심을 갖게 해, 한 단계 업그레이드된 자바 개발자가 될 수 있게 도와주리라 믿습니다.

옮긴이 소개

이일웅

10년 넘게 국내 대기업/공공기관 SI 프로젝트에 참여한 웹 개발자이자, RESTful 웹 서비스, OAuth 등으로 타 시스템과 데이터를 연동한 경험이 풍부한 자바 엔지니어다. SCJP, SCJD, SCBCD, SCWCD, CCNA, OCP 자격을 취득했으며, 최근 주목받고 있는 정보 보안 분야에도 관심이 많다. 에이콘출판사에서 출간한 『RESTful 자바 패턴과 실전 응용』(2014년)과 『Jasmine 자바스크립트 테스팅』(2015년)을 번역했다. 두 딸아이에게 좋은 아빠가 되기 위해 언제나 노력하고 있으며 시간이 나면 피아노곡을 연주한다. (개인 홈페이지: http://www.bullion.pe.kr)

목차

목차
  • 1장 개발 환경 세팅
    • 툴 내려받기
      • 다운로드 링크
    • 베이스 프로젝트 만들기
    • 첫 번째 기능 예제
      • 예제 웹 서비스 테스팅
    • 정리

  • 2장 웹 서비스 보안의 중요성
    • 보안의 중요성
    • 보안 관리 옵션
      • 인증과 인가
        • 인증
        • 인가
      • 접근 통제
        • 전송 계층 보안
      • 유저 크리덴셜에 의한 기본 인증
      • 다이제스트 인증
        • An example with explanation
      • 인증서 인증
    • API 키
    • 정리

  • 3장 RESTEasy 보안 관리
    • 대단위/소단위 보안
      • HTTP 메소드 보안
        • HTTP 메소드: POST
        • HTTP 메소드: GET
      • 애노테이션을 이용한 소단위 보안 구현
        • @RolesAllowed 애노테이션
        • @DenyAll 애노테이션
        • @PermitAll 애노테이션
      • 프로그래밍으로 구현하는 소단위 보안
    • 정리

  • 4장 RESTEasy 스켈레톤 키
    • OAuth 프로토콜
    • OAuth와 RESTEasy 스켈레톤 키
      • RESTEasy 스켈레톤 키란
      • OAuth 2.0 인증 프레임워크
        • 주요 기능
      • OAuth 2 구현
        • JBoss에서 RESTEasy 모듈 업데이트
        • JBoss 설정 파일 셋업
        • OAuth 클라이언트 구현
      • 보안 관리를 위한 SSO 설정
      • 기본 인증 방식의 OAuth 토큰
        • 애플리케이션 실행
      • 커스텀 필터
        • 서버 측 필터
        • 클라이언트 측 필터
        • 필터의 사용 예
    • 정리

  • 5장 디지털 서명과 메시지 암호화
    • 디지털 서명
      • RESTEasy JAR 파일 업데이트
      • 디지털 서명 적용
      • 기능 테스트
      • 애노테이션을 이용한 디지털 서명 검증
    • 메시지 본문 암호화
      • 기능 테스트
      • HTTPS 적용
        • 기능 테스트
    • 정리

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안