Amazon S3의 저장 데이터에 대한 객체 무결성 확인 - Amazon Simple Storage Service

Amazon S3의 저장 데이터에 대한 객체 무결성 확인

Amazon S3에 저장된 데이터세트의 내용을 확인해야 하는 경우, S3 Batch Operations 체크섬 계산 작업은 저장된 객체에 대한 전체 객체 체크섬 또는 복합 체크섬을 모두 계산합니다. 체크섬 계산 작업은 Batch Operations를 사용하여 객체 그룹의 체크섬 값을 비동기적으로 계산하고, 데이터의 새 복사본을 만들거나 데이터를 복원 또는 다운로드하지 않고도 통합 무결성 보고서를 자동으로 생성합니다.

체크섬 계산 작업을 사용하면 단일 작업 요청으로 수십억 개의 객체를 효율적으로 확인할 수 있습니다. 각 체크섬 계산 작업 요청에 대해 S3는 체크섬 값을 계산하여 자동으로 생성된 무결성 보고서(완료 보고서라고도 함)에 포함합니다. 그런 다음 완료 보고서를 사용하여 데이터세트의 무결성을 검증할 수 있습니다.

체크섬 계산 작업은 스토리지 클래스 또는 객체 크기에 관계없이 S3에 저장된 모든 객체에서 작동합니다. 객체를 데이터 보존 모범 사례로 확인해야 하든, 규정 준수 요구 사항을 충족해야 하든, 체크섬 계산 작업은 저장 중에 체크섬 계산을 수행하여 데이터 검증에 필요한 비용, 시간 및 노력을 줄입니다. 체크섬 계산 요금에 대한 자세한 내용은 Amazon S3 요금을 참조하세요.

그런 다음 생성된 완료 보고서의 출력을 사용하여 데이터베이스에 저장한 체크섬 값과 비교함으로써 시간이 지남에 따라 데이터세트가 그대로 유지되는지 확인할 수 있습니다. 이 접근 방식은 비즈니스 및 규정 준수 요구 사항에 대한 엔드 투 엔드 데이터 무결성을 유지하는 데 도움이 됩니다. 예를 들어 체크섬 계산 작업을 사용하여 연간 보안 감사를 위해 S3 Glacier 스토리지 클래스에 저장된 객체 목록을 제출할 수 있습니다. 또한 지원되는 체크섬 알고리즘 범위를 통해 애플리케이션에서 사용되는 알고리즘과의 연속성을 유지할 수 있습니다.

지원되는 체크섬 알고리즘 사용

저장 데이터의 경우 지원되는 체크섬 알고리즘을 사용하여 Amazon S3의 전체 객체 체크섬 및 복합 체크섬 유형을 모두 계산할 수 있습니다.

  • CRC-64/NVME(CRC64NVME)

  • CRC-32(CRC32)

  • CRC-32C(CRC32C)

  • SHA-1(SHA1)

  • SHA-256(SHA256)

  • MD5(MD5)

전체 객체 및 복합 체크섬 유형

Amazon S3는 다음과 같은 전체 객체 및 복합 체크섬 알고리즘 유형을 지원합니다.

  • CRC-64/NVME(CRC64NVME): 전체 객체 체크섬 유형만 지원합니다.

  • CRC-32(CRC32): 전체 객체 및 복합 체크섬 유형을 모두 지원합니다.

  • CRC-32C(CRC32C): 전체 객체 및 복합 체크섬 유형을 모두 지원합니다.

  • SHA-1(SHA1): 전체 객체 및 복합 체크섬 유형을 모두 지원합니다.

  • SHA-256(SHA256): 전체 객체 및 복합 체크섬 유형을 모두 지원합니다.

  • MD5(MD5): 전체 객체 및 복합 체크섬 유형을 모두 지원합니다.

체크섬 계산 사용

Amazon S3에 저장된 객체의 경우, S3 Batch Operations과 함께 체크섬 계산 작업을 사용하여 저장 데이터의 내용을 확인할 수 있습니다. Amazon S3 콘솔, AWS Command Line Interface(AWS CLI), REST API 또는 AWS SDK를 사용하여 Compute checksum Batch Operations 작업을 만들 수 있습니다. 체크섬 계산 작업이 완료되면 완료 보고서를 받게 됩니다. 완료 보고서를 사용하는 방법에 대한 자세한 내용은 작업 상태 및 완료 보고서 추적을 참조하세요.

