Top

Keycloak - 모던 애플리케이션을 위한 ID 및 접근 관리 [Keycloak, OpenID Connect 및 OAuth 2.0 프로토콜의 강력한 기능을 활용한 애플리케이션 보안]

  • 원서명Identity and Access Management for Modern Applications: Harness the power of Keycloak, OpenID Connect, and OAuth 2.0 protocols to secure applications (ISBN 9781800562493)
  • 지은이스티안 토르거센(Stian Thorgersen), 페드로 이고르 실바(Pedro Igor Silva)
  • 옮긴이최만균
  • ISBN : 9791161757865
  • 35,000원 (eBook 28,000원)
  • 2023년 09월 26일 펴냄
  • 페이퍼백 | 408쪽 | 188*235mm
  • 시리즈 : 해킹과 보안

책 소개

소스 코드 파일은 여기에서 내려 받으실 수 있습니다.
https://github.com/AcornPublishing/keycloak-iam

요약

애플리케이션 보안의 역할은 점점 더 중요해지고 있다. Keycloak은 오픈소스 IAM(ID 및 접근 관리) 도구이다. 사용자는 IAM을 통해 애플리케이션 및 IT 서비스에 대한 인증 프로세스를 간소화할 수 있다. Keycloak을 통해 서비스를 보호하고 애플리케이션에 대한 인증을 추가할 수도 있다. 이 책에서는 Keycloak의 설치부터 다양한 애플리케이션에 대한 보호 방법, OpenID 및 OAuth 2.0과 연동하는 방법, 프로덕션 환경에서의 설정 방법과 모범 사례를 다룬다.

이 책에서 다루는 내용

◆ Keycloak 설치, 설정 및 관리 방법 이해
◆ Keycloak을 활용한 신규 및 기존 애플리케이션 보호
◆ OAuth 2.0 및 OpenID Connect에 대한 기본적인 이해
◆ 프로덕션 환경에 배포하기 위한 Keycloak 설정 방법
◆ 추가 기능 활용 방법 및 Keycloak 사용자 정의 방법
◆ Keycloak 서버 보안 및 애플리케이션 보호에 대한 이해

이 책의 대상 독자

개발자, 시스템 관리자, 보안 엔지니어 또는 Keycloak의 기능을 활용해 애플리케이션을 보호하고자 하는 독자를 대상으로 한다.
Keycloak을 처음 접하는 경우 이 책을 통해 프로젝트에서 Keycloak을 활용할 수 있는 강력한 기반을 제공한다.
만약 Keycloak을 사용해본 적이 있지만 아직 익숙해지지 않았다면 이 책에서 여러 가지 유용한 정보를 찾을 수 있을 것이다.

이 책의 구성

