Amazon S3에 대한 데이터 무결성 보호 - AWS SDKs 및 도구

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon S3에 대한 데이터 무결성 보호

참고

설정 페이지의 레이아웃을 이해하거나, 이어지는 AWS SDK 및 도구 지원 표를 해석하는 데 도움이 되는 정보는 이 안내서의 설정 페이지의 이해에서 확인하세요.

한동안 AWS SDK는 Amazon Simple Storage Service에 데이터를 업로드하거나 다운로드할 때 데이터 무결성 검사를 지원해 왔습니다. 이전에는 이러한 검사들이 선택적으로만 활성화되었습니다. 이제 CRC32나 CRC64NVME와 같은 CRC 기반 알고리즘을 사용해, 이러한 검사들이 기본적으로 활성화되도록 했습니다. 각 SDK나 도구에는 기본 알고리즘이 정해져 있지만, 다른 알고리즘을 선택해 사용할 수도 있습니다. 원한다면 업로드 시 미리 계산해둔 체크섬을 계속해서 직접 제공할 수도 있습니다. 업로드, 멀티파트 업로드, 다운로드, 암호화 모드 전반에 걸쳐 일관된 동작을 제공함으로써 클라이언트 측 무결성 검사가 더욱 단순해집니다.

최신 버전의 AWS SDK와 AWS CLI는 각 업로드에 대해 순환 중복 검사(CRC) 기반 체크섬을 자동으로 계산해 Amazon S3로 전송합니다. Amazon S3는 서버 측에서 독립적으로 체크섬을 계산한 뒤, 제공된 값과 비교해 검증한 후에야 객체와 해당 체크섬을 안정적으로 저장하고 객체 메타데이터에 기록합니다. 체크섬을 객체와 함께 메타데이터에 저장해 두면, 객체를 다운로드할 때 동일한 체크섬이 자동으로 반환되어 다운로드 검증에도 사용할 수 있습니다. 또한 객체 메타데이터에 저장된 체크섬은 언제든지 검증할 수 있습니다.

체크섬 작업, 멀티파트 업로드, 지원되는 체크섬 알고리즘 목록에 대해 더 알아보려면 Amazon Simple Storage Service 사용 설명서Amazon S3에서 객체 무결성 확인을 참고하세요.

멀티파트 업로드:

Amazon S3는 단일 파트 업로드와 멀티파트 업로드 모두에서 일관된 전체 객체 체크섬을 개발자에게 제공합니다.

파일을 여러 파트로 업로드할 때, SDK는 각 파트에 대한 체크섬을 계산합니다. Amazon S3는 이러한 체크섬을 사용하여 UploadPart API를 통해 각 파트의 무결성을 검증합니다. 또한 Amazon S3는 CompleteMultipartUpload API를 직접적으로 호출할 때 전체 파일의 크기와 체크섬도 검증합니다.

SDK에 멀티파트 업로드를 지원하는 Amazon S3 Transfer Manager가 있는 경우, 파트별 체크섬은 AWS SDK 및 도구 지원 표에 있는 SDK별 기본 알고리즘을 사용하여 검증됩니다. checksum_typeFULL_OBJECT로 설정하거나 CRC64NVME 알고리즘 사용을 선택해 전체 객체 체크섬을 선택적으로 활성화할 수 있습니다.

이전 버전의 SDK나 AWS CLI를 사용 중인 경우:

애플리케이션이 2024년 12월 이전 버전의 SDK나 도구를 사용하고 있는 경우에도, Amazon S3는 신규 객체에 대해 여전히 CRC64NVME 체크섬을 컴퓨팅하고 이를 객체 메타데이터에 저장하여 이후에 참고할 수 있도록 합니다. 나중에 사용자 측에서 컴퓨팅한 CRC 값과 저장된 CRC 값을 비교해 네트워크 전송이 올바르게 이루어졌는지 검증할 수 있습니다. 또한 기존 방식대로, PutObject 또는 UploadPart 요청에 직접 미리 컴퓨팅한 체크섬을 제공해 무결성 보호를 수동으로 확장할 수도 있습니다. 이는 이전 버전에서 이를 처리하는 표준적인 방법입니다.

다음을 사용하여 이 기능을 구성하십시오.

request_checksum_calculation - 공유 AWS config 파일 설정
AWS_REQUEST_CHECKSUM_CALCULATION - 환경 변수
aws.requestChecksumCalculation - JVM 시스템 속성: Java/Kotlin만 해당

기본적으로 요청을 보낼 때 요청 체크섬을 계산하는 기능이 자동으로 활성화되어 있습니다. 사용자는 요청을 구성할 때 제공되는 체크섬 알고리즘 중 원하는 것을 선택해 사용할 수 있습니다. 그러지 않으면 SDK별 기본 알고리즘이 사용됩니다. 각 SDK 또는 도구의 기본 알고리즘은 AWS SDK 및 도구 지원 표를 참고하세요.

