본문 바로가기
BE 공부/AWS

Cognito와 KMS(2)

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

 

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

 

Cognito와 KMS(1)

1. 서명은 언제 필요할까?서명은 서버가 "이 요청을 보낸 사람이 진짜 맞는지 확인"해야 할 때 사용된다.서버가 "진짜 너야?"라고 물어봤을 때, 단순히 "응, 나야"라고 말하는 것만으로는 믿을 수

comeintoflower.tistory.com


KMS와 Cognito의 역할 차이

  1. Cognito
    • 사용자 인증과 권한 관리에 초점이 맞춰져 있다.
    • 사용자가 로그인하면 Cognito는 JWT 토큰을 발급해서, 사용자가 인증된 상태임을 증명한다.
    • 주로 사용자의 신원 확인리소스 접근 제어를 위해 사용된다.
  2. KMS
    • 데이터를 암호화하거나 서명하는 데 사용된다.
    • 비밀키 관리와 보안에 초점이 맞춰져 있다.
    • 주로 서명 생성, 암호화된 데이터 관리, 보안 강화를 위한 키 저장소로 활용된다.

KMS와 Cognito를 동시에 사용하는 방법

이 두 가지를 함께 사용하는 것은 인증과 서명을 모두 안전하게 처리할 수 있는 방법이다. 다음과 같은 시나리오로 활용할 수 있다:

1. Cognito를 통해 사용자 인증

  • 사용자가 로그인하면 Cognito에서 Access Token 또는 **ID Token (JWT)**을 발급한다.
  • 이 JWT는 사용자의 신원을 증명하고, 요청이 정당한 사용자로부터 온 것임을 보여준다.

2. KMS를 이용해 요청에 서명

  • 서버나 애플리케이션은 사용자가 보낸 요청 데이터를 KMS를 통해 서명한다.
  • 이렇게 생성된 서명은 데이터의 무결성을 보장하며, 요청이 변조되지 않았음을 증명한다.
  • KMS는 비밀키를 안전하게 관리하므로, 서명을 더욱 신뢰할 수 있다.

실제 사용 사례

1. API 요청 인증 및 보안 강화

  • 사용자는 Cognito를 통해 인증받고, 서버는 JWT를 사용해 사용자의 신원을 확인한다.
  • 서버는 KMS를 이용해 요청 데이터를 서명하거나 암호화한다.
  • 클라이언트는 서버로부터 받은 응답이 KMS로 서명된 것을 확인해 데이터의 신뢰성을 보장받는다.

2. 데이터 암호화와 인증 통합

  • 사용자는 Cognito로 로그인하고, 사용자의 권한에 따라 데이터 접근을 제어한다.
  • 민감한 데이터는 KMS를 이용해 암호화 및 복호화된다.
  • 이 과정에서 Cognito의 사용자 권한과 KMS의 키 정책을 연동해 보안을 강화한다.

3. 서명된 JWT 생성

  • Cognito에서 발급된 JWT를 KMS를 이용해 추가 서명한다.
  • 예를 들어, 중요한 요청에 대해 추가적인 보안 계층을 제공하기 위해 JWT를 KMS로 서명하여 서버에서만 검증할 수 있도록 한다.

주의할 점

  1. 비용: Cognito와 KMS는 모두 사용량에 따라 비용이 발생한다. 특히 KMS는 요청마다 비용이 발생하므로 대량 트래픽 환경에서는 비용 효율성을 고려해야 한다.
  2. 구현 복잡성: 두 서비스를 동시에 사용하면 구현이 복잡해질 수 있다. 명확한 아키텍처 설계와 관리가 필요하다.
  3. 권한 설정: Cognito와 KMS는 각각 IAM(Identity and Access Management) 설정이 필요하다. 이 설정을 잘못하면 보안 문제가 발생할 수 있다.

결론

KMS와 Cognito를 함께 사용하면 사용자 인증과 데이터 보안 모두를 강화할 수 있다.

  • Cognito는 사용자의 신원 확인과 인증을 처리하고,
  • KMS는 데이터를 암호화하거나 서명해 데이터의 무결성을 보장한다.
반응형

댓글