S3 bucket 생성

Volc·2024년 7월 28일
0

AWS

목록 보기
7/15

S3 bucket 생성하기

S3 bucket을 그냥 생성했는데 보안이 취약하다고 다시 설정 요청을 받음

취약점

취약점 확인 부분은 3가지였다.

  • 버킷의 암호화
  • 암호화 CMK 설정
  • 버킷 쟁책에 SSL Requests Only가 설정되어 있는지 확인

버킷의 암호화

  • 버킷의 암호화는 3가지 중 하나를 선택하게 되어 있다.
    • SSE-S3
      • 가장 기본적인 S3에서 키를 관리하는 서버측 암호화
    • SSE-KMS
      • KMS를 활용한 암호화
      • KMS는 크게 3가지 방식이 있다.
        • AWS Managed key : AWS 서비스들이 KMS를 통해 Key를 받아 내부적으로 자동으로 암호화를 시켜준다. 사용자가 제어할 수 없음.
        • customer managed key(CMK) : 사용자가 직접 key를 생성하고 관리하는 것이다.
        • Custom key stores: key 생성 후 KMS가 key를 관리하지 않고 사용자가 지정하여 독립적으로 관리할 수 있다.
  • S3 버킷 키를 활성화도 하자
    • AWS KMS로의 요청 트래픽을 줄이고 암호화 비용이 절감된다.

CMK 설정

  • CMK를 사용하는 가장 큰 이유는 권한 부여가 가능하다는 점 같다

SSL Requests Only

  • S3는 HTTP와 HTTPS 요청을 모두 허용한다.
  • AWS CLI는 HTTPS를 통해 통신이 이루어지며 나머지는 HTTP를 통해 이루어지므로 암호화되지 않은 HTTP 요청은 MITM(main-in-the-middle)에 취약할 수 있다.
  • 개인 정보 또는 민감한 데이터를 저장하고 있는 S3 버킷은 HTTPS 요청이 아닐 경우 차단하는게 좋다.
  • aws:SecureTransport를 사용하여 SSL Requests Only를 명시적으로 설정할 수 있고 aws:SecureTransport: false 일 경우 Effect: Deny, aws:SecureTransport: true 일 경우 Effect: Allow로 설정해야 한다.
  • 필자는 버킷 정책에 다음과 같이 설정을 추가 했다.
         {
              "Sid": "AllowSSLRequestsOnly",
              "Effect": "Deny",
              "Principal": "*",
              "Action": "s3:*",
              "Resource": [
                  "arn:aws:s3:::full-funnel",
                  "arn:aws:s3:::full-funnel/*"
              ],
              "Condition": {
                  "Bool": {
                      "aws:SecureTransport": "false"
                  }
              }
          }

참고 사이트

profile
미래를 생각하는 개발자

0개의 댓글