본문 바로가기
BE 공부/AWS

Cognito와 KMS(1)

by 꼬질꼬질두부 2024. 12. 12.
반응형

1. 서명은 언제 필요할까?

서명은 서버가 "이 요청을 보낸 사람이 진짜 맞는지 확인"해야 할 때 사용된다.
서버가 "진짜 너야?"라고 물어봤을 때, 단순히 "응, 나야"라고 말하는 것만으로는 믿을 수 없다.
이때 요청을 보낸 사람은 "이걸 증명할 서명을 만들어서 보여줄게"라고 말해야 한다.
이 과정을 서명(Signing)이라고 한다.


2. 서명이란?

서명은 디지털 도장과 비슷하다.

  • 데이터를 보내는 사람은 자신만 가진 비밀키(개인 키)를 사용해 데이터를 서명한다.
  • 서버는 이 서명을 공개 키를 사용해 확인하고, 도장이 진짜인지 검증한다.
  • 서명은 "이 데이터를 진짜 내가 보낸 거야"라고 증명하는 역할을 한다.

3. 서명을 만드는 방법

Identity Provider를 사용하는 방식

Cognito 같은 인증 시스템에서 서명을 대신 만들어준다.
이 시스템은 신분증 역할을 하는 JWT(토큰)를 발급한다.
JWT에는 "이 사람은 진짜야"라는 정보가 담겨 있고, 서명된 상태로 제공된다.
서버는 Cognito의 공개 키를 사용해 JWT가 유효한지 확인할 수 있다.

로컬에서 직접 서명하는 방식

사용자가 직접 개인 키를 사용해 데이터를 서명한다.
서버는 요청을 받은 후, 사용자의 공개 키를 사용해 서명을 검증한다.
이 방식은 외부 시스템에 의존하지 않지만, 키를 공유하고 관리해야 하는 부담이 있다.

KMS를 사용하는 방식

KMS는 안전하게 서명을 도와주는 키 관리 서비스다.
로컬 서명과 비슷하지만, KMS를 통해 서명을 생성하면 키를 직접 관리하지 않아도 된다.
KMS가 대신 비밀키를 보관하고, 안전한 환경에서 서명을 만들어준다.
서버는 KMS에서 생성된 서명을 검증해 데이터를 신뢰할 수 있다.


4. Cognito, 로컬 서명, KMS의 차이

방법 Cognito Local KMS
서명 생성 방식 JWT를 발급받아 서명 포함 직접 개인 키로 서명 KMS에서 서명을 대행
키 관리 Cognito에서 관리 사용자가 직접 관리 AWS KMS에서 관리
검증 방식 Cognito의 공개 키로 검증 사용자의 공개 키로 검증 KMS의 공개 키로 검증
안전성 안전하고 간단 안전하지만 관리가 복잡 매우 안전하고 관리 부담 적음

5. 정리

Cognito는 신분증 같은 JWT를 발급받아 사용하는 방식이다.
로컬 서명은 사용자가 직접 서명을 만들어 서버에 보내는 방식이다.
KMS는 키 관리와 서명을 AWS가 대신 처리해주는 방식이다.

각각의 방식은 상황에 따라 적합한 용도가 있다.
예를 들어, 외부 인증이 필요하면 Cognito를, 독립적인 서명이 필요하면 로컬 서명을, 보안성과 편리함이 모두 중요하면 KMS를 선택하면 된다.

 

2024.12.12 - [BE 공부/AWS] - Cognito와 KMS(2)

 

Cognito와 KMS(2)

2024.12.12 - [BE 공부/AWS] - Cognito와 KMS(1) Cognito와 KMS(1)1. 서명은 언제 필요할까?서명은 서버가 "이 요청을 보낸 사람이 진짜 맞는지 확인"해야 할 때 사용된다.서버가 "진짜 너야?"라고 물어봤을 때,

comeintoflower.tistory.com

 

반응형

댓글