본문 바로가기
AWS/SAA 준비

AWS SAA 합격으로 가는 길 #4: [S3 데이터보호] 마스터하기

by Pacloud 2024. 8. 12.
반응형

안녕하세요, AWS SAA(Solution Architect Associate) 자격증을 준비하시는 여러분!

저는 넥스트클라우드에서 SA로 활동하고 있는 손유림이라고 합니다. 😊

 

문제는 세 가지 단계를 거치며 풀어나갈 거예요:

 

  1. 문제의 요구사항 분석하기
  2. 관련 AWS 서비스 생각하기
  3. 선택지 분석하기

 

자, 그럼 첫 번째 문제부터 살펴볼까요?


문제

회사는 Amazon DynamoDB를 사용하여 고객 정보를 저장하는 쇼핑 애플리케이션을 실행합니다.

데이터 손상의 경우 솔루션 설계자는 15분의 RPO(복구 지점 목표)와 1시간의 RTO(복구 시간 목표)를 충족하는 솔루션을 설계해야 합니다.

이러한 요구 사항을 충족하기 위해 솔루션 설계자는 무엇을 권장해야 합니까?

선택지

1. DynamoDB 전역 테이블을 구성합니다. RPO 복구의 경우 애플리케이션이 다른 AWS 리전을 가리키도록 합니다.

2. DynamoDB 특정 시점으로 복구를 구성합니다. RPO 복구를 위해 원하는 시점으로 복원합니다.

3. 매일 DynamoDB 데이터를 Amazon S3 Glacier로 내보냅니다. RPO 복구를 위해 S3 Glacier에서 DynamoDB로 데이터를 가져옵니다.

4. 15분마다 DynamoDB Amazon Elastic Block Store(Amazon EBS) 스냅샷을 예약합니다. RPO 복구의 경우 EBS 스냅샷을 사용하여 DynamoDB 테이블을 복원합니다.


요구사항에 맞는 서비스

1. Amazon DynamoDB를 사용하여 고객 정보를 저장

  • Amazon DynamoDB: 빠르고 유연한 NoSQL 데이터베이스 서비스로, 고성능의 데이터를 저장하고 관리할 수 있습니다. 특히 대규모의 데이터를 짧은 지연 시간으로 처리할 수 있어 쇼핑 애플리케이션에 적합합니다.
  • DynamoDB Point-in-Time Recovery (PITR): DynamoDB 테이블에 대한 포인트인타임 복구를 지원합니다. 최근 35일 내의 어느 시점이든 테이블을 복구할 수 있습니다.
  • AWS Backup: 관리형 백업 서비스로, DynamoDB 테이블을 포함한 다양한 AWS 리소스의 백업 및 복구를 자동화할 수 있습니다. 복구 시간 목표(RTO)를 충족하기 위해 정기적인 백업과 빠른 복구를 제공합니다.
  • DynamoDB 전역 테이블(Global Tables): 여러 리전에 걸쳐 데이터를 복제하여 고가용성과 재해 복구를 지원합니다. 데이터 손상 시 다른 리전에서 빠르게 복구할 수 있어 RTO를 충족할 수 있습니다.

최적의 정답 선택하기

선택지 1번은 “DynamoDB 전역 테이블을 구성합니다. RPO 복구의 경우 애플리케이션이 다른 AWS 리전을 가리키도록 합니다.”입니다.

 선택지가 정답이 아닌 이유는 이 방법은 RPO와 RTO를 충족할 수 있지만, 요구사항을 간단히 해결하는 다른 옵션이 더 적합할 수 있기 때문입니다.

 

선택지 2번은 “DynamoDB 특정 시점으로 복구를 구성합니다. RPO 복구를 위해 원하는 시점으로 복원합니다.”입니다.

→ 이 선택지는 PITR를 사용하여 복원하는 것을 제안합니다. 데이터 손상 시 특정 시점으로 복구할 수 있어 15분의 RPO와 1시간의 RTO 요구사항을 가장 효과적으로 충족할 수 있습니다.

 

선택지 3번은 “매일 DynamoDB 데이터를 Amazon S3 Glacier로 내보냅니다. RPO 복구를 위해 S3 Glacier에서 DynamoDB로 데이터를 가져옵니다.”입니다.

 선택지가 정답이 아닌 이유는 S3 Glacier에서의 데이터 복구는 시간이 오래 걸리기 때문에 RPO와 RTO 요구사항을 충족하기 어렵기 때문입니다.

 