체크섬 계산 작업을 만들기 전에 S3 Batch Operations AWS Identity and Access Management(IAM) 역할을 만들어 사용자를 대신해서 작업을 수행할 수 있는 Amazon S3 권한을 부여해야 합니다. 매니페스트 파일을 읽고 S3 버킷에 완료 보고서를 작성할 수 있는 권한을 부여해야 합니다. 자세한 내용은 체크섬 계산 섹션을 참조하세요.

체크섬 계산 작업 사용
  1. AWS Management Console에 로그인한 후 https://console.aws.amazon.com/s3/에서 S3 콘솔을 엽니다.

  2. 페이지 상단의 탐색 모음에서 현재 표시된 AWS 리전의 이름을 선택합니다. 그런 다음 작업을 생성하려는 리전을 선택합니다.

    참고

    복사 작업의 경우 대상 버킷과 동일한 리전에서 작업을 생성해야 합니다. 기타 작업의 경우 매니페스트에 있는 객체와 동일한 리전에서 작업을 생성해야 합니다.

  3. Amazon S3 콘솔의 왼쪽 탐색 창에서 배치 작업을 선택합니다.

  4. 작업 생성을 선택합니다.

  5. 작업을 생성하려는 AWS 리전을 확인합니다.

    참고

    복사 작업의 경우 대상 버킷과 동일한 리전에서 작업을 생성해야 합니다. 기타 작업의 경우 매니페스트에 있는 객체와 동일한 리전에서 작업을 생성해야 합니다.

  6. 매니페스트 형식에서 사용할 매니페스트 객체의 형식을 선택합니다.

    • S3 인벤토리 보고서(manifest.json)를 선택하는 경우, manifest.json 객체의 경로를 입력하고 특정 객체 버전을 사용하려면 매니페스트 객체 버전 ID를 입력합니다(선택 사항). 또는 S3 찾아보기를 선택하고 모든 매니페스트 객체 필드 항목을 자동으로 채우는 매니페스트 JSON 파일을 선택할 수 있습니다.

    • CSV를 선택하는 경우, 매니페스트 위치 유형을 선택한 다음 CSV 형식 매니페스트 객체의 경로를 입력하거나 S3 찾아보기를 선택하여 매니페스트 객체를 선택합니다. 매니페스트 객체는 콘솔에 설명된 형식을 따라야 합니다. 매니페스트 객체의 특정 버전을 사용하려면 객체 버전 ID를 지정할 수도 있습니다.

    • S3 복제 구성을 사용하여 매니페스트 생성을 선택하면 복제 구성을 사용하여 객체 목록이 생성되고, 원하는 경우 선택한 대상에 저장됩니다. 복제 구성을 사용하여 매니페스트를 만들 때 사용할 수 있는 유일한 작업은 복제입니다.

  7. 다음을 선택합니다.

  8. 작업에서 체크섬 계산 작업을 선택하여 매니페스트에 나열된 모든 객체의 체크섬을 계산합니다. 작업에 대한 체크섬 유형체크섬 함수를 선택합니다. 그리고 다음을 선택합니다.

  9. 추가 옵션 구성에 대한 정보를 입력하고 다음을 선택합니다.

  10. 추가 옵션 구성 페이지에서 체크섬 계산 작업에 대한 정보를 입력합니다.

    참고

    완료 보고서에서 승인 문구를 확인해야 합니다. 이 승인 문은 Amazon S3에 저장된 데이터의 무결성을 확인하는 데 사용되는 체크섬 값이 완료 보고서에 포함되어 있음을 이해한다는 것을 확인합니다. 따라서 완료 보고서는 신중하게 공유해야 합니다. 또한 체크섬 계산 요청을 만들고 완료 보고서를 저장할 외부 계정 소유자의 버킷 위치를 지정하는 경우 외부 버킷 소유자의 AWS 계정 ID를 지정해야 합니다.

  11. 다음을 선택합니다.

  12. 검토 페이지에서 설정을 검토하고 확인합니다.

  13. (선택 사항) 변경해야 하는 경우 이전을 선택하여 이전 페이지로 돌아가거나 편집을 선택하여 특정 단계를 업데이트합니다.

  14. 변경 사항을 확인한 후 작업 생성을 선택합니다.

