Amazon S3는 클라우드 기반의 데이터 저장 및 관리 서비스입니다.

 

S3는 필요에 따라 데이터 저장 용량을 확장할 수 있어 기업의 성장에 따라 유연하게 대응할 수 있습니다.

데이터의 내구성과 가용성을 보장하여 중요한 데이터의 안전성을 확보합니다. S3는 데이터를 여러 복제본으로 저장하고 장애 발생 시에도 데이터에 접근할 수 있도록 합니다.
보안 측면에서 S3는 다양한 암호화 옵션과 액세스 제어 기능을 제공하여 데이터의 안전성을 강화합니다. 객체 수준 및 버킷 수준에서 암호화를 적용하고 필요한 사용자에게만 액세스 권한을 부여할 수 있습니다.

S3는 데이터의 간편한 관리를 지원합니다. 데이터를 구조화하여 저장하고 폴더 및 버킷 구조를 사용하여 데이터를 조직화할 수 있습니다. 이를 통해 데이터의 분류와 탐색이 용이해집니다.
S3는 비용 효율성을 제공합니다. Pay-as-you-go 모델을 채택하여 필요한 용량만큼 비용을 지불하고 초기 투자 없이 데이터를 저장하고 관리할 수 있습니다. 또한 수명 주기 관리 기능을 통해 오래된 데이터를 저비용 스토리지로 자동 이관하여 비용을 절감할 수 있습니다.

이러한 다양한 장점으로 인해 Amazon S3는 기업과 개발자에게 안전하고 효율적인 데이터 저장 및 관리 솔루션으로 많은 사랑을 받고 있습니다.

 

 

 

 

Amazon S3 버킷 작성하기

 

 

1. Amazon S3 > Buckets에서 Create bucket을 클릭

 

 

2. 버킷 이름과 리전을 설정

버킷명은 Amazon S3 전체에서 유니크한 이름을 설정해야 합니다.

리전은 한국에서 사용한다면 서울로 설정하는 것이 좋습니다.

 

 

3. Object Ownership설정

ACLs disabled (recommended)
이 옵션을 선택하면 객체에 대한 ACL(Access Control List)을 사용하지 않고, 객체의 액세스 권한을 관리할 수 없습니다.
객체의 액세스 권한은 일반적으로 버킷 수준의 정책(policy)이나 버킷의 기본 ACL(default ACL)에 의해 결정됩니다.
이 옵션은 일반적으로 버킷 수준의 정책을 사용하여 액세스 제어를 구성하는 경우에 유용합니다.


ACLs enabled
이 옵션을 선택하면 객체에 대한 ACL을 사용하여 액세스 권한을 직접 설정할 수 있습니다.
객체의 ACL은 객체 수준에서 액세스 권한을 세밀하게 제어할 수 있는 방법입니다.
개별 객체의 ACL을 설정하여 특정 사용자, 그룹 또는 퍼블릭(public)에 대한 읽기/쓰기/삭제 등의 권한을 지정할 수 있습니다.
이 옵션은 객체별로 다른 액세스 권한이 필요한 경우 유용합니다. 예를 들어, 특정 이미지나 문서를 퍼블릭으로 공개하고 나머지 객체는 비공개로 유지하는 경우에 활용할 수 있습니다.


요약하면, "ACL 사용 중지됨"은 객체에 대한 액세스 제어를 관리하지 않고 버킷 수준의 정책을 사용하여 액세스를 제어하는 옵션입니다. 반면에 "ACL 사용됨"은 객체별로 세밀한 액세스 제어를 위해 객체의 ACL을 사용하는 옵션입니다. 선택하는 옵션은 객체 액세스 제어의 필요성과 복잡성에 따라 결정할 수 있습니다.

 

쉽게 설명해서 버킷은 창고, 버킷의 객체를 상자라고 했을 때, ACL은 상자에 대한 개별 접근권한을 설정할 수 있는 옵션입니다. 하나의 버킷에 퍼블릭 문서와 프라이빗 문서가 같이 존재할 경우 사용할 수 있습니다. 하지만  버킷 내부에서 퍼블릭 문서와 프라이빗 문서를 같이 관리하는 것은 일반적이지 않기 때문에 ACLs disabled이 권장됩니다.

 

 

4. 버킷에 대한 접근 권한을 설정

버킷의 공개 액세스를 차단하는 설정입니다. 

Block all public access를 활성화하면, 버킷의 모든 객체에 대한 공개 액세스가 차단됩니다. 이는 인터넷을 통해 버킷의 객체에 접근할 수 없음을 의미합니다. 이 설정을 사용하면 실수로 공개 액세스가 설정되는 것을 방지하고, 보안을 강화할 수 있습니다.

