시작하기 / 실습 / ...

S3 버전 관리, S3 객체 잠금, S3 복제를 사용하여 실수로 인한 삭제 또는 애플리케이션 버그로부터 Amazon S3의 데이터 보호

자습서

개요

Amazon S3는 업계 최고의 확장성, 데이터 가용성, 보안, 성능 및 99.999999999%의 데이터 내구성을 갖춘 객체 스토리지 서비스입니다. 그러나 아무리 내구성이 뛰어난 스토리지라도 인적 오류 또는 소프트웨어 버그로 인한 애플리케이션 손상이나 우발적인 데이터 삭제를 막을 수는 없습니다. 랜섬웨어 이벤트가 증가함에 따라 비즈니스 규모와 관계없이 모든 고객이 Amazon S3에 있는 중요 데이터에 대한 악의적인 변조를 막을 추가적인 보호 옵션을 검토하고 있습니다.

다른 데이터와 마찬가지로, 백업하고 악의적이거나 실수로 인한 삭제를 방지하는 보호 장치를 마련하는 것이 가장 좋습니다. 이 Amazon S3 시작하기 안내서는 Amazon S3 버킷에 저장된 모든 객체의 모든 버전을 보존, 검색, 복원할 수 있는 Amazon S3 버전 관리에 대한 모범 사례를 따르는 방법을 보여줍니다. 그리고 S3 버전 관리에 Amazon S3 객체 잠금 기능을 추가하여 일정 시간 동안 또는 무기한으로 데이터를 삭제하거나 덮어쓰는 것을 방지할 수 있습니다. Amazon S3 복제는 다중 리전 보호 목적으로 다른 AWS 리전에 추가 데이터 사본을 생성하기 위해서 S3 버전 관리 및 S3 객체 잠금과 함께 작동하여 AWS 리전과 개별 AWS 계정 간에 객체를 자동으로 복사합니다. 마지막으로, Amazon S3 스토리지 렌즈를 사용하여 현재 데이터 보호 수준과 이러한 기능의 사용량을 단일 대시보드로 가져와 모두 한눈에 볼 수 있습니다.

학습 목표

  • Amazon S3 버킷 생성
  • S3 버전 관리를 활성화하여 객체 덮어쓰기 방지
  • 실수로 객체가 삭제되지 않도록 S3 객체 잠금 구성
  • S3 스토리지 렌즈를 사용하여 S3 버킷의 데이터 보호 상태 검토

사전 요구 사항

이 자습서를 완료하려면 AWS 계정이 필요합니다. 새 AWS 계정을 만들고 활성화하는 방법에 대한 자세한 내용은 이 지원 페이지를 참조하세요.

참고: S3 객체 잠금을 시연하고 있기 때문에 이 실습의 데이터는 생성된 후 1일이 지나야 삭제할 수 있습니다.

 AWS 경험

초보자

 소요 시간

30분

 완료 비용(무료 지표 포함)

 필요 사항

AWS 계정

 사용 서비스

 최종 업데이트 날짜

2022년 10월 3일

구현

1단계: Amazon S3 버킷 생성

1.1 - Amazon S3 콘솔에 로그인

  • 아직 계정을 만들지 않은 경우 AWS 계정을 만듭니다.
  • 계정 정보를 사용하여 AWS Management Console에 로그인합니다.
  • AWS Console 서비스 검색 창에 S3를 입력합니다. 서비스 검색 결과 섹션에서 S3를 선택합니다.

이 자습서 내의 스크린샷을 클릭하면 이미지가 확대됩니다.

1.2 - S3 버킷 생성

  • 왼쪽 탐색 메뉴에서 버킷을 선택한 다음 버킷 섹션에서 버킷 생성을 선택합니다.

1.3

  • 버킷에 사용할 알기 쉬운 이름을 입력합니다. 버킷 이름은 모든 AWS 계정에서 전역적으로 고유합니다. 선택한 이름에 오류가 발생하면 다른 조합을 시도해 보세요. 그리고 버킷을 생성할 AWS 리전을 선택합니다.

