유미의 기록들

[최종 프로젝트] Signed URL 적용 본문

대외활동 기록/내일배움캠프

[최종 프로젝트] Signed URL 적용

지유미 2024. 11. 13. 23:19
728x90
반응형
  1. 콘텐츠 보호

강의 영상과 같은 유료로 제공되는 영상이 모든 사용자에게 무제한으로 노출되는 것을 방지하기 위해, 수강 유저에게만 제한적으로 접근권한을 주고자 합니다.

signed URL은 및 시간 같은 추가 정보가 포함되므로 콘텐츠에 대한 액세스를 세부적으로 제어할 수 있습니다

  1. 안전한 접근 제어

사용자가 접근 권한을 얻기 위해 각자의 키를 공유할 수 없기 때문에 RSA 키 쌍을 통해 “내가 승인한 사람만” 콘텐츠에 접근하게 만든다

CloudFront에 SignedURL 적용하기

  • Signed URLs 인증 절차에 사용할 공개키와 개인키 RSA key pair를 만든다.
  • 공개키를 AWS CloudFront keygroups에 등록하고 해당 CloudFront에 접근제한을 설정하고 keygroups을 연결한다.
  • 애플리케이션에서 개인키를 사용하여 인증정보가 쿼리에 담겨있는 Signed URLs을 생성한다.
  • 해당 Signed URLs로 접근하면 url 쿼리에 등록된 개인키가 CloudFront에 등록된 공개키와 복호화를 성공하여 콘텐츠에 접근이 가능하다.
  1. 루트사용자가 aws에서 key pair 생성하는 방식
  2. 키 그룹을 생성하는 방법

키그룹 생성 권장

RSA key pair 생성

RSA알고리즘 사용할 때, 두가지 키가 생성된다

개인키는 비밀로 유지되어야 하는 키 →자신이 데이터를 암호화 해독, 자신의 데이터에 서명 ⇒ 애플리케이션이 개인키로 URL에 서명하여 특정 조건(유효 기간, IP 제한 등)이 설정된 SignedURL을 생성

공개키는 다른사람과 공유할 수 있다 → 다른 사람이 보낸 데이터 암호화, 서명 검증 ⇒ CloudFront 에 등록

암호화 : 데이터를 안전하게 전달하는 방식

나 ——> “안녕” ——> 친구

누군가가 중간에서 가로챌 수 있다

RSA를 통해 나와 친구는 각각 공개키와 개인키를 만든다

나 : 친구의 공개키를 사용하여 “안녕” 암호화 —→ 복잡한 코드로 변환 ←-누가 중간에 가로채도 내용 해독할 수 없음

친구 : “안녕”암호화된 거 받음 → 자신의 개인키로 암호를 해독하여 “안녕” 확인

서명 : 메시지의 진짜 발신자를 증명하는 방식

나 —→ “안녕” —→ 친구

내가 보낸 메시지가 맞아! 위조 된것이 아니야를 증명하고 싶어

나 : 나의 개인키로 서명을 만든다 “안녕”에 서명이 붙어서 전송, 개인키로 생성된 서명은 소유자만 만들 수 있기 때문에 이 메시지는 내가 보낸 것을 증명 가능

친구 : 나의 공개키로 서명 검증, 서명이 올바르다면, 내가 보낸게 맞다 확신, 서명검증 실패하면 메시지가 변조되었음을 알 수 있다

사용자 ——→ 애플리케이션 (영상 접근 요청) : private 키를 가지고 signedURL 생성해서 응답 (접근 허가 티켓)

사용자 ——→ CloudFront : public 키로 이 URL의 서명 확인

728x90
반응형
Comments