선택지 4번은 “15분마다 DynamoDB Amazon Elastic Block Store(Amazon EBS) 스냅샷을 예약합니다. RPO 복구의 경우 EBS 스냅샷을 사용하여 DynamoDB 테이블을 복원합니다.”입니다.

→ 선택지가 정답이 아닌 이유는 DynamoDB 데이터를 EBS 스냅샷으로 백업하고 복원하는 것은 비효율적이며, 요구사항을 충족하기 위한 최적의 방법이 아니기 때문입니다.

 

 

문제에 대한 정답은 선택지 2번입니다!

자세한 문제 풀이를 원하신 분은 아래 더보기를 통해 확인해 주세요.

더보기
더보기

첫 번째 과정은 “문제의 요구사항 분석하기”입니다.

이 문제에서는 1가지의 요구사항이 존재해요. 하지만 세부적으로 고려해야 할 사항이 있어요.

 

1. Amazon DynamoDB를 사용하여 고객 정보를 저장

  • 데이터 손상 시 15분의 RPO(복구 지점 목표) 충족
  • 데이터 손상 시 1시간의 RTO(복구 시간 목표) 충족

"RPO (복구 지점 목표) 15분"
RPO는 데이터 손실이 발생했을 때 어느 시점까지의 데이터를 복구할 수 있는지를 나타냅니다. 15분의 RPO는 최대 15분 전의 데이터까지 복구할 수 있다는 의미예요.

 

"RTO (복구 시간 목표) 1시간"
RTO는 시스템이 장애에서 복구되어 정상 작동하기까지 걸리는 시간을 나타냅니다. 1시간의 RTO는 데이터 손상이 발생한 후 1시간 이내에 시스템을 복구하고 정상적으로 작동시킬 수 있다는 의미예요.

 

두 번째 과정은 “요구사항과 관련된 AWS 서비스 생각하기”입니다.

1. Amazon DynamoDB를 사용하여 고객 정보를 저장

  • Amazon DynamoDB: 빠르고 유연한 NoSQL 데이터베이스 서비스로, 고성능의 데이터를 저장하고 관리할 수 있습니다. 특히 대규모의 데이터를 짧은 지연 시간으로 처리할 수 있어 쇼핑 애플리케이션에 적합합니다.
  • DynamoDB Point-in-Time Recovery (PITR): DynamoDB 테이블에 대한 포인트인타임 복구를 지원합니다. 최근 35일 내의 어느 시점이든 테이블을 복구할 수 있습니다.
  • AWS Backup: 관리형 백업 서비스로, DynamoDB 테이블을 포함한 다양한 AWS 리소스의 백업 및 복구를 자동화할 수 있습니다. 복구 시간 목표(RTO)를 충족하기 위해 정기적인 백업과 빠른 복구를 제공합니다.
  • DynamoDB 전역 테이블(Global Tables): 여러 리전에 걸쳐 데이터를 복제하여 고가용성과 재해 복구를 지원합니다. 데이터 손상 시 다른 리전에서 빠르게 복구할 수 있어 RTO를 충족할 수 있습니다.

마지막 과정은 “위의 정보들을 토대로 정답 선택하기”입니다.

선택지 1번은 “DynamoDB 전역 테이블을 구성합니다. RPO 복구의 경우 애플리케이션이 다른 AWS 리전을 가리키도록 합니다.”입니다.

 

  • DynamoDB 전역 테이블 (Global Tables): 글로벌 테이블은 여러 AWS 리전에 걸쳐 데이터를 자동으로 복제하여 고가용성과 재해 복구를 지원합니다. 글로벌 테이블을 통해 여러 리전에 데이터를 복제함으로써 데이터 손상 시 다른 리전으로 빠르게 전환할 수 있습니다. 이는 RTO와 RPO 요구사항을 충족할 수 있습니다. 그러나 이 접근 방식은 추가 비용과 복잡성을 초래할 수 있습니다. 또한, 여러 리전을 사용하지 않는 경우 적합하지 않을 수 있습니다.

이 선택지가 정답이 아닌 이유는 RPO와 RTO를 충족할 수 있지만, 요구사항을 간단히 해결하는 다른 옵션이 더 적합할 수 있기 때문입니다.

 

선택지 2번은 “DynamoDB 특정 시점으로 복구를 구성합니다. RPO 복구를 위해 원하는 시점으로 복원합니다.”입니다.

 

  • DynamoDB Point-in-Time Recovery (PITR): 특정 시점으로 복구(PITR)는 DynamoDB 테이블에 대한 포인트인타임 복구를 지원합니다. 최근 35일 내의 어느 시점이든 테이블을 복구할 수 있습니다. PITR을 통해 데이터 손상 시 최근 35일 내의 특정 시점으로 데이터를 복구할 수 있어 15분의 RPO를 충족할 수 있습니다. 복구 프로세스가 비교적 간단하고 빠릅니다.

