S3 보안, Websites

Jihun Kim·2022년 3월 19일
0

aws solutions architect

목록 보기
29/57
post-thumbnail

S3 보안

User based

  • IAM policies: 어떤 API 호출을 허용할 지에 대한 권한을 부여한다.

Resource Based

  • Bucket Policies: S3 콘솔에서 정할 수 있는 버킷 정책으로, 교차 계정의 접근 허용 설정도 가능하다.
  • Object Access Control List (ACL)
  • Bucket Access Control List (ACL)

만약 유저의 IAM permissions가 S3 object에 대한 접근을 허용하거나 recource policy가 허용한다면 IAM 정책은 S3 object에 접근할 수 있는 것으로 간주한다.
- 이 경우, 명백한(explicit) 거부(DENY)는 없다.



S3 bucket policies

  • S3 버킷 정책이 적용 가능한 예
    - 퍼블릭 엑세스 허용
    - 객체가 업로드 될 때 암호화 하도록 만들기
    - 다른 계정의 접근 허용(교차 계정)

그 밖의 다른 S3 보안

  • 네트워킹
    - VPC Endpoints 지원: 인터넷 연결이 허용 되지 않은 인스턴스(private vpc)를 위한 지원
  • 로깅과 감사(audit)
    - S3 access 로그는 다른 S3 버킷에 저장 된다.
    - API 호출은 AWS CloudTrail로 로그 기록을 남길 수 있다.
  • 유저 보안
    - MFA 삭제: 버저닝 되고 있는 버킷의 객체를 삭제할 때는 MFA가 필요하도록 설정할 수 있다.
  • Pre-signed URL
    - AWS의 인증서로 서명된 URL로, 한정된 시간 동안만 유효하다.
    - 예를 들어, 로그인한 유저가 프리미엄 비디오 서비스를 구매한 경우 pre-signed URL이 필요하다.


실습

아래 정책은 S3 bucket > Permissions 탭 > Edit bucket Policy > Policy Generator에서 만들었다.
아래와 같이 정책을 생성한 후 만들어진 json을 Edit bucket Policy에다 붙여 넣으면 된다.

  1. Policy 1


  • condition을 위와 같이 추가하면 'x-amz-server-side-encryption' header가 Null이면 Deny를 하고 어떤 종류의 암호화도 요구하지 않을 것이라는 뜻이다.

  1. Policy 2

  • condition을 위와 같이 추가하면 파일이 업로드 되었고 헤더가 위와 같은 경우 헤더의 value가 AES256와 같지 않은 경우(SSE-S3) 거부한다는 뜻이다.


S3 Websites

  • S3는 static websites를 호스팅 할 수 있으며 이를 www로 접근 가능하도록 만들 수 있다.

먼저 아래와 같이 Static website hosting 설정을 변경해야 한다.

그리고 미리 정한 index, error document를 설정한다.

그러면 아래와 같이 website hosting이 완료 된다.

그런데 그 전에 public access를 허용해 놓아야 한다.

그 다음, 아래와 같이 Resource로 GetObject action을 하는 것을 허용하는 정책 역시 추가해야 한다.

profile
쿄쿄

0개의 댓글