반응형
2024.12.12 - [BE 공부/AWS] - Cognito와 KMS(1)
Cognito와 KMS(1)
1. 서명은 언제 필요할까?서명은 서버가 "이 요청을 보낸 사람이 진짜 맞는지 확인"해야 할 때 사용된다.서버가 "진짜 너야?"라고 물어봤을 때, 단순히 "응, 나야"라고 말하는 것만으로는 믿을 수
comeintoflower.tistory.com
KMS와 Cognito의 역할 차이
- Cognito
- 사용자 인증과 권한 관리에 초점이 맞춰져 있다.
- 사용자가 로그인하면 Cognito는 JWT 토큰을 발급해서, 사용자가 인증된 상태임을 증명한다.
- 주로 사용자의 신원 확인과 리소스 접근 제어를 위해 사용된다.
- 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로 서명하여 서버에서만 검증할 수 있도록 한다.
주의할 점
- 비용: Cognito와 KMS는 모두 사용량에 따라 비용이 발생한다. 특히 KMS는 요청마다 비용이 발생하므로 대량 트래픽 환경에서는 비용 효율성을 고려해야 한다.
- 구현 복잡성: 두 서비스를 동시에 사용하면 구현이 복잡해질 수 있다. 명확한 아키텍처 설계와 관리가 필요하다.
- 권한 설정: Cognito와 KMS는 각각 IAM(Identity and Access Management) 설정이 필요하다. 이 설정을 잘못하면 보안 문제가 발생할 수 있다.
결론
KMS와 Cognito를 함께 사용하면 사용자 인증과 데이터 보안 모두를 강화할 수 있다.
- Cognito는 사용자의 신원 확인과 인증을 처리하고,
- KMS는 데이터를 암호화하거나 서명해 데이터의 무결성을 보장한다.
반응형
'BE 공부 > AWS' 카테고리의 다른 글
AWS Secrets Manager: 쉽게 이해하는 보안 정보 관리의 시작 (0) | 2025.01.02 |
---|---|
Amazon Simple Queue Service(SQS) (0) | 2024.12.30 |
AWS Credential과 Cognito (2) | 2024.12.12 |
Cognito와 KMS(1) (0) | 2024.12.12 |
[DynamoDB] 다이나모 디비란?(1) (3) | 2024.09.12 |
댓글