1.4

  • 다음으로, 객체 소유권 섹션에서 ACL 사용 중지 상태로 기본 설정을 유지합니다. 각 객체에 대해 개별적으로 액세스를 제어해야 하는 특별한 경우를 제외하고는 ACL(액세스 제어 목록) 사용을 중지하는 것이 좋습니다. 객체 소유권을 사용하면 ACL 사용을 중지하고 액세스 제어 정책을 사용할 수 있습니다. 자세한 정보는 Amazon S3 사용 설명서 페이지를 방문하세요.

 1.5

  • 이 버킷의 퍼블릭 액세스 차단 설정 섹션에서는, 기본 퍼블릭 액세스 차단 설정이 이 워크로드에 적합하므로 기본 설정을 그대로 둡니다.

1.6 - 버전 관리 활성화

  • 다음으로 버킷 버전 관리 섹션에서 버킷 버전 관리 활성화를 선택해야 합니다. Amazon S3의 버전 관리는 한 객체의 여러 변형을 동일한 버킷에 보관하는 방법입니다. S3 버전 관리 기능을 사용하여 버킷에 저장된 모든 객체의 모든 버전을 보존, 검색, 복원할 수 있습니다. S3 버전 관리를 사용하면 의도하지 않은 사용자 작업과 애플리케이션 오류 모두에서 더욱 쉽게 복구할 수 있습니다. 버킷에 대해 버전 관리 사용을 설정한 후, Amazon S3가 동일한 객체에 대한 쓰기 요청을 동시에 여러 개 수신하면 해당 객체를 모두 저장합니다.

1.7 - 기본 암호화 활성화

  • 이제 기본 암호화 섹션에서 버킷에 대한 기본 암호화를 활성화합니다. 이 설정은 업로드 프로세스 중에 저장 시 암호화 세부 정보를 정의하지 않은 버킷에 업로드하는 객체에 적용됩니다. 이 워크로드의 경우 서버 측 암호화에서 활성화를 선택합니다. 그런 다음 암호화 키 유형에서 Amazon S3 관리형 키(SSE-S3)를 선택합니다. SSE-S3가 워크로드 요구 사항을 충족하지 못하는 경우 AWS Key Management Service(AWS KMS)를 사용할 수도 있습니다. Amazon S3에서 AWS KMS가 어떻게 사용되는지에 대한 자세한 정보는 AWS Key Management Service 개발자 안내서를 참조하세요.

1.8

  • 다음으로, 고급 설정 섹션의 객체 잠금에서 활성화를 선택합니다.
  • S3 객체 잠금을 통해 Write-Once-Read-Many(WORM) 모델을 사용하여 객체를 저장할 수 있습니다. S3 객체 잠금은 일정 시간 동안 또는 무기한으로 객체를 삭제하거나 덮어쓰지 못하도록 하는 데 도움이 됩니다. S3 객체 잠금은 WORM 스토리지를 요구하는 규제 요건을 충족하거나, 객체 변경 및 삭제 방지를 위한 보호 계층을 하나 더 추가하는 데 사용할 수 있습니다.
  • 이 단계는 단순히 버킷에서 객체 잠금 사용을 설정하는 단계라는 점에 유의하세요. 보존 모드보존 기간과 같은 특정 설정은 자습서 뒷부분에서 지정합니다.
  • 버킷 생성을 선택하여 S3 버킷을 생성합니다.

2단계: S3 버전 관리 설정

2.1 - 객체 업로드

  • 워크스테이션에서 Version 1이라는 단어가 포함된 텍스트 파일을 만들어 워크스테이션에 저장합니다.

2.2

  • Amazon S3 콘솔에서, 1단계에서 생성한 버킷을 검색하고 버킷 이름을 선택합니다.
  • 다음으로, 객체 탭을 선택합니다. 그런 다음 객체 섹션에서 업로드를 선택합니다.

