Amazon S3 버킷에 객체 잠금을 설정한 후에도 객체를 삭제할 수 있는 이유는 무엇인가요?

3분 분량
0

Amazon Simple Storage Service(S3) 버킷에 객체 잠금을 설정했습니다. 여전히 이 버킷에서 일부 객체를 삭제할 수 있는 이유를 알고 싶습니다.

해결 방법

객체 수준 객체 잠금 구성 설정에 따라 객체 잠금이 있는 Amazon S3 버킷에서 객체를 삭제할 수 있는지 여부가 결정됩니다.

객체 잠금이 있는 버킷에서 특정 객체를 삭제할 수 있는 이유를 확인하려면 해당 객체에 적용된 객체 잠금 설정을 확인하세요. 또한 삭제 모드도 확인하세요.

참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하는 경우, 최신 버전의 AWS CLI를 사용하고 있는지 확인하세요.

객체의 객체 잠금 법적 보류 및 객체 잠금 보존 설정을 확인합니다.

이러한 설정을 확인하려면 Amazon S3 콘솔을 열고 객체의 Properties 페이지로 이동합니다. 또한 head-object AWS CLI 명령을 실행할 수도 있습니다.

aws s3api head-object --bucket sample-bucket --key test.png

출력은 다음과 유사하게 표시됩니다.

{  
 "AcceptRanges": "bytes",  
 "LastModified": "2023-03-09T04:39:46+00:00",  
 "ContentLength": 285074,  
 "ETag": "\"1e8cd7fb4e4ddeafdc6513200f47958f\"",  
 "VersionId": "Cm_wsGgkj8L3fySNPUu.J7xV1HEKMhGr",  
 "ContentType": "image/png",  
 "ServerSideEncryption": "aws:kms",  
 "Metadata": {},  
 "SSEKMSKeyId": "arn:aws:kms:us-east-1:111111111111:key/eod57e78-8c46-454a-8c22-897d8be9a5f4",  
 "ReplicationStatus": "PENDING",  
 "ObjectLockMode": "COMPLIANCE",  
 "ObjectLockRetainUntilDate": "2023-03-10T04:39:45.913000+00:00",  
 "ObjectLockLegalHoldStatus": "ON"  
}

객체에 법적 보류를 적용한 경우 출력에 ObjectLockLegalHoldStatus 필드가 표시됩니다. 객체에 객체 잠금 보존을 적용한 경우 ObjectLockModeObjectLockRetainUntilDate 필드도 표시됩니다.

객체에 대해 객체 잠금 법적 보류 또는 객체 잠금 보존을 설정하지 않았습니다.

객체를 영구적으로 삭제할 수 있습니다.

객체에 대해 객체 잠금 법적 보류를 설정했습니다.

s3:PutObjectLegalHold 권한이 있는 사용자가 객체에 대한 법적 보류를 명시적으로 해제해야만 객체를 영구적으로 삭제할 수 있습니다.

객체에 대해 객체 잠금 보존을 설정했습니다.

객체가 GOVERNANCE 모드로 보호되는 경우 다음 조건에서는 보존 기간이 끝나기 전이라도 객체를 영구적으로 삭제할 수 있습니다.

  • 사용자에게 s3:BypassGovernanceRetention 권한이 있습니다.
  • DELETE 요청에 요청 헤더로 x-amz-bypass-governance-retention:true를 명시적으로 포함했습니다.

기본적으로 Amazon S3 콘솔은 DELETE 요청에 x-amz-bypass-governance-retention:true 헤더를 포함합니다. 따라서 s3:BypassGovernanceRetention 권한이 있는 경우, S3 콘솔을 사용하여 GOVERNANCE 모드로 보호되는 객체 버전을 삭제할 수 있습니다.

s3:BypassGovernanceRetention 권한이 있는 경우 AWS CLI를 사용하여 객체 버전을 삭제할 수도 있습니다. delete-object 명령에 --bypass-governance-retention 옵션을 전달합니다.

aws s3api delete-object --bucket sample-bucket --key test.txt --version-id "9_gKg5vG56F.TTEUdwkxGpJ3tNDlWlGq" --bypass-governance-retention

객체가 COMPLIANCE 모드로 보호되는 경우 보존 기간이 끝날 때까지 루트 계정을 포함한 어떤 사용자도 객체를 영구적으로 삭제할 수 없습니다.

삭제 모드 확인

단순 DELETE

단순 DELETE 작업에서는 삭제 요청에 객체 버전 ID를 지정하지 않고 객체를 삭제합니다.

객체 잠금 구성에 관계없이 객체 잠금이 설정된 버킷에 있는 모든 객체에 대해 단순 DELETE 작업을 수행할 수 있습니다. 단순 DELETE는 버킷에서 데이터를 제거하지 않습니다. 버킷에 삭제 마커만 추가하고 현재 버전을 최신이 아님으로 유지합니다.

영구 DELETE

영구 DELETE 작업에서는 삭제 요청에 객체 버전 ID를 지정하여 객체를 삭제합니다.

보존 기간이 끝나기 전에도 GOVERNANCE 보존 모드로 보호되는 객체에 대해 영구 DELETE 작업을 수행할 수 있습니다. 단, GOVERNANCE 모드를 우회할 수 있는 권한이 있어야 합니다.

다음 조건 중 하나에 해당하는 객체에서는 영구 DELETE를 수행할 수 없습니다.

  • 객체가 COMPLIANCE 보존 모드로 보호되어 있고 보존 기간이 끝나지 않은 경우.
  • 객체에 법적 보류가 적용됩니다.

S3 수명 주기 규칙을 통해 삭제

S3 수명 주기 규칙은 객체 수준 객체 잠금 구성에 관계없이 단순 DELETE 작업을 통해 현재 버전의 만료를 계속 수행합니다. 그러나 이러한 규칙은 객체 잠금으로 보호되는 경우 최신이 아닌 버전을 영구적으로 삭제하지 않습니다.

관련 정보

법적 보류

보존 모드

AWS 공식
AWS 공식업데이트됨 일 년 전
댓글 없음