이 선택지는 PITR를 사용하여 복원하는 것을 제안합니다. 데이터 손상 시 특정 시점으로 복구할 수 있어 15분의 RPO와 1시간의 RTO 요구사항을 가장 효과적으로 충족할 수 있습니다.

 

선택지 3번은 “매일 DynamoDB 데이터를 Amazon S3 Glacier로 내보냅니다. RPO 복구를 위해 S3 Glacier에서 DynamoDB로 데이터를 가져옵니다.”입니다.

 

  • Amazon S3 Glacier: 저비용 장기 스토리지 서비스로, 데이터 백업 및 보관에 적합합니다. 비용 효율적인 데이터 보관이 가능합니다. 그러나, S3 Glacier에서 데이터를 복구하는 데 시간이 오래 걸릴 수 있으며, 15분의 RPO와 1시간의 RTO를 충족하기 어렵습니다.

이 선택지가 정답이 아닌 이유는 S3 Glacier에서의 데이터 복구는 시간이 오래 걸리기 때문에 RPO와 RTO 요구사항을 충족하기 어렵기 때문입니다.

 

선택지 4번은 “15분마다 DynamoDB Amazon Elastic Block Store(Amazon EBS) 스냅샷을 예약합니다. RPO 복구의 경우 EBS 스냅샷을 사용하여 DynamoDB 테이블을 복원합니다.”입니다.

 

  • Amazon Elastic Block Store (EBS): EBS 스냅샷은 EBS 볼륨의 지점 복사본을 제공하여 데이터를 백업하고 복원할 수 있습니다. EBS 스냅샷을 통해 데이터를 백업할 수 있습니다. 그러나, DynamoDB 데이터를 EBS 스냅샷으로 백업하고 복원하는 것은 일반적인 사용 사례가 아니며, 추가적인 운영 오버헤드를 초래할 수 있습니다. 또한, 15분마다 스냅샷을 생성하는 것은 비용이 많이 들 수 있습니다.

이 선택지가 정답이 아닌 이유는 DynamoDB 데이터를 EBS 스냅샷으로 백업하고 복원하는 것은 비효율적이며, 요구사항을 충족하기 위한 최적의 방법이 아니기 때문입니다.

 

 

이어서 두 번째 문제 살펴볼게요.


문제

회사에는 중요한 데이터가 포함된 Amazon S3 버킷이 있습니다.

회사는 우발적인 삭제로부터 데이터를 보호해야 합니다.

이러한 요구 사항을 충족하기 위해 솔루션 설계자는 어떤 단계 조합을 수행해야 합니까? (두 가지를 선택하세요.)

선택지

1. S3 버킷에서 버전 관리를 활성화합니다.

2. S3 버킷에서 MFA 삭제를 활성화합니다.

3. S3 버킷에 버킷 정책을 생성합니다.

4. S3 버킷에서 기본 암호화를 활성화합니다.

5. S3 버킷의 객체에 대한 수명 주기 정책을 생성합니다.


요구사항에 맞는 서비스

1. 우발적인 삭제로부터 Amazon S3 버킷의 중요한 데이터를 보호

  • S3 버전 관리 (Versioning): S3 버킷의 모든 객체에 대해 버전을 생성하고 저장하여 우발적인 삭제 또는 덮어쓰기에 대비할 수 있는 기능을 제공합니다. 각 객체의 모든 버전이 저장되므로 필요한 경우 이전 버전을 복원할 수 있습니다.
  • S3 객체 잠금 (Object Lock): 객체를 특정 기간 동안 삭제나 덮어쓰지 못하도록 잠그는 기능입니다. 이 기능을 통해 우발적인 삭제를 방지할 수 있습니다.
    • 규정 준수 모드: 보호된 객체 버전은 AWS 계정의 루트 사용자를 포함한 어떤 사용자도 덮어쓰거나 삭제할 수 없습니다.
    • 거버넌스 모드: 특별한 권한이 없는 한 사용자는 객체 버전을 덮어쓰거나 삭제하거나 잠금 설정을 변경할 수 없습니다.
  • S3 MFA 삭제 (MFA Delete): 다중 요소 인증을 통해 객체 삭제를 보호하는 기능입니다. MFA 삭제가 활성화되면 버킷 소유자는 객체를 삭제하거나 버전 관리를 변경하기 위해 MFA 코드를 입력해야 합니다.