버킷의 내용물을 외부에 공개하고 싶은 경우 이 옵션을 해제해야 합니다.

예를 들어서 사진을 업로드 한 후 사진을 웹사이트에 배포하고 싶다면 이 옵션을 해제해야 합니다.

 

 

5. 버킷 버전 관리

Bucket Versioning(버킷 버전 관리)은 버킷 내의 객체에 대한 버전 관리를 가능하게 합니다. 버전 관리가 활성화된 버킷에서는 객체의 각 업데이트가 새로운 버전으로 저장되며, 이전 버전의 객체도 보관됩니다.

 

Bucket Versioning을 활성화하면 다음과 같은 이점이 있습니다

객체 버전 관리

버전 관리가 활성화된 버킷에서는 같은 키(객체 이름)를 가진 객체의 각 업데이트가 새로운 버전으로 저장됩니다. 이전 버전의 객체도 유지되므로, 이전 상태로 롤백하거나 특정 버전의 객체를 검색할 수 있습니다.

복원 및 복구

버전 관리를 사용하면 실수로 삭제된 객체를 복원할 수 있습니다. 삭제된 객체는 버킷에서 완전히 제거되지 않고, 삭제 표시된 상태로 남아있게 됩니다. 필요한 경우 삭제 표시를 해제하여 객체를 복구할 수 있습니다.

보안 및 규정 준수

버전 관리는 데이터의 무결성과 보존을 강화하는 데 도움이 됩니다. 객체의 각 버전은 변경되지 않고 보존되므로 데이터의 무결성이 보장됩니다. 또한, 버전 관리는 규정 준수 요구 사항을 충족하는 데 도움이 될 수 있습니다.

Bucket Versioning을 활성화하면 객체의 버전 관리에 따른 추가 요금이 발생할 수 있으므로, 비용 측면도 고려해야 합니다. 또한, 버전 관리가 활성화된 버킷에서는 객체를 삭제할 때도 삭제 표시된 상태로 남으므로, 주의해야 합니다.

 

 

6. 태그 설정

S3 버킷을 생성할 때, 태그(Tag) 옵션을 사용할 수 있습니다. 태그는 버킷에 메타데이터(Key-Value 쌍)를 추가하는 방법입니다. 이 메타데이터는 버킷에 대한 추가 정보를 제공하고, 정렬, 필터링, 비용 추적 등의 용도로 사용됩니다.

태그를 사용하면 버킷을 더욱 효과적으로 관리할 수 있습니다. 예를 들어, 버킷에 대한 소유자, 프로젝트명, 환경 구분, 비용 추적용 부서 등을 태그로 추가할 수 있습니다. 이렇게 태그를 사용하면 특정 속성이나 구분에 따라 버킷을 식별하고, 필요한 정보를 검색하고, 비용 추적을 할 수 있습니다.

 

태그는 나중에 필요에 따라 수정하거나 제거할 수도 있습니다.

 

 

7. 암호화옵션 설정

Default encryption(기본 암호화) 옵션은 S3 버킷에 객체(Object)를 업로드할 때 자동으로 암호화를 적용하는 기능입니다. 이를 통해 데이터의 기본적인 보안 수준을 강화할 수 있습니다.

Default encryption을 활성화하면 S3 버킷에 업로드되는 모든 객체가 자동으로 암호화됩니다. 이는 데이터의 기밀성을 보호하고 외부에서의 무단 액세스로부터 보호하는 데 도움이 됩니다. AWS는 다양한 암호화 옵션을 제공하며, Default encryption을 사용하면 이러한 암호화 옵션을 편리하게 적용할 수 있습니다.

 

Default encryption을 활성화하면 개발자나 사용자가 일일이 암호화를 구현하지 않아도 됩니다. 모든 객체가 자동으로 암호화되므로 보안 위험을 최소화할 수 있습니다. 또한, Default encryption을 적용하더라도 필요에 따라 추가적인 암호화 옵션을 적용할 수도 있습니다.

 

SSE-S3 (Server Side Encryption with S3)
SSE-S3는 AWS S3 서비스에서 제공하는 서버 측 암호화 옵션입니다. SSE-S3를 선택하면 S3 서버가 객체를 자동으로 암호화하여 저장합니다. 이때 사용되는 암호화 키는 S3가 자동으로 관리하며, 암호화된 객체를 복호화할 필요가 있는 경우에도 자동으로 복호화됩니다. SSE-S3를 사용하면 데이터의 기밀성을 강화할 수 있습니다.

