S3 REST API를 사용하여 StorageGRID S3 Object Lock을 구성합니다
StorageGRID 시스템에서 전역 S3 객체 잠금 설정이 활성화된 경우, S3 객체 잠금이 활성화된 버킷을 생성할 수 있습니다. 각 버킷에 대한 기본 보존 기간 또는 각 객체 버전에 대한 보존 기간 설정을 지정할 수 있습니다.
버킷에 S3 Object Lock을 활성화하는 방법
StorageGRID 시스템에 대해 전역 S3 객체 잠금 설정이 활성화된 경우, 각 버킷을 생성할 때 선택적으로 S3 Object Lock을 활성화할 수 있습니다.
S3 객체 잠금은 버킷 생성 시에만 활성화할 수 있는 영구 설정입니다. 버킷 생성 후에는 S3 객체 잠금을 추가하거나 비활성화할 수 없습니다.
버킷에 S3 Object Lock을 활성화하려면 다음 방법 중 하나를 사용하십시오.
-
테넌트 관리자를 사용하여 버킷을 생성합니다. "S3 버킷 생성"을 참조하십시오.
-
CreateBucket 요청과
x-amz-bucket-object-lock-enabled요청 헤더를 사용하여 버킷을 생성합니다. "버킷에 대한 작업"을 참조하십시오.
S3 객체 잠금에는 버킷 버전 관리가 필요하며, 이는 버킷 생성 시 자동으로 활성화됩니다. 버킷의 버전 관리를 일시 중지할 수 없습니다. "객체 버전 관리"을 참조하십시오.
버킷의 기본 보존 설정
버킷에 대해 S3 Object Lock이 활성화된 경우, 선택적으로 버킷에 대한 기본 보존을 활성화하고 기본 보존 모드 및 기본 보존 기간을 지정할 수 있습니다.
기본 보존 모드
-
규정 준수 모드에서:
-
해당 객체는 지정된 보존 기간이 만료될 때까지 삭제할 수 없습니다.
-
객체의 보존 기간은 늘릴 수는 있지만 줄일 수는 없습니다.
-
해당 날짜에 도달할 때까지 객체의 보존 기한을 제거할 수 없습니다.
-
-
거버넌스 모드에서:
-
s3:BypassGovernanceRetention권한이 있는 사용자는x-amz-bypass-governance-retention: true요청 헤더를 사용하여 보존 설정을 우회할 수 있습니다. -
이러한 사용자는 보존 기한이 도래하기 전에 개체 버전을 삭제할 수 있습니다.
-
이러한 사용자는 개체의 보존 기간을 늘리거나 줄이거나 없앨 수 있습니다.
-
기본 보존 기간
각 버킷에는 연 또는 일 단위로 지정된 기본 보존 기간이 있을 수 있습니다.
버킷의 기본 보존 기간을 설정하는 방법
버킷의 기본 보존 기간을 설정하려면 다음 방법 중 하나를 사용하십시오.
-
테넌트 관리자에서 버킷 설정을 관리합니다. "S3 버킷 생성" 및 "S3 객체 잠금 기본 보존 기간 업데이트"을 참조하십시오.
-
버킷에 대한 PutObjectLockConfiguration 요청을 실행하여 기본 모드와 기본 일수 또는 연수를 지정합니다.
PutObjectLockConfiguration
PutObjectLockConfiguration 요청을 사용하면 S3 객체 잠금이 활성화된 버킷의 기본 보존 모드와 기본 보존 기간을 설정하고 수정할 수 있습니다. 또한 이전에 구성된 기본 보존 설정을 제거할 수도 있습니다.
새로운 객체 버전이 버킷에 수집될 때, x-amz-object-lock-mode 및 `x-amz-object-lock-retain-until-date`이(가) 지정되지 않은 경우 기본 보존 모드가 적용됩니다. `x-amz-object-lock-retain-until-date`이(가) 지정되지 않으면 기본 보존 기간을 사용하여 보존 종료일을 계산합니다.
객체 버전이 수집된 후 기본 보존 기간이 수정되더라도 객체 버전의 보존 만료일은 그대로 유지되며 새 기본 보존 기간을 사용하여 재계산되지 않습니다.
이 작업을 완료하려면 s3:PutBucketObjectLockConfiguration 권한이 있거나 루트 계정이어야 합니다.
The Content-MD5 요청 헤더는 PUT 요청에 반드시 지정해야 합니다.
요청 예시
이 예제는 버킷에 대해 S3 Object Lock을 활성화하고 기본 보존 모드를 COMPLIANCE로, 기본 보존 기간을 6년으로 설정합니다.
PUT /bucket?object-lock HTTP/1.1
Accept-Encoding: identity
Content-Length: 308
Host: host
Content-MD5: request header
User-Agent: s3sign/1.0.0 requests/2.24.0 python/3.8.2
X-Amz-Date: date
X-Amz-Content-SHA256: authorization-string
Authorization: authorization-string
<ObjectLockConfiguration>
<ObjectLockEnabled>Enabled</ObjectLockEnabled>
<Rule>
<DefaultRetention>
<Mode>COMPLIANCE</Mode>
<Years>6</Years>
</DefaultRetention>
</Rule>
</ObjectLockConfiguration>
버킷의 기본 보존 기간을 확인하는 방법
버킷에 S3 객체 잠금이 활성화되어 있는지 여부와 기본 보존 모드 및 보존 기간을 확인하려면 다음 방법 중 하나를 사용하십시오.
-
테넌트 관리자에서 버킷을 확인합니다. "S3 버킷 보기"을 참조하십시오.
-
GetObjectLockConfiguration 요청을 실행합니다.
GetObjectLockConfiguration
GetObjectLockConfiguration 요청을 사용하면 버킷에 대해 S3 객체 잠금이 활성화되어 있는지 확인할 수 있으며, 활성화되어 있는 경우 버킷에 대해 기본 보존 모드 및 보존 기간이 구성되어 있는지 확인할 수 있습니다.
새로운 객체 버전이 버킷에 수집될 때, `x-amz-object-lock-mode`이 지정되지 않으면 기본 보존 모드가 적용됩니다. `x-amz-object-lock-retain-until-date`이 지정되지 않은 경우 기본 보존 기간이 보존 만료일 계산에 사용됩니다.
이 작업을 완료하려면 s3:GetBucketObjectLockConfiguration 권한이 있거나 루트 계정이어야 합니다.
요청 예시
GET /bucket?object-lock HTTP/1.1 Host: host Accept-Encoding: identity User-Agent: aws-cli/1.18.106 Python/3.8.2 Linux/4.4.0-18362-Microsoft botocore/1.17.29 x-amz-date: date x-amz-content-sha256: authorization-string Authorization: authorization-string
응답 예시
HTTP/1.1 200 OK
x-amz-id-2: iVmcB7OXXJRkRH1FiVq1151/T24gRfpwpuZrEG11Bb9ImOMAAe98oxSpXlknabA0LTvBYJpSIXk=
x-amz-request-id: B34E94CACB2CEF6D
Date: Fri, 04 Sep 2020 22:47:09 GMT
Transfer-Encoding: chunked
Server: AmazonS3
<?xml version="1.0" encoding="UTF-8"?>
<ObjectLockConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<ObjectLockEnabled>Enabled</ObjectLockEnabled>
<Rule>
<DefaultRetention>
<Mode>COMPLIANCE</Mode>
<Years>6</Years>
</DefaultRetention>
</Rule>
</ObjectLockConfiguration>
객체에 대한 보존 설정을 지정하는 방법
S3 객체 잠금이 활성화된 버킷에는 S3 객체 잠금 보존 설정이 있는 객체와 없는 객체가 혼합되어 포함될 수 있습니다.
객체 수준의 보존 설정은 S3 REST API를 사용하여 지정합니다. 객체에 대한 보존 설정은 버킷의 기본 보존 설정을 재정의합니다.
각 객체에 대해 다음과 같은 설정을 지정할 수 있습니다.
-
보존 모드: COMPLIANCE 또는 GOVERNANCE 중 하나.
-
보존 기한: 개체 버전을 StorageGRID에서 얼마나 오래 보존해야 하는지를 지정하는 날짜입니다.
-
규정 준수 모드에서 보존 기한이 미래 날짜로 설정된 경우, 해당 개체를 검색할 수는 있지만 수정하거나 삭제할 수는 없습니다. 보존 기한은 늘릴 수 있지만, 줄이거나 삭제할 수는 없습니다.
-
거버넌스 모드에서 특별 권한을 가진 사용자는 보존 기간 설정을 무시할 수 있습니다. 보존 기간이 만료되기 전에 개체 버전을 삭제할 수 있습니다. 또한 보존 기간을 늘리거나 줄이거나 아예 제거할 수도 있습니다.
-
-
법적 보류: 객체 버전에 법적 보류를 적용하면 해당 객체가 즉시 잠깁니다. 예를 들어, 조사 또는 법적 분쟁과 관련된 객체에 법적 보류를 적용해야 할 수 있습니다. 법적 보류에는 만료일이 없으며 명시적으로 해제될 때까지 유지됩니다.
객체에 대한 법적 보존 설정은 보존 모드 및 보존 만료일과 무관합니다. 객체 버전이 법적 보존 상태에 있는 경우 누구도 해당 버전을 삭제할 수 없습니다.
버킷에 객체 버전을 추가할 때 S3 Object Lock 설정을 지정하려면 "PutObject", "CopyObject", 또는 "CreateMultipartUpload" 요청을 실행하십시오.
다음을 사용할 수 있습니다.
-
`x-amz-object-lock-mode`이는 COMPLIANCE 또는 GOVERNANCE일 수 있습니다(대소문자 구분).
을(를) 지정하는 경우 x-amz-object-lock-mode, 도 지정해야 합니다x-amz-object-lock-retain-until-date. -
x-amz-object-lock-retain-until-date-
보존 기한 값은 반드시 형식이어야 합니다
2020-08-10T21:46:00Z. 소수점 이하 초 단위까지 허용되지만, 소수점 이하 3자리까지만 보존됩니다(밀리초 정밀도). 다른 ISO 8601 형식은 허용되지 않습니다. -
보존 기한은 미래 날짜로 설정해야 합니다.
-
-
x-amz-object-lock-legal-hold법적 보류(Legal Hold)가 켜짐(대소문자 구분)인 경우 해당 객체는 법적 보류 상태가 됩니다. 법적 보류가 꺼짐(Off)인 경우 법적 보류가 적용되지 않습니다. 그 외의 값은 400 Bad Request(InvalidArgument) 오류를 발생시킵니다.
이러한 요청 헤더를 사용하는 경우 다음 제한 사항에 유의하십시오.
-
Content-MD5요청 헤더는 PutObject 요청에x-amz-object-lock-*요청 헤더가 있는 경우 필수입니다. `Content-MD5`은 CopyObject 또는 CreateMultipartUpload에는 필요하지 않습니다. -
버킷에 S3 객체 잠금이 활성화되어 있지 않고 `x-amz-object-lock-*`요청 헤더가 있는 경우 400 잘못된 요청(InvalidRequest) 오류가 반환됩니다.
-
PutObject 요청은 AWS 동작과 일치하도록 `x-amz-storage-class: REDUCED_REDUNDANCY`을 사용할 수 있습니다. 그러나 S3 객체 잠금이 활성화된 버킷에 객체를 수집할 경우 StorageGRID는 항상 이중 커밋 수집을 수행합니다.
-
이후의 GET 또는 HeadObject 버전 응답에는 구성되어 있고 요청 발신자에게 올바른
s3:Get*권한이 있는 경우 헤더x-amz-object-lock-mode,x-amz-object-lock-retain-until-date및 `x-amz-object-lock-legal-hold`이 포함됩니다.
개체에 허용되는 최소 및 최대 보존 기간을 제한하려면 s3:object-lock-remaining-retention-days 정책 조건 키를 사용할 수 있습니다.
객체의 보존 설정을 업데이트하는 방법
기존 개체 버전의 법적 보존 또는 보존 기간 설정을 업데이트해야 하는 경우 다음 개체 하위 리소스 작업을 수행할 수 있습니다.
-
PutObjectLegalHold새로운 법적 보류 값이 ON으로 설정되면 해당 개체는 법적 보류 상태가 됩니다. 법적 보류 값이 OFF로 설정되면 법적 보류가 해제됩니다.
-
PutObjectRetention-
모드 값은 COMPLIANCE 또는 GOVERNANCE일 수 있습니다(대소문자 구분).
-
보존 기한 값은 반드시 형식이어야 합니다
2020-08-10T21:46:00Z. 소수점 이하 초 단위까지 허용되지만, 소수점 이하 3자리까지만 보존됩니다(밀리초 정밀도). 다른 ISO 8601 형식은 허용되지 않습니다. -
객체 버전에 기존 보존 날짜가 있는 경우 해당 날짜를 늘릴 수만 있습니다. 새 값은 미래 날짜여야 합니다.
-
거버넌스 모드 사용 방법
`s3:BypassGovernanceRetention`권한이 있는 사용자는 GOVERNANCE 모드를 사용하는 객체의 활성 보존 설정을 무시할 수 있습니다. 모든 DELETE 또는 PutObjectRetention 작업에는 `x-amz-bypass-governance-retention:true`요청 헤더가 포함되어야 합니다. 이러한 사용자는 다음과 같은 추가 작업을 수행할 수 있습니다.
-
DeleteObject 또는 DeleteObjects 작업을 수행하여 보존 기간이 경과하기 전에 개체 버전을 삭제합니다.
법적 보존 조치가 적용된 개체는 삭제할 수 없습니다. 법적 보존 조치를 해제해야 합니다.
-
PutObjectRetention 작업을 수행하여 객체의 보존 기간이 만료되기 전에 객체 버전의 모드를 GOVERNANCE에서 COMPLIANCE로 변경합니다.
규정 준수 모드에서 거버넌스 모드로 변경하는 것은 절대 허용되지 않습니다.
-
PutObjectRetention 작업을 수행하여 객체 버전의 보존 기간을 늘리거나, 줄이거나, 제거합니다.