1장, ‘Keycloak 시작하기’에서는 Keycloak에 대한 간략한 소개와 직접적인 Keycloak 설치 및 실행을 통해 Keycloak을 활용할 준비 단계를 다룬다. 또한 Keycloak 관리 및 계정 콘솔에 대해 소개한다.
2장, ‘첫 번째 애플리케이션 보안 설정’에서는 단일 페이지 애플리케이션 및 REST API로 구성된 샘플 애플리케이션을 사용해 해당 애플리케이션을 Keycloak으로 보호하는 방법에 관해 설명한다.
3장, ‘간략한 표준 소개’에서는 간략한 소개 및 애플리케이션을 Keycloak과 안전하고 쉽게 통합할 수 있도록 Keycloak에서 지원하는 표준을 비교하고 설명한다.
4장, ‘OpenID Connect를 통한 사용자 인증’에서는 OpenID Connect 표준을 통한 사용자 인증 방법을 다룬다. 애플리케이션이 Open ID Connect를 통해 Keycloak에 대해 인증하는 방법을 확인하고 이해할 수 있는 샘플 애플리케이션을 사용한다.
5장, ‘OAuth 2.0을 활용한 접근 권한 인가’에서는 OAuth 2.0 표준을 통한 REST API 및 다른 서비스 접근 인가 방법을 다룬다. 샘플 애플리케이션에서 보안이 적용된 REST API를 호출하는 데 사용하는 OAuth 2.0을 통해 어떻게 애플리케이션이 접근 토큰을 획득할 수 있는지 직접 확인할 수 있다.
6장, ‘다양한 애플리케이션 유형 보안’에서는 웹, 모바일, 네이티브 애플리케이션, REST API 및 기타 백엔드 서비스를 비롯한 다양한 유형의 애플리케이션을 보호하는 방법에 관한 베스트 프랙티스를 다룬다.
7장, ‘Keycloak과 애플리케이션 통합’에서는 Go, Java, 클라이언트 사이드 자바스크립트, Node.js 및 파이썬과 같은 다양한 프로그래밍 언어 기반의 애플리케이션을 Keycloak과 통합하는 방법을 단계별로 제공한다. 또한 리버스 프록시를 활용해 프로그래밍 언어 또는 프레임워크로 구현된 애플리케이션을 보호하는 방법도 다룬다.
8장, ‘인가 전략’에서는 애플리케이션이 접근 관리를 수행하기 위해 Keycloak의 사용자 정보를 활용하는 방법, 역할 및 그룹, 사용자 정의 정보를 다룬다.
9장, ‘프로덕션 환경을 위한 Keycloak 설정’에서는 TLS를 활성화하는 방법, 관계형 데이터베이스를 설정하는 방법, 추가 확장 및 가용성을 위해 클러스터링을 활성화하는 방법을 포함해 프로덕션 환경에서 Keycloak을 설정하는 방법을 다룬다.
10장, ‘사용자 관리’에서는 사용자 관리와 관련돼 Keycloak이 제공하는 기능을 자세히 살펴본다. 또한 LDAP, 소셜 네트워크 및 외부 ID 공급자와 같은 외부 소스의 사용자를 통합하는 방법도 설명한다.
11장, ‘사용자 인증’에서는 보안 키를 포함해 2차 인증을 활성화하는 방법 및 Keycloak에서 제공하는 다양한 인증 기능을 다룬다. 12장, ‘토큰 및 세션 관리’에서는 Keycloak이 서버 측 세션을 활용해 인증된 사용자를 추적하는 방법과 애플리케이션에 발행된 토큰 관리에 대한 베스트 프랙티스를 다룬다.
13장, ‘Keycloak 확장’에서는 로그인 페이지 및 계정 콘솔과 같은 사용자 페이지의 인터페이스를 수정하는 방법을 포함해 Keycloak을 확장하는 방법을 다룬다. Keycloak 확장을 수행할 수 있는 다양한 위치와 사용자 정의 확장을 수행할 수 있도록 해주는 Keycloak의 가장 강력한 기능 중 하나에 대해 간략하게 소개한다.
14장, ‘Keycloak 및 애플리케이션 보안’에서는 프로덕션 환경에서 Keycloak을 보호하는 방법에 대한 베스트 프랙티스를 다룬다. 또한 자체 애플리케이션을 보호할 때 준수해야 하는 몇 가지 베스트 프랙티스를 간략히 소개한다.

저자/역자 소개

지은이의 말

Keycloak은 단일 페이지 애플리케이션, 모바일 애플리케이션, REST API와 같은 최신 애플리케이션에 초점을 맞춘 오픈 소스 ID 및 접근 관리 도구다. Keycloak 프로젝트는 2014년 개발자들이 애플리케이션을 더 쉽게 보호하는 데 도움을 주기 위해 시작됐다. 이후 강력한 커뮤니티와 사용자 기반을 갖춘 활성화된 오픈 소스 프로젝트로 성장했다. 사용자가 소수인 소규모 웹사이트부터 수백만 명의 사용자가 있는 대기업까지 다양한 환경에서 쓰이고 있다.
Keycloak 설치 방법과 프로덕션 사용 사례에 맞게 Keycloak을 설정하는 방법에 대해 알아보는 책이다. 또한 애플리케이션을 보호하는 방법에 대해 다루며, OAuth 2.0 및 OpenID Connect를 이해하는 데 필요한 훌륭한 기초를 제공한다.

지은이 소개

스티안 토르거센(Stian Thorgersen)