SSE-KMS (Server Side Encryption with AWS Key Management Service)
SSE-KMS는 AWS Key Management Service(KMS)를 사용하여 S3 객체를 암호화하는 옵션입니다. SSE-KMS를 선택하면 KMS가 관리하는 키를 사용하여 객체를 암호화합니다. 이는 고객이 직접 암호화 키를 관리하고 KMS를 통해 키를 사용하여 객체를 암호화하고 관리할 수 있음을 의미합니다. SSE-KMS는 높은 보안 요구 사항을 충족시키는 데에 사용될 수 있습니다.

 

DSSE-KMS(Dual-layer server-side encryption with AWS Key Management Service keys)

SSE-KMS(Server Side Encryption with AWS Key Management Service)의 확장된 버전입니다. DSSE-KMS는 SSE-KMS와 SSE-S3를 함께 사용하여 두 단계의 암호화를 적용하는 방식입니다.

DSSE-KMS를 사용하면 먼저 SSE-KMS를 통해 S3 객체를 암호화합니다. 이때 KMS에서 관리하는 암호화 키를 사용하여 객체를 암호화합니다. 그리고 암호화된 객체는 다시 SSE-S3를 사용하여 한 번 더 암호화됩니다. 이런 방식으로 DSSE-KMS는 두 단계의 암호화를 적용하여 보다 강력한 보안을 제공합니다.

두 단계의 암호화는 서로 다른 키를 사용하고 각각의 암호화 단계를 수행합니다. 따라서 객체를 복호화하기 위해서는 암호화에 사용된 두 개의 키를 모두 제공해야 합니다. 이는 데이터의 보안성을 더욱 강화하고 외부로부터의 무단 액세스로부터 안전하게 데이터를 보호하는 데 도움이 됩니다.

DSSE-KMS는 보다 높은 수준의 보안 요구 사항을 충족시키기 위해 선택할 수 있는 옵션입니다. 민감한 데이터를 다루는 환경에서 사용하여 데이터의 기밀성과 무결성을 강화할 수 있습니다. AWS KMS를 활용하여 관리되는 키를 사용하므로 키의 생성, 관리, 회전 등을 통해 데이터 보호 정책을 유연하게 조정할 수 있습니다.

 

Bucket Key

Bucket Key를 사용하여 SSE-KMS(Server Side Encryption with AWS Key Management Service)를 활성화하면 AWS KMS(Key Management Service) 호출을 줄여 암호화 비용을 절감할 수 있습니다. S3 Bucket Key는 DSSE-KMS(Dual-layer server-side encryption with AWS Key Management Service keys)에는 지원되지 않습니다.

 

Disable (비활성화)
SSE-KMS 또는 DSSE-KMS의 경우 "Disable"를 선택하면 암호화가 비활성화됩니다. S3 버킷에 업로드되는 객체는 암호화되지 않으며, 추가적인 보안 계층이 적용되지 않습니다. 데이터의 기밀성을 강화하거나 외부로부터의 무단 액세스로부터 보호하기 위해서는 다른 암호화 옵션을 사용해야 합니다.

Enable (활성화)
SSE-KMS의 경우 "Enable"을 선택하면 S3 Bucket Key를 사용하여 암호화를 활성화할 수 있습니다. S3 Bucket Key는 KMS에서 관리하는 키로 S3 객체를 암호화하는 데 사용됩니다. S3 Bucket Key를 사용하면 암호화에 필요한 AWS KMS 호출을 줄일 수 있으므로 암호화 비용을 절감할 수 있습니다.

 

SSE-S3를 선택하고 Bucket Key를 비활성화

SSE-S3를 선택하고 Bucket Key를 사용하는 것은 의미가 없습니다. SSE-S3는 Amazon S3가 자체적으로 관리하는 키를 사용하여 서버 측 암호화를 수행하는 옵션입니다. 이 경우 Bucket Key를 사용하더라도 별다른 효과가 없습니다. Bucket Key는 주로 (SSE-KMS)와 함께 사용되어 비용을 절감하고 암호화 작업을 효율적으로 처리하는 데 도움을 줍니다. 따라서 SSE-S3를 선택할 때는 Bucket Key를 사용하지 않아도 됩니다.

 

 

8. 고급 설정

Advanced settings(고급 설정)는 AWS S3 버킷에서 제공되는 추가적인 설정 옵션을 의미합니다. 이러한 설정을 통해 데이터의 보안, 접근 제어, 복제 등 다양한 기능을 구성할 수 있습니다.

+ Recent posts