최적의 정답 선택하기

선택지 1번은 “S3 버킷에서 버전 관리를 활성화합니다.”입니다.

 이 선택지는 버전 관리를 제안합니다. 이는 객체의 모든 버전을 저장하여 우발적인 삭제에 대한 복구를 가능하게 합니다.

 

선택지 2번은 “S3 버킷에서 MFA 삭제를 활성화합니다.”입니다.

→ 이 선택지는 MFA 삭제를 제안합니다. 이는 추가적인 보안 계층을 제공하여 실수로 인한 삭제를 방지합니다.

 

선택지 3번은 “S3 버킷에 버킷 정책을 생성합니다.”입니다.

 선택지가 정답이 아닌 이유는 버킷 정책은 접근 제어에 중점을 두고 있어, 우발적인 삭제 방지에 직접적인 영향을 미치지 않기 때문입니다.

 

선택지 4번은 “S3 버킷에서 기본 암호화를 활성화합니다.”입니다.

→ 선택지가 정답이 아닌 이유는 기본 암호화는 데이터의 보안을 강화하지만, 우발적인 삭제를 방지하지는 않기 때문입니다.

 

선택지 5번은 “S3 버킷의 객체에 대한 수명 주기 정책을 생성합니다.”입니다.

→ 선택지가 정답이 아닌 이유는 수명 주기 정책은 데이터 관리에 초점을 맞추고 있어, 우발적인 삭제 방지와는 관련이 없기 때문입니다.

 

 

문제에 대한 정답은 선택지 1번과 2번입니다!

자세한 문제 풀이를 원하신 분은 아래 더보기를 통해 확인해 주세요.

더보기
더보기

첫 번째 과정은 “문제의 요구사항 분석하기”입니다.

이 문제에서는 1가지의 요구사항이 존재해요. 

 

1. 우발적인 삭제로부터 Amazon S3 버킷의 중요한 데이터를 보호

 

두 번째 과정은 “요구사항과 관련된 AWS 서비스 생각하기”입니다.

1. 우발적인 삭제로부터 Amazon S3 버킷의 중요한 데이터를 보호

  • Amazon S3(Amazon Simple Storage Service): 확장 가능한 객체 스토리지 서비스로 대량의 데이터를 안전하게 저장하고 관리할 수 있습니다. 높은 내구성과 가용성을 제공하며, 다양한 데이터 관리 기능을 지원합니다.
  • S3 버전 관리 (Versioning): S3 버킷의 모든 객체에 대해 버전을 생성하고 저장하여 우발적인 삭제 또는 덮어쓰기에 대비할 수 있는 기능을 제공합니다. 각 객체의 모든 버전이 저장되므로 필요한 경우 이전 버전을 복원할 수 있습니다.
  • S3 객체 잠금 (Object Lock): 객체를 특정 기간 동안 삭제나 덮어쓰지 못하도록 잠그는 기능입니다. 이 기능을 통해 우발적인 삭제를 방지할 수 있습니다.
    • 규정 준수 모드: 보호된 객체 버전은 AWS 계정의 루트 사용자를 포함한 어떤 사용자도 덮어쓰거나 삭제할 수 없습니다.
    • 거버넌스 모드: 특별한 권한이 없는 한 사용자는 객체 버전을 덮어쓰거나 삭제하거나 잠금 설정을 변경할 수 없습니다
  • S3 MFA 삭제 (MFA Delete): 다중 요소 인증을 통해 객체 삭제를 보호하는 기능입니다. MFA 삭제가 활성화되면 버킷 소유자는 객체를 삭제하거나 버전 관리를 변경하기 위해 MFA 코드를 입력해야 합니다.

마지막 과정은 “위의 정보들을 토대로 정답 선택하기입니다.

선택지 1번은 “S3 버킷에서 버전 관리를 활성화합니다.”입니다.

 

  • S3 버전 관리 (Versioning): 버킷의 모든 객체에 대해 버전을 생성하고 저장하여 우발적인 삭제 또는 덮어쓰기에 대비할 수 있는 기능을 제공합니다. 각 객체의 모든 버전이 저장되므로 필요한 경우 이전 버전을 복원할 수 있습니다. 버전 관리를 통해 우발적으로 삭제되거나 덮어쓰인 객체를 복원할 수 있습니다.

이 선택지는 버전 관리를 제안합니다. 이는 객체의 모든 버전을 저장하여 우발적인 삭제에 대한 복구를 가능하게 합니다.

 