2.3

  • 그런 다음 업로드 섹션에서 파일 추가를 선택합니다. 로컬 파일 시스템으로 이동하여 위에서 만든 테스트 파일을 찾습니다. 해당 파일을 선택하고 열기를 선택합니다. 해당 파일이 파일 및 폴더 섹션에 나열됩니다. 나머지 옵션을 기본 설정으로 그대로 두고 업로드 버튼을 선택합니다.

2.4

  • 파일 업로드 작업이 완료되면 업로드 성공 여부를 나타내는 상태 메시지가 표시됩니다. 이 예시에서는 파일이 성공적으로 업로드되었습니다. 그런 다음, 닫기를 선택합니다.
  • 이제 S3 콘솔에서 객체를 볼 수 있습니다.

2.5

  • 생성한 파일을 워크스테이션에서 편집합니다. 텍스트를 Version 2로 변경한 다음 동일한 파일 이름으로 저장합니다. 2.2단계~2.4단계를 반복하여 Amazon S3에 업데이트된 파일을 업로드합니다.

2.6

  • 버킷에 있는 객체의 버전 목록을 보려면 버전 보기를 선택합니다. 콘솔에는 각 객체 버전에 대해 고유한 버전 ID, 객체 버전이 생성된 날짜 및 시간, 기타 속성이 표시됩니다. 

S3 객체 버전 관리를 사용하도록 설정했으므로 해당 객체의 모든 버전이 계속해서 Amazon S3 버킷에 보존되며 검색하거나 복원할 수 있습니다. S3 버전 관리 사용을 설정하면 Amazon S3 버킷 소유자만이 버전을 영구적으로 삭제할 수 있습니다. 객체에서 DELETE 작업이 수행되면 이후의 단순(버전 관리되지 않은) 요청은 더 이상 객체를 검색하지 않지만, 이전 버전으로 S3에 남아 있습니다.

버전 관리 사용을 설정한 경우 단순 DELETE는 객체를 영구적으로 삭제할 수 없습니다. 대신 Amazon S3가 버킷에 삭제 마커를 삽입하면 해당 마커가 새 ID를 가진 객체의 현재 버전이 됩니다. 

객체를 최신 버전이 아닌 상태로 유지하면 스토리지 비용이 증가할 수 있습니다. 수명 주기 규칙을 사용하여 객체의 여러 버전에 대한 저장 기간과 비용을 관리할 수 있습니다. 이러한 이전 버전을 영구적으로 제거하거나 더 낮은 스토리지 비용으로 추가 보호 기간을 제공하도록 수명 주기 규칙을 구성할 수 있습니다. 또한 모든 이전 버전을 저렴한 비용으로 Amazon S3 Glacier Instant Retrieval 스토리지 클래스 또는 Amazon S3 Glacier Flexible Retrieval 스토리지 클래스에 아카이브하고 100일 후 삭제하는 수명 주기 규칙을 설정할 수 있습니다. 이렇게 하면 데이터의 모든 변경 사항을 롤백할 수 있는 100일의 기간이 생길 뿐만 아니라 스토리지 비용을 절감할 수 있습니다.

최상위 객체의 왼쪽에 있는 확인란을 선택하고 열기를 선택합니다. 이 객체는 파일의 최신 버전을 나타내며 Version 2라고 표시되어야 합니다. 이전 버전의 객체에서 이 프로세스를 반복하고 Version 1이라고 표시되는지 확인합니다.

2.7 - 객체 삭제 시연

  • 버전 목록을 축소하려면 버전 보기를 끕니다. 

텍스트 입력 필드delete를 입력하고 객체 삭제 버튼을 선택합니다.

  • 닫기를 선택합니다.
  • 그러면 객체 탭에서 객체가 삭제된 것으로 나타납니다.
  • 버전 표시를 켭니다. 이제 최상위 객체가 유형 열 아래에 삭제 마커로 나열되지만, 두 버전의 객체는 여전히 사용할 수 있습니다.