모든 체크섬 계산 요청의 진행 상황 나열 및 모니터링
  1. AWS Management Console에 로그인한 후 https://console.aws.amazon.com/s3/에서 S3 콘솔을 엽니다.

  2. 왼쪽 탐색 창에서 배치 작업을 선택합니다.

  3. Batch Operations 페이지에서 작업 우선 순위, 작업 완료율 및 총 객체와 같은 작업 세부 정보를 검토할 수 있습니다.

  4. 특정 체크섬 계산 작업을 관리하거나 복제하려면 작업 ID를 클릭하여 추가 작업 정보를 검토합니다.

  5. 특정 체크섬 계산 작업 페이지에서 작업 세부 정보를 검토합니다.

각 배치 작업은 서로 다른 작업 상태로 진행됩니다. S3 콘솔에서 AWS CloudTrail 이벤트를 활성화하여 작업 상태 변경에 대한 알림을 받을 수도 있습니다. 활성 작업의 경우 작업 세부 정보 페이지에서 실행 중인 작업과 완료율을 검토할 수 있습니다.

Java
예제: 체크섬 계산 작업 만들기

다음 예제에서는 체크섬 계산 작업(작업 생성 요청의 일부)을 만드는 방법과 매니페스트를 지정하는 방법을 보여줍니다.

// Required parameters String accountId = "111122223333"; String roleArn = "arn:aws:iam::111122223333:role/BatchOperations"; String manifestArn = "arn:aws:s3:::my_manifests/manifest.csv"; String manifestEtag = "60e460c9d1046e73f7dde5043ac3ae85"; String reportBucketArn = "arn:aws:s3:::amzn-s3-demo-completion-report-bucket"; String reportExpectedBucketOwner = "111122223333"; String reportPrefix = "demo-report"; // Job Operation S3ComputeObjectChecksumOperation s3ComputeObjectChecksum = S3ComputeObjectChecksumOperation.builder() .checksumAlgorithm(ComputeObjectChecksumAlgorithm.CRC64) .checksumType(ComputeObjectChecksumType.COMPOSITE) .build(); JobOperation operation = JobOperation.builder() .s3ComputeObjectChecksum(s3ComputeObjectChecksum) .build(); // Job Manifest JobManifestLocation location = JobManifestLocation.builder() .eTag(manifestEtag) .objectArn(manifestArn) .build(); JobManifestSpec spec = JobManifestSpec.builder() .format(JobManifestFormat.S3_BATCH_OPERATIONS_CSV_20180820) .fields(Arrays.asList(JobManifestFieldName.BUCKET, JobManifestFieldName.KEY)) .build(); JobManifest manifest = JobManifest.builder() .location(location) .spec(spec) .build(); // Completion Report JobReport report = JobReport.builder() .bucket(reportBucketArn) .enabled(true) // Must be true .expectedBucketOwner(reportExpectedBucketOwner) .format(JobReportFormat.REPORT_CSV_20180820) .prefix(reportPrefix) .reportScope(JobReportScope.ALL_TASKS) .build(); // Create Job Request CreateJobRequest request = CreateJobRequest.builder() .accountId(accountId) .confirmationRequired(false) .manifest(manifest) .operation(operation) .priority(10) .report(report) .roleArn(roleArn); // Create the client S3ControlClient client = S3ControlClient.builder() .credentialsProvider(new ProfileCredentialsProvider()) .region(Region.US_EAST_1) .build(); // Send the request try { CreateJobResponse response = client.createJob(request); System.out.println(response); } catch (AwsServiceException e) { System.out.println("AwsServiceException: " + e.getMessage()); throw new RuntimeException(e); } catch (SdkClientException e) { System.out.println("SdkClientException: " + e.getMessage()); throw new RuntimeException(e); }
예제: 체크섬 계산 작업 세부 정보 보기

다음 예제에서는 작업 ID를 지정하여 체크섬 계산 작업 요청에 대한 작업 세부 정보(예: 작업 완료율)를 보는 방법을 보여줍니다.