선택지 2번은 “S3 버킷에서 MFA 삭제를 활성화합니다.”입니다.

 

  • S3 MFA 삭제 (MFA Delete): 다중 요소 인증을 통해 객체 삭제를 보호하는 기능입니다. MFA 삭제가 활성화되면 버킷 소유자는 객체를 삭제하거나 버전 관리를 변경하기 위해 MFA 코드를 입력해야 합니다.

이 선택지는 MFA 삭제를 제안합니다. 이는 추가적인 보안 계층을 제공하여 실수로 인한 삭제를 방지합니다.

 

선택지 3번은 “S3 버킷에 버킷 정책을 생성합니다.”입니다.

 

  • S3 버킷 정책: 버킷과 그 안의 객체에 대한 권한을 정의하는 JSON 기반 정책입니다. 이를 통해 특정 사용자나 역할에게만 접근 권한을 부여하거나 제한할 수 있습니다. 그러나, 버킷 정책은 삭제 보호보다는 접근 제어에 더 중점을 둡니다.

이 선택지가 정답이 아닌 이유는 버킷 정책은 접근 제어에 중점을 두고 있어, 우발적인 삭제 방지에 직접적인 영향을 미치지 않기 때문입니다.

 

선택지 4번은 “S3 버킷에서 기본 암호화를 활성화합니다.”입니다.

 

  • S3 기본 암호화 (Default Encryption): S3 버킷에 업로드되는 모든 객체에 대해 자동으로 암호화를 적용하는 기능입니다. 그러나, 암호화는 데이터 보호에 중점을 두지만, 삭제 방지와는 직접적인 관련이 없습니다.

이 선택지가 정답이 아닌 이유는 기본 암호화는 데이터의 보안을 강화하지만, 우발적인 삭제를 방지하지는 않기 때문입니다.

 

선택지 5번은 “S3 버킷의 객체에 대한 수명 주기 정책을 생성합니다."입니다.

 

  • S3 수명 주기 정책 (Lifecycle Policies): 객체의 수명을 정의하고, 일정 시간이 지나면 자동으로 특정 스토리지 클래스로 전환하거나 삭제하는 규칙을 설정할 수 있습니다. 그러나, 수명 주기 정책은 데이터 보존 및 관리에 중점을 두며, 우발적인 삭제 방지와는 직접적인 관련이 없습니다.

이 선택지가 정답이 아닌 이유는 수명 주기 정책은 데이터 관리에 초점을 맞추고 있어, 우발적인 삭제 방지와는 관련이 없기 때문입니다.

 

 

마지막 문제 살펴볼게요.


문제

회사는 Amazon S3에 데이터를 저장하고 데이터가 변경되지 않도록 해야 합니다.

회사는 Amazon S3에 업로드된 새 객체가 회사에서 객체를 수정하기로 결정할 때까지 불특정한 시간 동안 변경 불가능한 상태로 유지되기를 원합니다.

회사 AWS 계정의 특정 사용자만 개체를 삭제할 수 있습니다.

솔루션 설계자는 이러한 요구 사항을 충족하기 위해 무엇을 해야 합니까?

선택지

1. S3 Glacier 볼트를 생성합니다. 개체에 WORM(Write-Once, Read-Many) 볼트 잠금 정책을 적용합니다.

2. S3 객체 잠금이 활성화된 S3 버킷을 생성합니다. 버전 관리를 활성화합니다. 보존 기간을 100년으로 설정합니다. 거버넌스 모드를 새 객체에 대한 S3 버킷의 기본 보관 모드로 사용합니다.

3. S3 버킷을 생성합니다. AWS CloudTrail을 사용하여 객체를 수정하는 모든 S3 API 이벤트를 추적합니다. 알림을 받으면 회사가 가지고 있는 모든 백업 버전에서 수정된 개체를 복원합니다.

4. S3 객체 잠금이 활성화된 S3 버킷을 생성합니다. 버전 관리를 활성화합니다. 객체에 법적 보존을 추가합니다. 객체를 삭제해야 하는 사용자의 IAM 정책에 s3:PutObjectLegalHold 권한을 추가합니다.


요구사항에 맞는 서비스

1. Amazon S3에 데이터를 저장 및 데이터 변경 불가

  • Amazon S3에 업로드된 새 객체는 불특정한 시간 동안 변경 불가능한 상태로 유지
  • 회사 AWS 계정의 특정 사용자만 객체를 삭제 가능

최적의 정답 선택하기

