☁ 뭉게뭉게 클라우드/🙀 rlch가 되기 위한 기초

[AWS] S3(Simple Storage Service) #2

우주수첩 2022. 7. 14. 23:22
728x90

원래 안 쓰다가 요즘들어 맛들려버린 인트로를 뭘 쓸까 고민을 하던 도중 도저히 생각이 나질 않아 머릿 속을 스치는 그 자체를 작성하고 있습니다.

 


 

 

# S3 Bucket 사용 용례

 

1. 파일 저장소

  • 파일을 임시 혹은 영구적으로 보관하고자 할 때 사용
    • 이미지, 비디오, 압축 파일 등의 Object 파일 저장
    • AWS 사용시 생성되는 다양한 로그 파일들을 저장
    • 등등

 

2. 웹사이트 호스팅

  • S3 bucket을 웹사이트 호스팅을 위해 필요한 많은 파일들을 저장하는 용도로 사용 가능

 

3. CORS(Cross Origin Resource Sharing)

  • region 상관 없이 Bucket의 data를 공유하는 것.

예시를 들어주지.

이렇게 Region이 다른 두 Bucket A, B가 있다고 하자.

A는 웹사이트 호스팅을, B는 주로 데이터가 업로드 된다고 가정할 때.

냅다 A가 B에서 업로드한 데이터에 접근을 하고자 하면

둘의 Region이 다르기 때문에 바로 삐용삐용 애용애용 한다.

이러한 문제를 해결하는 방법이 CORS라고 한다.

 

 


 

# S3 Bucket 최초 생성 시

  • 비공개(PRIVATE) 상태 : Bucket을 생성한 사람만 접근 가능
  • 외부에서 접근 시Access Denied 오류 발생

 

 


 

# 특정 그룹 or 특정 유저에게만 Bucket의 접근 권한 부여 방법

1. Bucket 정책 변경( Bucket policy)

  • 변경 시 Bucket 내부에 들어있는 모든 파일에 적용
  • json 형태

 

2. 접근 제어리스트 변경(Access ContolList)

  • 파일 하나하나에 접근 정책 부여 가능

예시를 들어주지

위의 그림처럼 라면이라는 Bucket에 신라면, 짜파게티, 불닭이라는 파일이 존재 할 경우

 

User_농심에게는 신라면과 짜파게티에 대한 접근 권한을

User_삼양에게는 불닭에 대한 접근 권한을 부여할 수 있다.

 

 


 

# S3 암호화(Encryption)

S3에 중요한 파일을 업로드 할 때 일종의 암호화 과정을 거쳐서

외부로부터 파일의 노출을 차단시키며 보안적인 부분에 신경써야 한다.

 

근데 요 암호화를 어떠케 하까?

 

 

 

# 암호화 발생 경우 & 암호화 방법

 

1. 사용자가 S3에 파일을 업로드 or 다운로드 시 발생

  • < 암호화 방법 >
  • SSL(Secure Socket Layer)인터넷 사이트 주소 앞에 https가 붙어 해당 사이트는 안전함으로 알림
  • TLS(Transport Layer Security) : SSL에서 파생되었으나 더 뛰어난 보안을 가지고 있음
  • 사용자의 개입 없이 AWS 내부에서 직접 관리

 

 

2. 아무런 동작이 없을 시

 

* SSE : Server-Side Encryption


1. SEE-S3  

S3 버켓에 저장되어있는 모든 Object들은그들만의 고유한 Key를 가지고 있지만

  • Master Key 존재. 
  • 일정 시간마다 Key 값을 변경
  • 키값은 AES-256bit로 고정

2. SSE-KMS

  • AWS에서 일괄적으로 관리
    누가 언제 어떻게 암호를 풀었는지에 대한 기록이 저장 체계적인 관리 가능

3. SSE-C

  • 사용자가 암호 키를 직접 다룰 수 있음 == 사용자가 변경 가능

 


 

 

# S3 암호화 과정

 

data에 대한 정보를 나타네는 metadata를 예시로 들어보겠따.

 

<metadata>

*아래 나타날 정보는 모두 허위 정보임을 미리공지*

PUT /SKZ-image.jpg HTTP/1.1                                    -> 파일을 S3에 업로드 하여 PUT 요청이 생성
Host: HaeTooStop.s3.<Region>.amazonaws.com       -> 호스트 주소. 여기에 파일이 업로드 될 거임
Date: Thu, 12 Feb 2020 14:26:00 GMT                        -> PUT 요청 시간
Authorization: authorization string
Content-Type: text/plain
Content-Length: 82253
x-amz-meta-author: WZNT
Expect: 100-continue
x-amz-server-side-encryption-parameter: AES-256     -> 암호화 헤더
[82253 bytes of object data]

 

- x-amz-server-side-encryption-paramerer

  • S3에 파일 업로드 시 위와 같은 헤더가 있을 경우
  • S3는 사용자로부터 암호화 요청을 받음으로 간주하여 암호화 작업을 진행.

- AES-256

  • S3에서 임의로 암호화 알고리즘 유형을 정해줄 수 있는 데 AES-256으로 지정했음을 metadata를 통해 확인 가능

 

 

단비는 암호화 된 파일만 Bucket에 올리거 시프알어ㅏ락러ㅏ러낟거나어간어란어란ㅇ

 

=> Bucket 정책 설정하면 가능.

 

 


 

그럼

오늘도 쪼은 하루

오쫀하!!!!

 

에잇!!!!

728x90