대부분의 기업이 단일 벤더 퍼블릭 클라우드를 사용할 준비가 되기 몇 년 전부터 클라우드 연합 플랫폼을 구축하는 아르주나 테크놀로지스(Arjuna Technologies)에서 경력을 시작했다. 그 후 레드햇(Red Hat)에 합류해 개발자들의 업무를 도울 방법을 찾았으며 여기서부터 Keycloak에 대한 아이디어가 시작됐다. 2013년 레드햇의 다른 개발자와 함께 Keycloak 프로젝트를 공동 설립했다. 현재 Keycloak 프로젝트의 리더이자 프로젝트의 최고 기여자다. 또한 레드햇과 레드햇 고객의 ID 및 접근 관리 업무를 수행하는 수석 소프트웨어 엔지니어로 꾸준히 일하고 있다.

페드로 이고르 실바(Pedro Igor Silva)

2000년에 ISP에서 커리어를 시작했다. 그곳에서 자바와 J2EE 소프트웨어 엔지니어로 일하며 FreeBSD와 리눅스와 같은 오픈 소스 프로젝트를 처음 접했다. 그 후 다양한 IT 회사에서 시스템 엔지니어, 시스템 아키텍트 및 컨설턴트로 근무했다. 현재 레드햇의 수석 소프트웨어 엔지니어이자 Keycloak의 핵심 개발자 중 한 명이다. 현재 관심을 갖고 연구하는 분야는 IT 보안, 특히 애플리케이션 보안, ID 및 접근 관리 분야다.

옮긴이의 말

클라우드와 AI 관련 산업이 발전하면서 보안의 중요성은 더욱 커지고 있다. 이제는 대부분의 소프트웨어와 애플리케이션이 온라인에 연결돼 있으며 인터넷에 연결된 모든 사용자가 자유롭게 접근할 수 있다. 이러한 IT 환경의 변화로 인해 사용자를 인증하고 다양한 리소스에 대한 접근 권한을 관리하는 역할은 보안의 핵심적인 역할을 수행하게 됐으며 모든 애플리케이션은 사용자의 ID와 접근을 관리하기 위한 도구가 필요해졌다. Keycloak은 이러한 ID 및 접근 관리 소프트웨어 분야에서 가장 강력한 커뮤니티를 갖춘 오픈 소스 애플리케이션이다(동일한 기능을 제공하는 Auth0 및 Okta는 유료다). Keycloak은 다양한 인증 프로토콜과 LDAP 또는 액티브 디렉터리와 같은 데이터베이스를 지원한다. 또한 구글 및 페이스북과 소셜 ID 제공자를 지원하기 때문에 소셜 로그인을 사용하고자 하는 사용자에게 매우 유용하다. 마지막으로, 웹 기반의 GUI와 SSO 기능까지 갖추고 있다. 기업의 보안 관리 업무에서 IAM(ID 및 접근 관리) 기능은 이제 필수다. Auth0와 Okta와 같은 유료 솔루션 도입을 고민해본 독자라면 오픈 소스 IAM 솔루션으로 Keycloak을 고려해볼 수 있다.

옮긴이 소개

최만균

한국과 뉴질랜드에서 15년 동안 IT 엔지니어로서 다양한 경험을 쌓고 있다. 한국에서는 네트워크 및 보안 분야 엔지니어로 근무하며 다양한 국내외 대기업 및 정부 프로젝트에 참여했다. 뉴질랜드에서는 소프트웨어 테스팅 및 테스트 자동화 그리고 웹 보안 업무를 수행 중이다. 또한 빅데이터 분석, AI, 클라우드 보안에 관심이 많다. 최근에는 스노우플레이크(Snowflake)를 활용한 빅데이터 분석 및 ETL 테스팅 프로젝트에 참여하고 있다. 기술 관련 도서 번역을 제2의 직업으로 생각하며, 에이콘출판사에서 출간한 『디지털 트윈 개발 및 클라우드 배포』(2022), 『어반 컴퓨팅』(2020), 『사이버 보안』(2019)을 번역했다. 앞으로도 다양한 책을 번역하고자 하는 목표가 있다.

목차