선택지 1번은 “S3 Glacier 볼트를 생성합니다. 개체에 WORM(Write-Once, Read-Many) 볼트 잠금 정책을 적용합니다.”입니다.

 선택지가 정답이 아닌 이유는 S3 Glacier는 데이터 아카이빙에 최적화되어 있으며, 즉각적인 데이터 접근을 필요로 하는 요구사항과는 맞지 않기 때문입니다. 이 문제에서는 S3 버킷 내의 데이터를 변경하지 않도록 해야 하며, S3 Glacier는 주로 오래된 데이터를 아카이빙 하는 용도로 사용됩니다. 또한 Glacier는 즉각적인 읽기/쓰기 작업에 적합하지 않으며, 요구사항에서는 S3 버킷을 사용해야 합니다.

 

선택지 2번은 “S3 객체 잠금이 활성화된 S3 버킷을 생성합니다. 버전 관리를 활성화합니다. 보존 기간을 100년으로 설정합니다. 거버넌스 모드를 새 객체에 대한 S3 버킷의 기본 보관 모드로 사용합니다.”입니다.

→ 선택지가 정답이 아닌 이유는 설정된 보존 기간(100년 동안) 동안 데이터를 변경할 수 없도록 하지만, 보존 기간 설정의 과도함으로 인해 운영의 유연성이 부족할 수 있기 때문입니다. 또한, 거버넌스 모드만으로는 법적 보존 상태를 설정하지 않으므로 데이터 삭제 권한을 세부적으로 관리하는 데 한계가 있습니다. 법적 요구사항에 따른 보존이 필요할 경우 적절히 대응하지 못할 수 있으며, 특정 사용자만 객체를 삭제할 수 있도록 세부적인 권한 관리를 제공하지 않으므로 문제의 요구사항을 완전히 충족하지 못합니다.

 

선택지 3번은 “S3 버킷을 생성합니다. AWS CloudTrail을 사용하여 객체를 수정하는 모든 S3 API 이벤트를 추적합니다. 알림을 받으면 회사가 가지고 있는 모든 백업 버전에서 수정된 개체를 복원합니다.”입니다.

 선택지가 정답이 아닌 이유는 데이터의 변경을 실시간으로 방지하지 않으며, 데이터가 변경된 후에만 알림을 받고 복구하는 방식이기 때문입니다. 이는 데이터가 변경되지 않도록 하는 요구사항을 충족하지 못합니다. 또한, 실시간으로 데이터를 보호하기 위한 효과적인 방법이 아니며, 데이터 손실의 위험이 있습니다.

 

선택지 4번은 “S3 객체 잠금이 활성화된 S3 버킷을 생성합니다. 버전 관리를 활성화합니다. 객체에 법적 보존을 추가합니다. 객체를 삭제해야 하는 사용자의 IAM 정책에 s3권한을 추가합니다.”입니다.

→ 이 선택지는 S3 객체 잠금을 사용하여 데이터를 변경할 수 없도록 보호하고, 법적 보존을 통해 지정된 기간 동안 데이터를 삭제하지 않도록 설정합니다. 또한, 버전 관리를 통해 모든 객체의 변경 이력을 보관하고, IAM 정책을 통해 특정 사용자만 법적 보존 상태를 변경할 수 있는 권한을 부여합니다. 이는 데이터를 안전하게 보호하고, 특정 사용자가 데이터 삭제 권한을 관리할 수 있도록 하여 회사의 요구 사항을 충족하는 최적의 솔루션이 될 수 있습니다.

 

 

문제에 대한 정답은 선택지 4번입니다!

자세한 문제 풀이를 원하신 분은 아래 더보기를 통해 확인해 주세요.

더보기
더보기

첫 번째 과정은 “문제의 요구사항 분석하기”입니다.

이 문제에서는 1가지의 요구사항이 존재해요. 하지만 세부적으로 고려해야 할 사항이 있어요.

 

1. Amazon S3에 데이터를 저장 및 데이터 변경 불가

  • Amazon S3에 업로드된 새 객체는 불특정한 시간 동안 변경 불가능한 상태로 유지
  • 회사 AWS 계정의 특정 사용자만 객체를 삭제 가능

 

두 번째 과정은 “요구사항과 관련된 AWS 서비스 생각하기”입니다.