2.8 - 객체 복원 시연

  • 객체를 복원하려면 최상위 객체의 확인란을 선택하여 삭제 마커를 삭제합니다. 그런 다음 삭제를 선택합니다.
  • 텍스트 입력 필드permanently delete를 입력하고 객체 삭제를 선택합니다.
  • 닫기를 선택합니다.
  • 삭제 마커를 삭제한 뒤 객체가 복원되었습니다.
  • 최상위 객체의 왼쪽에 있는 확인란을 선택하고 열기를 선택합니다. 이 객체는 Version 2로 열려야 합니다.
  • 이전 버전 객체의 왼쪽에 있는 확인란을 선택하고 열기를 선택합니다. 이 객체는 Version 1로 열려야 합니다.

2.9 - 특정 버전의 객체 영구 삭제

삭제 마커를 만들지 않고 특정 버전의 객체를 삭제할 수도 있습니다. 다음 단계에서는 최신 버전의 객체를 삭제합니다.

  • 버전 보기 토글이 켜진 상태에서 최상위 객체의 왼쪽에 있는 확인란을 선택하고 삭제를 선택합니다.
  • 텍스트 입력 필드permanently delete를 입력하고 객체 삭제를 선택합니다.
  • 이제 최신 버전의 객체를 삭제했습니다.
  • 이를 확인하려면 남아 있는 객체의 왼쪽에 있는 확인란을 선택하고 열기를 선택합니다. 
  • 위를 수행하면 브라우저에 Version 1이라는 텍스트가 있는 새 탭이 브라우저에 열립니다.

3단계: S3 객체 잠금 설정

3.1

  • 버킷 수준에서 세부 기능을 보여 줍니다. 버킷에서 속성을 선택합니다.

3.2

  • 객체 잠금 섹션으로 이동합니다. 그런 다음 편집을 선택합니다.

3.3

  • 기본 보존 섹션에서 활성화를 선택합니다.
  • 기본 보존 모드규정 준수로 설정합니다.
  • 기본 보존 기간텍스트 입력 필드1을 입력하고 드롭다운 상자는 로 둡니다. 그런 다음 변경 내용 저장을 선택합니다.

이제 버킷에 업로드되는 모든 새 객체에 대해 기본 객체 잠금 설정을 지정했습니다. 버킷에 있는 기존 객체는 이러한 설정의 영향을 받지 않습니다. 기존 객체를 잠그려면 S3 배치 작업을 사용할 수 있습니다.

거버넌스 모드에서는 s3:BypassGovernanceRetention 권한이 없다면 객체 버전을 덮어쓰거나 삭제하거나 잠금 설정을 변경할 수 없습니다. S3 콘솔에는 기본적으로 x-amz-bypass-governance-retention:true 헤더가 포함되어 있습니다. 거버넌스 모드로 보호되는 객체를 삭제하고자 하며 s3:BypassGovernanceRetention 권한을 갖고 있다면 작업이 성공합니다. 이러한 이유로 이 자습서에서는 규정 준수 모드를 사용합니다.

규정 준수 모드를 사용하여 객체에 잠금을 설정하면 보존 기간이 만료되기 전까지는 루트 사용자를 비롯한 모든 사용자가 객체 버전을 삭제할 수 없습니다. 또한 보존 모드를 변경할 수 없으며 보존 기간을 단축할 수 없습니다.  

이 자습서에서는 관리 권한이 있는 사용자도 규정 준수 모드로 보호되는 객체를 삭제할 수 없는 이유를 알아봅니다. 잠겨 있어 삭제할 수 없는 객체에는 계속해서 요금이 청구된다는 점에 유의하세요. 이 자습서의 비용을 최소화하려면 기본 보존 기간을 1일로 설정하고 작은 파일만 업로드해야 합니다.

3.4 - 새 객체 업로드

  • 객체 탭에서 업로드를 선택합니다. 

3.5

  • 그런 다음 업로드 섹션의 파일 및 폴더에서 파일 추가를 선택합니다. 로컬 파일 시스템으로 이동하여 테스트에 사용할 작은 파일을 선택한 다음 열기를 선택합니다. 해당 파일이 파일 및 폴더 섹션에 나열됩니다. 나머지 옵션을 기본 설정으로 두고 업로드를 선택합니다.