DescribeJobRequest request = DescribeJobRequest.builder() .accountId("1234567890") .jobId("a16217a1-e082-48e5-b04f-31fac3a66b13") .build();

create-job 명령을 사용하여 새 배치 작업을 만들고 객체 목록을 제공할 수 있습니다. 그런 다음 체크섬 알고리즘 및 체크섬 유형과 체크섬 계산 보고서를 저장할 대상 버킷을 지정합니다. 다음 예제에서는 AWS 계정 111122223333에 대해 S3 생성 매니페스트를 사용하여 S3 Batch Operations 체크섬 계산 작업을 만듭니다.

이 명령을 사용하려면 user input placeholders를 실제 정보로 대체합니다.

aws s3control create-job \ --account-id 111122223333 \ --manifest '{"Spec":{"Format":"S3BatchOperations_CSV_20180820","Fields":["Bucket","Key"]},"Location":{"ObjectArn":"arn:aws:s3:::my-manifest-bucket/manifest.csv","ETag":"e0e8bfc50e0f0c5d5a1a5f0e0e8bfc50"}}' \ --manifest-generator '{ "S3JobManifestGenerator": { "ExpectedBucketOwner": "111122223333", "SourceBucket": "arn:aws:s3:::amzn-s3-demo-source-bucket", "EnableManifestOutput": true, "ManifestOutputLocation": { "ExpectedManifestBucketOwner": "111122223333", "Bucket": "arn:aws:s3:::amzn-s3-demo-manifest-bucket", "ManifestPrefix": "prefix", "ManifestFormat": "S3InventoryReport_CSV_20211130" }, "Filter": { "CreatedAfter": "2023-09-01", "CreatedBefore": "2023-10-01", "KeyNameConstraint": { "MatchAnyPrefix": [ "prefix" ], "MatchAnySuffix": [ "suffix" ] }, "ObjectSizeGreaterThanBytes": 100, "ObjectSizeLessThanBytes": 200, "MatchAnyStorageClass": [ "STANDARD", "STANDARD_IA" ] } } }' \ --operation '{"S3ComputeObjectChecksum":{"ChecksumAlgorithm":"CRC64NVME","ChecksumType":"FULL_OBJECT"}}' \ --report '{"Bucket":"arn:aws:s3:::my-report-bucket","Format":"Report_CSV_20180820","Enabled":true,"Prefix":"batch-op-reports/","ReportScope":"AllTasks","ExpectedBucketOwner":"111122223333"}' \ --priority 10 \ --role-arn arn:aws:iam::123456789012:role/S3BatchJobRole \ --client-request-token 6e023a7e-4820-4654-8c81-7247361aeb73 \ --description "Compute object checksums" \ --region us-west-2

체크섬 계산 작업을 제출하면 작업 ID가 응답으로 수신되고 S3 Batch Operations 목록 페이지에 표시됩니다. Amazon S3는 객체 목록을 처리하고 각 객체에 대한 체크섬을 계산합니다. 작업이 완료되면 S3는 지정된 대상에 통합 체크섬 계산 보고서를 제공합니다.

체크섬 계산 작업의 진행 상황을 모니터링하려면 describe-job 명령을 사용합니다. 이 명령은 지정된 배치 작업의 상태를 확인합니다. 이 명령을 사용하려면 user input placeholders를 실제 정보로 대체합니다.

예:

aws s3control describe-job --account-id 111122223333 --job-id 1234567890abcdef0

모든 활성완료 배치 작업의 목록을 가져오려면 AWS CLI 명령 참조Listing jobs 또는 list-jobs를 참조하세요.

CreateJob을 사용하여 체크섬 계산으로 객체 무결성을 확인하기 위해 REST 요청을 보낼 수 있습니다. DescribeJob API 작업에 REST 요청을 전송하여 체크섬 계산 요청의 진행 상황을 모니터링할 수 있습니다. 각 배치 작업은 다음 상태로 진행됩니다.

  • 신규

  • 준비 중

  • 준비됨

  • ACTIVE

  • 일시 중지 중

  • 일시 중지됨

  • 완료

  • 취소 중

  • FAILED

API 응답은 현재 작업 상태를 알려줍니다.