1. Amazon S3에 데이터를 저장 및 데이터 변경 불가

  • Amazon S3(Amazon Simple Storage Service): 확장 가능한 객체 스토리지 서비스로 대량의 데이터를 안전하게 저장하고 관리할 수 있습니다. 높은 내구성과 가용성을 제공하며, 다양한 데이터 관리 기능을 지원합니다.
  • Amazon S3 객체 잠금(Object Lock): 객체를 일정 기간 동안 변경할 수 없도록 하는 기능을 제공합니다. 이 기능을 사용하면 데이터를 WORM(Write Once, Read Many) 상태로 설정하여 회사에서 객체를 수정하기로 결정할 때까지 변경 불가능한 상태로 유지할 수 있습니다.
    • 규정 준수 모드: AWS 계정의 루트 사용자를 포함한 어떤 사용자도 덮어쓰거나 삭제할 수 없습니다. 규정 준수 모드에서 객체를 잠그면 보관 모드를 변경할 수 없으며 보관 기간을 줄일 수 없습니다.
    • 거버넌스 모드: 특별한 권한이 없는 한 사용자는 객체 버전을 덮어쓰거나 삭제하거나 잠금 설정을 변경할 수 없습니다. 거버넌스 모드를 사용하면 대부분의 사용자가 객체를 삭제하지 못하도록 보호하지만, 필요에 따라 일부 사용자에게 보존 설정을 변경하거나 객체를 삭제할 수 있는 권한을 부여할 수 있습니다.
  • 법적 보존: 객체 잠금을 사용하면 객체 버전에 법적 보존을 적용할 수도 있습니다. 보관 기간과 마찬가지로 법적 보존을 사용하면 객체 버전을 덮어쓰거나 삭제할 수 없습니다. 그러나 법적 보존에는 고정된 기간이 없으며, 제거될 때까지 유효합니다. 법적 요구사항에 따라 데이터를 일정 기간 동안 보호하고, 규정 준수를 보장하기 위해 활용할 수 있습니다.
  • Amazon S3 버킷 정책 및 IAM 정책
    • Amazon S3 버킷 정책: 특정 S3 버킷에 대한 권한을 정의하고 제어하는 JSON 형식의 문서입니다. 이를 통해 사용자는 누구나 버킷 및 버킷 내 객체에 대한 접근을 허용하거나 제한할 수 있습니다.
    • 사용자가 특정 버킷의 모든 객체를 읽을 수 있도록 허용하는 정책의 예
{
    "Version": "2012-10-17",
    "Statement": [ 
        { 
            "Effect": "Allow", 
            "Principal": "*", 
            "Action": "s3:GetObject", 
            "Resource": "arn:aws:s3:::example-bucket/*" 
        } 
    ] 
}

 

→ 여기서 Principal은 액세스를 허용할 사용자(여기서는 `*`로 모든 사용자를 의미), Action은 허용할 작업(s3:GetObject는 객체 읽기), Resource는 정책이 적용될 버킷과 객체를 지정합니다.

 

  • Identity and Access Management(IAM) 정책: AWS 리소스에 대한 액세스를 제어하는 JSON 형식의 문서입니다. IAM 정책은 특정 사용자, 그룹, 역할에 부여하여 AWS 리소스에 대해 어떤 작업을 수행할 수 있는지를 정의합니다.

→ Amazon S3 버킷 정책은 AWS Identity and Access Management(IAM)와 함께 사용되어, 사용자와 리소스에 대한 포괄적인 접근 제어를 제공할 수 있습니다. 버킷 정책을 설정하여 특정 사용자만 객체를 삭제할 수 있도록 할 수 있으며, IAM 정책을 통해 사용자의 삭제 권한을 세부적으로 관리할 수 있어요.

 

  • 버전 관리(Amazon S3 Versioning): 객체의 모든 버전을 자동으로 저장하여 이전 버전의 데이터 복구가 가능하도록 합니다. 버전 관리가 활성화되면 실수로 삭제하거나 덮어쓴 객체를 쉽게 복원할 수 있습니다.

 

마지막 과정은 “위의 정보들을 토대로 정답 선택하기입니다.

선택지 1번은 “S3 Glacier 볼트를 생성합니다. 개체에 WORM(Write-Once, Read-Many) 볼트 잠금 정책을 적용합니다.”입니다.

 

  • Amazon S3 Glacier: 장기 데이터 아카이빙 및 백업을 위한 저렴한 객체 스토리지 서비스입니다. WORM(Write Once, Read Many) 정책을 통해 데이터를 수정할 수 없도록 설정할 수 있습니다.