목차
  • 1부. Keycloak 시작하기
  • 1장. Keycloak 시작하기
    • 기술 요구 사항
    • Keycloak 소개
    • Keycloak 설치 및 실행
      • 도커에서 Keycloak 실행
      • OpenJDK를 통한 Keycloak 설치 및 실행
    • Keycloak 관리 및 계정 콘솔 활용
      • Keycloak 관리자 콘솔 시작하기
      • Keycloak 계정 콘솔 시작하기
    • 요약
    • 질문

  • 2장. 애플리케이션 보안 설정
    • 기술 요구 사항
    • 샘플 애플리케이션 이해
    • 애플리케이션 실행
    • 애플리케이션에 로그인하기
    • 백엔드 REST API 안전하게 호출하기
    • 요약
    • 질문

  • 2부. Keycloak을 통한 애플리케이션 보안
  • 3장. 간략한 표준 소개
    • OAuth 2.0을 통한 애플리케이션 접근 권한 인가
    • OpenID Connect를 통한 사용자 인증
    • JWT를 토큰으로 활용
    • SAML 2.0이 여전히 중요한 이유
    • 요약
    • 질문

  • 4장. OpenID Connect를 활용한 사용자 인증
    • 기술 요구 사항
    • OpenID Connect playground 실행
    • 검색 엔드포인트 이해
    • 사용자 인증
    • ID 토큰 이해하기
      • 사용자 프로파일 업데이트
      • 사용자 정의 속성 추가
      • ID 토큰에 역할 추가
    • UserInfo 엔드포인트 호출
    • 사용자 로그아웃 처리
      • 로그아웃 시작
      • ID 및 접근 토큰 만료 활용
      • OIDC 세션 관리 활용
      • OIDC 백-채널 로그아웃 활용
      • OIDC 프론트-채널 로그아웃 활용
      • 로그아웃은 어떻게 처리해야 하는가?
    • 요약
    • 질문
    • 참고문헌

  • 5장. OAuth 2.0을 활용한 접근 권한 인가
    • 기술 요구 사항
    • OAuth 2.0 플레이그라운드 실행
    • 접근 토큰 획득
    • 사용자 동의 요청
    • 접근 토큰에 부여된 접근 권한 제한
      • 토큰 접근을 제한하기 위한 오디언스 활용
      • 역할을 사용해 토큰 액세스 제한하기
      • 토큰 접근을 제한하기 위한 범위 활용
    • 접근 토큰 검증
    • 요약
    • 질문
    • 참고문헌

  • 6장. 다양한 애플리케이션 유형 보안
    • 기술 요구 사항
    • 내부 및 외부 애플리케이션 이해
    • 웹 애플리케이션 보호
      • 서버 사이드 웹 애플리케이션 보호
      • 전용 REST API가 포함된 SPA 보호
      • 중개 REST API를 사용하는 SPA 보호
      • 외부 REST API가 포함된 SPA 보호
    • 네이티브 및 모바일 애플리케이션 보호
    • REST API 및 서비스 보호
    • 요약
    • 질문
    • 참고문헌

  • 7장. Keycloak과 애플리케이션 통합
    • 기술 요구 사항
    • 통합 아키텍처 선택
    • 통합 옵션 선택
    • Golang 애플리케이션 통합
      • Golang 클라이언트 설정
    • 자바 애플리케이션 통합
      • Quarkus 사용
      • SpringBoot 사용
      • Keycloak 어댑터 활용
    • 자바스크립트 애플리케이션 통합
    • Node.js 애플리케이션 통합
      • Node.js 클라이언트 생성
      • Node.js 리소스 서버 생성
    • 파이썬 애플리케이션 통합
      • 파이썬 클라이언트 생성
      • 파이썬 리소스 서버 생성
    • 리버스 프록시 활용
    • 자체 통합 코드 구현을 권장하지 않음
    • 요약
    • 질문
    • 참고문헌

  • 8장. 인가 전략
    • 인가 이해하기
    • RBAC 활용
    • GBAC 활용
      • 그룹 멤버십을 토큰에 매핑
    • OAuth2 범위 활용
    • ABAC 활용
    • 통합 Keycloak 인가 서버 활용
    • 요약
    • 질문
    • 참고문헌

  • 3부. Keycloak 설정 및 관리
  • 9장. 프로덕션 환경을 위한 Keycloak 설정
    • 기술 요구 사항
    • Keycloak 호스트네임 설정
      • 프론트엔드 URL 설정
      • 백엔드 URL 설정
      • admin URL 설정
    • TLS 활성화
    • 데이터베이스 설정
    • 클러스터링 활성화
    • 리버스 프록시 설정
      • 노드 부하 분산
      • 클라이언트 정보 전송
      • 세션 어피니티 유지
    • Keycloak 환경 테스트
      • 부하 분산 및 시스템 대체 작동 테스트
      • 프론트엔드 및 백엔드 URLs 테스팅
    • 요약
    • 질문
    • 참고문헌

  • 10장. 사용자 관리
    • 기술 요구 사항
    • 로컬 사용자 관리
      • 로컬 사용자 생성
      • 사용자 자격증명 관리
      • 사용자 정보 획득 및 검증
      • 자동 등록 활성화
      • 사용자 속성 관리
    • LDAP 및 액티브 디렉터리 통합
      • LDAP 매퍼 이해
      • 그룹 동기화
      • 역할 동기화
    • 서드파티 ID 제공자 통합
      • OpenID Connect ID 제공자 생성
    • 소셜 ID 제공자 연동
    • 사용자 데이터 관리
    • 요약
    • 질문
    • 참고문헌

  • 11장. 사용자 인증
    • 기술 요구 사항
    • 인증 흐름 이해
      • 인증 흐름 설정
    • 패스워드 사용
      • 패스워드 정책 변경
      • 사용자 패스워드 리셋
    • OTPs 사용
      • OTP 정책 변경
      • 사용자가 OTP 사용 여부를 선택할 수 있도록 허용
      • OTP를 통한 사용자 인증 활성화
    • 웹 인증 활용
      • 인증 흐름에서 WebAuthn 활성화
      • 보안 기기 등록 및 인증
    • 강력한 인증 사용
    • 요약
    • 질문
    • 참고문헌

  • 12장. 토큰 및 세션 관리
    • 기술 요구 사항
    • 세션 관리
      • 세션 생명주기 관리
      • 활성 세션 관리
      • 사용자 세션 조기 종료
      • 쿠키 및 세션과의 관련성 이해
    • 토큰 관리
      • ID 토큰 및 접근 토큰 생명주기 관리
      • 리프레시 토큰 생명주기 관리
      • 리프레시 토큰 로테이션 활성화
      • 토큰 폐기
    • 요약
    • 질문
    • 참고문헌

  • 13장. Keycloak 확장
    • 기술 요구 사항
    • 서비스 공급자 인터페이스 이해하기
      • 사용자 정의 제공자 패키징
      • 사용자 정의 제공자 설치
      • KeycloakSessionFactory 및 KeycloakSession 컴포넌트 이해
      • 제공자의 생명주기 이해
      • 제공자 설정
    • 인터페이스 변경
      • 테마 이해
      • 신규 테마 생성 및 적용
      • 템플릿 확장
      • 테마 관련 SPI 확장
    • 인증 흐름 사용자 정의
    • 다른 사용자 정의 포인트 확인
    • 요약
    • 질문
    • 참고문헌

  • 4부. 보안 고려 사항
  • 14장. Keycloak 및 애플리케이션 보안
    • Keycloak 보안
      • Keycloak에 대한 통신 암호화
      • Keycloak 호스트 이름 설정
      • Keycloak에서 사용하는 서명 키 순환
      • 주기적인 Keycloak 업데이트
      • 외부 저장소의 시크릿을 Keycloak으로 로드
      • 방화벽 및 침입 방지 시스템을 통한 Keycloak 보안
    • 데이터베이스 보안
      • 방화벽을 사용한 데이터베이스 보안
      • 데이터베이스 인증 및 접근 제어 활성화
      • 데이터베이스 암호화
    • 클러스터 통신 보안
      • 클러스터 인증 활성화
      • 클러스터 통신 암호화
    • 사용자 계정 보안
    • 애플리케이션 보안
      • 웹 애플리케이션 보안
      • OAuth 2.0 및 OpenID 커넥트 베스트 프랙티스
      • Keycloak 클라이언트 설정
    • 요약
    • 질문
    • 참고문헌

    • 평가
    • 찾아보기

도서 오류 신고

도서 오류 신고

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

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

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

정오표

정오표

[ p.33 : 1행 ]
docker run -p 8080:8080 -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin?quay.io/keycloak/keycloak:22.0.1start-dev
->
docker run -p 8080:8080 -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin quay.io/keycloak/keycloak:22.0.1 start-dev