3.6

  • 파일 업로드 작업이 완료되면 업로드 성공 여부를 나타내는 상태 메시지가 표시됩니다. 이 예시에서는 파일이 성공적으로 업로드되었습니다. 그런 다음, 닫기를 선택합니다.

3.7

  • 객체 탭에서 업로드한 새 테스트 객체를 선택합니다.

객체 속성 탭에서 객체 관리 개요 섹션을 검토합니다. 설정한 객체 잠금 기본값이 객체에 적용되었다는 점에 유의하세요. 또한 새 객체를 업로드할 때 이러한 기본값을 재정의할 수 있으며, 잠긴 객체에 적용되는 보존 날짜를 연장할 수 있지만 줄일 수는 없습니다.

3.8 - 객체 삭제 시도

이 섹션에서는 삭제 마커를 만들지 않고 특정 버전의 객체를 영구적으로 삭제하는 또 다른 방법을 살펴보겠습니다. 

  • 버전 탭을 선택합니다.  
  • 객체 왼쪽에 있는 확인란을 선택한 다음 삭제를 선택합니다.

텍스트 입력 필드permanently delete를 입력하고 객체 삭제를 선택합니다.

  • 객체를 삭제할 수 없다는 오류 메시지가 표시되어야 합니다. 이는 규정 준수 모드에서 객체 잠금을 사용할 때 예상되는 동작입니다. 이 객체를 삭제하려면 보존 기간(여기서는 1일로 설정)이 만료될 때까지 기다려야 합니다.
  • 그리고 닫기를 선택하여 이 창을 종료합니다.

4단계: 추가 S3 데이터 보호 기능 살펴보기

이 자습서의 범위를 벗어나지만 알아두어야 할 두 가지의 다른 S3 데이터 보호 주제가 있습니다.

S3 복제를 사용하면 Amazon S3 버킷 전체에 걸쳐 객체를 비동기식으로 자동 복사할 수 있습니다. 객체 복제를 위해 구성된 버킷은 동일한 AWS 계정 또는 다른 AWS 계정에서 소유할 수 있습니다. 단일 대상 버킷 또는 여러 대상 버킷에 객체를 복제할 수 있습니다. 대상 버킷은 서로 다른 AWS 리전에 있거나 소스 버킷과 동일한 AWS 리전 내에 있을 수 있습니다.

S3 복제를 사용하려면 소스 버킷과 대상 버킷 모두에서 S3 버전 관리를 활성화해야 합니다.  

소스 버킷에 S3 객체 잠금이 활성화된 경우 대상 버킷에도 S3 객체 잠금이 활성화되어 있어야 합니다. 객체 잠금이 설정된 버킷에서 복제를 사용하려면 먼저 AWS Support에 문의해야 합니다. Amazon S3는 보존 정보가 적용된 객체를 복제할 때 복제본에 동일한 보존 제어를 적용하여 대상 버킷에 구성된 기본 보존 기간을 재정의합니다. 소스 버킷의 객체에 보존 제어를 적용하지 않고 기본 보존 기간이 설정된 대상 버킷에 복제하는 경우, 대상 버킷의 기본 보존 기간이 객체 복제본에 적용됩니다. 

로깅 옵션

Amazon S3는 Amazon S3에서 사용자, 역할, 또는 AWS 서비스가 수행한 작업에 대한 레코드를 제공하는 서비스인 AWS CloudTrail과 통합됩니다. CloudTrail은 Amazon S3 콘솔에서의 호출과 Amazon S3 API에 대한 코드 호출을 포함하여 Amazon S3에 대한 API 호출의 일부를 이벤트로 캡처합니다.

서버 액세스 로깅은 버킷에 수행된 요청에 대한 상세 레코드를 제공합니다. 서버 액세스 로그는 많은 애플리케이션에 유용합니다. 예를 들어, 액세스 로그 정보는 보안 및 액세스 감사에 유용할 수 있습니다. 또한 고객 기반에 대해 알아보고 Amazon S3 청구서를 이해하는 데에도 도움이 될 수 있습니다.