기본값: WHEN_SUPPORTED

유효한 값:

  • WHEN_SUPPORTED - Amazon S3로의 데이터 전송처럼 API 작업에서 지원되는 경우, 모든 요청 페이로드에 대해 체크섬 검증이 수행됩니다.

  • WHEN_REQUIRED - 체크섬 검증은 API 작업에 필요한 경우에만 수행됩니다.

response_checksum_validation - 공유 AWS config 파일 설정
AWS_RESPONSE_CHECKSUM_VALIDATION - 환경 변수
aws.responseChecksumValidation - JVM 시스템 속성: Java/Kotlin만 해당

기본적으로, 요청을 보낼 때 응답 체크섬 검증도 자동으로 활성화됩니다. 응답 페이로드에 대해 체크섬이 계산되며, 이를 응답 헤더에 포함된 체크섬 값과 비교합니다. 체크섬 검증에 실패하면, 페이로드를 읽는 시점에 사용자에게 오류가 발생합니다.

체크섬 응답 헤더는 체크섬의 알고리즘도 나타냅니다. Amazon S3 클라이언트는 체크섬을 지원하는 모든 Amazon S3 API 작업에 대해 응답 체크섬을 검증하려고 시도합니다. 그러나 SDK가 지정된 체크섬 알고리즘을 구현하지 않은 경우, 해당 검증은 건너뛰게 됩니다.

기본값: WHEN_SUPPORTED

유효한 값:

  • WHEN_SUPPORTED - Amazon S3로의 데이터 전송처럼 API 작업에서 지원되는 경우, 모든 응답 페이로드에 대해 체크섬 검증이 수행됩니다.

  • WHEN_REQUIRED - 체크섬 검증은 API 작업이 이를 지원하고, 호출자가 해당 작업에 대해 체크섬을 명시적으로 활성화한 경우에만 수행됩니다. Amazon S3 GetObject API가 호출되고 ChecksumMode 매개변수가 활성화된 상태로 설정된 경우를 예로 들 수 있습니다.

AWS SDK 및 도구 지원

다음 SDK는 이 주제에서 설명하는 기능 및 설정을 지원합니다. 모든 일부 예외가 기록됩니다. 모든 JVM 시스템 속성 설정은 AWS SDK for Java 및 AWS SDK for Kotlin에서만 지원됩니다.

참고

아래 표에서 ‘CRT’는 AWS공용 런타임 (CRT)라이브러리을 의미하며, 프로젝트에 추가 종속성을 포함해야 할 수도 있습니다.

SDK 지원 기본 체크섬 알고리즘 지원되는 체크섬 알고리즘 참고 또는 추가 정보
AWS CLI v2 CRC64NVME CRC64NVME, CRC32, CRC32C, SHA1, SHA256 AWS CLI v1의 경우 기본 알고리즘과 지원되는 알고리즘은 Python(Boto3)과 동일합니다.
SDK for C++ CRC64NVME CRC64NVME, CRC32, CRC32C, SHA1, SHA256
SDK for Go V2 (1.x) CRC32 CRC64NVME, CRC32, CRC32C, SHA1, SHA256
SDK for Go 1.x (V1) 아니요
SDK for Java 2.x CRC32 CRC64NVME(CRT를 통해서만 지원), CRC32, CRC32C, SHA1, SHA256
SDK for Java 1.x 아니요
SDK for JavaScript 3.x CRC32 CRC32, CRC32C, SHA1, SHA256
SDK for JavaScript 2.x 아니요
SDK for Kotlin CRC32 CRC32, CRC32C, SHA1, SHA256
SDK for .NET 4.x CRC32 CRC32, CRC32C, SHA1, SHA256
SDK for .NET 3.x CRC32 CRC32, CRC32C, SHA1, SHA256
SDK for PHP 3.x CRC32 CRC32, CRC32C(CRT를 통해서만 지원), SHA1, SHA256 CRC32C를 사용하려면 awscrt 확장이 필요합니다.
SDK for Python (Boto3) CRC32 CRC64NVME(CRT를 통해서만 지원), CRC32, CRC32C(CRT를 통해서만 지원), SHA1, SHA256
SDK for Ruby 3.x CRC32 CRC64NVME(CRT를 통해서만 지원), CRC32, CRC32C(CRT를 통해서만 지원), SHA1, SHA256
SDK for Rust CRC32 CRC64NVME, CRC32, CRC32C, SHA1, SHA256
SDK for Swift CRC32 CRC64NVME, CRC32, CRC32C, SHA1, SHA256 모든 알고리즘에 필요한 CRT 종속성입니다.
Tools for PowerShell V5 CRC32 CRC32, CRC32C, SHA1, SHA256
Tools for PowerShell V4 CRC32 CRC32, CRC32C, SHA1, SHA256