이 선택지가 정답이 아닌 이유는 S3 Glacier는 데이터 아카이빙에 최적화되어 있으며, 즉각적인 데이터 접근을 필요로 하는 요구사항과는 맞지 않기 때문입니다. 이 문제에서는 S3 버킷 내의 데이터를 변경하지 않도록 해야 하며, S3 Glacier는 주로 오래된 데이터를 아카이빙 하는 용도로 사용됩니다. 또한 Glacier는 즉각적인 읽기/쓰기 작업에 적합하지 않으며, 요구사항에서는 S3 버킷을 사용해야 합니다.

 

선택지 2번은 “S3 객체 잠금이 활성화된 S3 버킷을 생성합니다. 버전 관리를 활성화합니다. 보존 기간을 100년으로 설정합니다. 거버넌스 모드를 새 객체에 대한 S3 버킷의 기본 보관 모드로 사용합니다.”입니다.

 

  • S3 객체 잠금: 객체를 WORM 상태로 유지하여 설정된 보존 기간 동안 삭제나 수정이 불가능하도록 합니다.
  • 버전 관리: 모든 객체 버전을 저장하여 데이터 무결성을 보장합니다.
  • 거버넌스 모드: 특별한 권한을 가진 사용자만 데이터의 삭제나 보존 설정을 변경할 수 있습니다.

이 선택지가 정답이 아닌 이유는 설정된 보존 기간(100년 동안) 동안 데이터를 변경할 수 없도록 하지만, 보존 기간 설정의 과도함으로 인해 운영의 유연성이 부족할 수 있기 때문입니다. 또한, 거버넌스 모드만으로는 법적 보존 상태를 설정하지 않으므로 데이터 삭제 권한을 세부적으로 관리하는 데 한계가 있습니다. 법적 요구사항에 따른 보존이 필요할 경우 적절히 대응하지 못할 수 있으며, 특정 사용자만 객체를 삭제할 수 있도록 세부적인 권한 관리를 제공하지 않으므로 문제의 요구사항을 완전히 충족하지 못합니다.

 

선택지 3번은 “S3 버킷을 생성합니다. AWS CloudTrail을 사용하여 객체를 수정하는 모든 S3 API 이벤트를 추적합니다. 알림을 받으면 회사가 가지고 있는 모든 백업 버전에서 수정된 개체를 복원합니다.”입니다.

 

  • AWS CloudTrail: AWS 계정에서 발생한 모든 API 호출을 추적하여 로깅합니다.

이 선택지가 정답이 아닌 이유는 데이터의 변경을 실시간으로 방지하지 않으며, 데이터가 변경된 후에만 알림을 받고 복구하는 방식이기 때문입니다. 이는 데이터가 변경되지 않도록 하는 요구사항을 충족하지 못합니다. 또한, 실시간으로 데이터를 보호하기 위한 효과적인 방법이 아니며, 데이터 손실의 위험이 있습니다.

 

선택지 4번은 “S3 객체 잠금이 활성화된 S3 버킷을 생성합니다. 버전 관리를 활성화합니다. 객체에 법적 보존을 추가합니다. 객체를 삭제해야 하는 사용자의 IAM 정책에 s3권한을 추가합니다.”입니다.

 

  • S3 객체 잠금: 데이터가 설정된 보존 기간 동안 변경되지 않도록 보호합니다.
  • 법적 보존: 법적 요구사항에 따라 객체를 삭제하지 못하도록 합니다.
  • IAM 정책: 특정 사용자에게만 법적 보존 상태를 변경할 수 있는 권한을 부여합니다.

이 선택지는 S3 객체 잠금을 사용하여 데이터를 변경할 수 없도록 보호하고, 법적 보존을 통해 지정된 기간 동안 데이터를 삭제하지 않도록 설정합니다. 또한, 버전 관리를 통해 모든 객체의 변경 이력을 보관하고, IAM 정책을 통해 특정 사용자만 법적 보존 상태를 변경할 수 있는 권한을 부여합니다. 이는 데이터를 안전하게 보호하고, 특정 사용자가 데이터 삭제 권한을 관리할 수 있도록 하여 회사의 요구 사항을 충족하는 최적의 솔루션이 될 수 있습니다.

 

 

이 글을 끝까지 읽고 계신 여러분, 의미 있는 이 시작을 스스로 축하해 주세요. 

여러분의 열정과 노력이 빛나는 순간들을 응원합니다. 

오늘 하루도 더 열심히, 더 즐겁게 공부해 봅시다!

이번주부터는 월금 매일 오전 10시에 글이 정기적으로 올라올 예정입니다. 

오늘 글이 유익하셨길 바라며, 다음에는 또 다른 문제로 찾아뵙겠습니다.

 

감사합니다. 다음 글에서 만나요! 😊