S3를 리전 내에 배치해서 파일을 관리할 수 있도록 구현해 보자
버킷 생성
S3 콘솔로 이동해서 버킷을 생성해 준다.
리전의 경우 서울로 선택해 주면 되는데, 나는 디폴트로 서울로 설정되어 있다. 그리고 버킷이름의 경우 중복되지 않는 이름으로 입력해 주어야 한다. 기존 버킷에서 설정 복사는, 말 그대로 기존 버킷을 복사하는 것이다. 새로 만드는 것이기 때문에 건너뛰어준다.
객체 소유권, 액세스 제어 목록 ACL은 비활성화 해주었다. ACL비활성화 됨은 객체에 대한 액세스 권한을 버킷 정책을 사용해서 관리하는데 중점을 두겠다는 의미이다.
이렇게 해두면 권한 관리를 중앙 집중화하여 일관되고 관리하기 쉬운 보안 구조가 된다.
퍼블릭 엑세스 차단에 대해서는, 모든 퍼블릭 액세스를 차단해 준다.
버킷 버전 관리는 비활성화해주고 아래로 넘어가면, 기본 암호화 설정이 있다.
- SSE-S3는 서버에서 암호화를 하고 S3가 키를 관리하는 방식이다.
- SSE-KMS 역시 서버에서 암호화를 하고 KMS라는 AWS 서비스에서 키를 관리한다.
- DSSE-KMS는 가장 최신에 생긴 기능으로 이중 계층으로 암호화하는 방법이다.
실습에서는 무료이면서, 관리하기 쉬운 SSE S3를 선택했다.
이제 버킷을 만들고, 만든 버킷을 클릭하면 객체가 보이는 화면으로 이동된다.
객체 업로드
객체 업로드를 위해, 바탕화면에 아무 파일이나 드래그 앤 드롭을 하면 아래의 화면이 나오게 된다. 이제 업로드를 누르면 된다.
업로드가 완료되면, 업로드된 파일을 클릭하면 객체애 대한 상세 정보를 볼 수 있다. 권한, 버전, 객체 잠금, 암호화등의 설정을 볼 수 있다. 오른쪽에 OPEN을 누르면 파일이 열린다.
퍼블릭 액세스를 차단하였는데, URL을 통한 접근이 가능한 이유는 URL뒤쪽에 난수로된 토큰값이 프리사이드 URL로 사전에 서명된 URL이다.
그래서, 오브젝트 URL을 사용해 권한이 없는 사용자의 접근은 차단하는 URL을 복사할 수도 있다.
버킷 권한 수정
버킷의 정책을 수정해서 앞서 만든 객체의 URL에 권한이 없는 일반 유저도 접근할 수 있도록 수정해 보자.
버킷은 권한 탭으로 가서 버킷 정책의 수정을 눌러준다.
그럼 아래와 같은 화면이 뜨는데, 여기서 버킷의 정책을 생성할 수 있다. 버킷 ARN을 복사한 후, 우측 상단의 정책 생성기를 눌러준다.
테스트를 위해서 정책 타입을 S3 버킷으로 선택하고 전체 공개 설정을 위해 Principal에 와일드카드, Acction에 et Object를 선택해 준다. 아까 복사한 ARN을 붙여 넣고 add statement를 클릭하고 입력한 값들에 대한 확인 후 Policy를 눌러준다.
그럼 코드가 나오게 되는데 복사해서, 앞서 진행하던 정책 부분에 넣어주면 된다. Resource 뒤에 /*을 붙여 주었는데, 그냥 버킷 이름만 사용하게 되면 액션에 대한 대상은 버킷이 되지만, Get Object Action은 대상이 객체여야 하기 때문이다.
저장하려고 하면 퍼블릭 액세스 차단 설정이 활성화되어있어 경고가 발생한다. 와일드 카드를 입력하였기 때문이다.
이 문제를 해결하기 위해 퍼블릭 액세스 제어를 비활성화진행하면 된다. 테스트를 위해 임시로 비활성화 한것이기 때문에 추후에 다시 퍼블릭 엑세스 제어를 활성화해줘야 한다.
'Django > 인프라' 카테고리의 다른 글
[AWS] 스토리지 클래스와 Lifecycle (0) | 2024.10.14 |
---|---|
[AWS] S3 - 버전 관리 (0) | 2024.10.14 |
[AWS] S3란 무엇인가? (0) | 2024.10.14 |
[AWS] 연결 최적화를 위한 RDS Proxy (0) | 2024.10.11 |
[AWS] RDS 고가용성 확보를 위한 Multi AZ (1) | 2024.10.11 |