AWS Backup을 사용하여 AWS 서비스 및 하이브리드 워크로드에서 데이터 보호를 중앙 집중화하고 자동화하세요. AWS Backup은 정책을 기반으로 대규모 데이터 보호를 간편하고 비용 효율적으로 수행할 수 있는 완전관리형 서비스입니다. 또한 AWS Backup은 데이터 보호에 대한 규정 준수 또는 비즈니스 정책을 지원하는 데 도움이 됩니다.  

Amazon S3는 지원되는 여러 AWS Backup 리소스 중 하나입니다. 또한 AWS Backup은 S3 버전 관리를 활용합니다.

5단계: Amazon S3 스토리지 렌즈로 S3 데이터 보호 지표 보기

Amazon S3 스토리지 렌즈는 Amazon S3에 저장된 데이터의 데이터 보호 상태에 대해 조직 전반적인 가시성을 제공합니다. S3 스토리지 렌즈는 암호화되고, 버전 관리되고, 복제되고, 객체 잠금 설정된 상태의 데이터 비율을 쉽게 표시할 수 있습니다. S3 스토리지 렌즈의 이러한 데이터 보호 가시성은 여러 Amazon S3 버킷, AWS 계정, AWS Organizations 간의 데이터를 통해 확인할 수 있으며, 추가 비용 없이 14일 동안의 기록 데이터 보호 수준으로 즉시 시작할 수 있습니다.

S3 스토리지 렌즈를 사용하여 총데이터양의 백분율로 표시되는 데이터 보호 지표의 요약을 볼 수 있습니다. 여기에는 현재 버전 바이트, 현재 버전이 아닌 바이트, 암호화된 바이트, 복제된 바이트, 객체 잠금 바이트가 포함됩니다.

5.1

  • S3 콘솔의 탐색 창에서 스토리지 렌즈를 찾습니다.
  • 대시보드를 선택한 다음 default-account-dashboard를 선택합니다.

5.2

  • 데이터 보호 탭을 선택하면 버전 관리, 암호화, 복제, 객체 잠금과 관련된 통계를 볼 수 있습니다.

6단계: 정리

다음 단계에서는 이 자습서에서 생성한 리소스를 정리합니다. 사용하지 않는 리소스를 삭제하여 의도하지 않은 비용이 부과되지 않도록 하는 것이 모범 사례입니다.

이 단계를 시도하려면 S3 객체 잠금이 만료될 때까지 1일을 기다려야 한다는 점에 유의하세요.

6.1 - 테스트 객체 삭제  

  • AWS Management Console 세션에서 로그아웃한 경우 다시 로그인합니다. S3 콘솔로 이동하고 탐색 창에서 버킷을 선택합니다. 먼저 테스트 버킷에서 테스트 객체를 삭제해야 합니다. 이 자습서용으로 생성한 버킷의 왼쪽에 있는 라디오 버튼을 선택한 후 비우기를 선택합니다.
  • 버킷 비우기 페이지에서 모든 객체 영구 삭제 확인 입력란에 permanently delete를 입력합니다. 그런 다음 비우기를 선택하여 계속 진행합니다.
  • 그러면 삭제 성공 여부를 나타내는 배너가 표시됩니다. 종료를 선택합니다.

6.2 - 테스트 버킷 삭제

  • 마지막으로, 생성한 테스트 버킷을 삭제해야 합니다. 계정의 버킷 목록으로 돌아갑니다. 이 자습서용으로 생성한 버킷의 왼쪽에 있는 라디오 버튼을 선택한 후 삭제를 선택합니다.
  • 경고 메시지를 살펴봅니다. 이 버킷을 삭제하려면 텍스트 입력 필드 확인 상자에 버킷 이름을 입력하고 버킷 삭제를 선택합니다.

결론

축하합니다! S3 버전 관리 및 S3 객체 잠금을 사용하여 Amazon S3에서 데이터를 보호하는 방법을 알아보고 S3 스토리지 렌즈를 사용하여 이러한 설정을 검토했습니다.

이 페이지의 내용이 도움이 되었나요?

다음 단계

Amazon S3에 대한 자세한 내용은 다음 리소스를 참조하세요.