S3 톺아보기

Server The SOPT·2022년 5월 30일
5
post-thumbnail
post-custom-banner

✏️ 작성자 : 후니팍
🌻 AWS 스터디 1조 대표로 올리는 글입니다
2주차 주제는 S3 입니다🌻

안녕하세요🤡 첫 글을 올리게 된 후니팍입니다.
얼마 전에 aws S3의 이곳 저곳을 살펴보기 위해 이 글을 작성하게 되었습니다.


버킷

버킷 생성

갓 잡채님의 세미나때 다뤄서 패스하겠습니다.

버킷 정책 설정


  • Select Ytpe of Policy : SNS Topic Policy, IAM Policy, SQS Queue Policy, S3 Bucket Policy를 선택할 수 있는데 여기서는 S3 Bucket Policy 선택하겠습니다. 저희가 S3를 다룰 것이기 때문이죠~
  • Effect : 허용, 거부를 선택할 수 있으며, 기본 값 그대로 Allow를 선택합니다.
  • Principal : 권한을 적용할 사용자인데, 저희는 인터넷 전체에 공개할 것이므로 *를 입력하겠습니다.
  • AWS Service : 처음 Select Type of Policy를 선택하면 그에 맞는 서비스가 자동으로 선택됩니다. 기본값 그대로 사용하겠습니다.
  • Action : S3의 모든 액션이 표시됩니다. 저희는 파일을 받는 액션만 사용할 것이므로 GetObject를 선택하겠습니다.
  • Amazon Resource Name(ARN) : 아마존의 리소스를 고유하게 표현하는 방식입니다. 본인의 버킷 ARN 주소를 넣으면 됩니다.

정적 웹사이트 호스팅

일반적인 S3의 URL 형태

정적 웹사이트 호스팅을 사용한 S3의 URL 형태

정적 웹사이트 호스팅의 장점

  • 인덱스 페이지와 에러 페이지의 파일명을 따로 지정해줄 수 있습니다.
  • 리다이렉션이 가능합니다.

    examplebucket10.s3-website-ap-northeast-2.amazonaws.com을 example.com과 같은 도메인으로 리다이렉션할 수 있습니다.


방법

  1. 버킷 → 속성 → 정적 웹 사이트 호스팅 → 편집 → 변경 사항 저장
  2. index.html 생성하여 s3 버킷에 업로드
  3. 버킷 웹 사이트 엔드포인트로 접속


암호화 설정

암호화 종류

  • SSE-S3 : aws에서 완벽하게 관리되고 처리되는 암호화 수단
    • Object는 서버에서 암호화 될 것이고 AES-256를 이용해서 암호화시킬 겁니다. Header에 반드시 "x-amz-server-side-encryption" : "AES256" 를 설정해두어야 제대로 작동합니다.
  • SSE-KMS : 암호화를 하는 key를 aws에서 관리하는 방식의 암호화 방식
    • S3와 다른점은 조금 더 사용자 단위의 컨트롤을 할 수 있으며 audit trail이 가능하다는 점입니다. header에서 반드시 "x-amz-server-side-encryption" : "aws:kms" 가 설정되어야 합니다.
  • SSE-C : 직접 key를 가져와서 암호화하는 방식
    • 키값을 사용자가 완전하게 관리해야하는 암호화 방식이며 AWS는 키에 대한 어떠한 정보도 들어있게 하지 않습니다. HTTPS가 반드시 사용되어야 합니다.
  • Client Side Encryption : Client에서 암호화를 시킨 상태에서 업로드를 하는 것
    • S3로 보내지기 전에 암호화되는 형태로서 S3에서 가져왔을 때 다시 복호화하는 작업을 진행해야 합니다.

암호화 방법 선택

  1. 버킷 내의 파일 선택 → 서버 측 암호화 설정 → 편집
  2. 저희는 aws managed key를 사용할 것입니다. (저는 AWS를 믿어요)

메타데이터

S3 전용 메타데이터

  • WebSite Redirect Location : 웹 브라우저로 해당 파일에 접속했을 때 다른 파일이나 URL로 리다이렉션 하는 기능입니다. /index.html 처럼 S3에 올라가 있는 파일명을 지정할 수 있습니다.
  • 사용자 정의 메타데이터
    • x-amz-meta- : 사용자 마음대로 사용할 수 있는 메타데이터입니다. 객체에 추가적인 설명을 넣고 싶을 때 사용합니다. x-amz-meta- 뒤에 임의로 이름을 붙여 x-amz-meta-user-id와 같이 사용하면 됩니다.
  • S3 시스템 정의 메타데이터 : 일부 S3 세부 설정들을 이 메타데이터로 대신할 수 있습니다. S3 콘솔에서 설정한 세부 설정들을 HTTP Response Header에 아래 키로 표현됩니다.
    • x-amz-server-side-encryption : 데이터 암호화 옵션입니다. AES256을 값으로 가집니다.
    • x-amz-version-id : S3 버킷에 버저닝 기능을 켰을 때, 파일의 버전을 표시합니다.
    • x-amz-delete-marker : S3 버킷에 버저닝 기능을 켜고, 파일을 삭제하면 파일이 완전히 삭제되지 않고 삭제 표시 설정이 되고, true를 값으로 가집니다. (사용자가 편집할 수 없는 메타데이터)
    • x-amz-storage-class : 스토리지 클래스 옵션입니다. STANDARD와 REDUCED_REDUNDANCY를 값으로 가집니다.

이미지 업로드시 암호화를 default로 설정

  1. 버킷 → 속성 → 기본 암호화 → 편집

  2. 기본 암호화 편집

  3. 버킷 정책 변경

  1. 업로드시 속성에서 암호화 설정을 적용


마치며

aws 공부하실 때 도움이 되시면 좋겠습니다.
SOPT 남은 기간도 다들 화이팅!!

profile
대학생연합 IT벤처창업 동아리 SOPT 30기 SERVER 파트 기술 블로그입니다.
post-custom-banner

0개의 댓글