기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon S3에 대한 데이터 무결성 보호
참고
설정 페이지의 레이아웃을 이해하거나, 이어지는 AWS SDK 및 도구 지원 표를 해석하는 데 도움이 되는 정보는 이 안내서의 설정 페이지의 이해에서 확인하세요.
한동안 AWS SDK는 Amazon Simple Storage Service에 데이터를 업로드하거나 다운로드할 때 데이터 무결성 검사를 지원해 왔습니다. 이전에는 이러한 검사들이 선택적으로만 활성화되었습니다. 이제 CRC32나 CRC64NVME와 같은 CRC 기반 알고리즘을 사용해, 이러한 검사들이 기본적으로 활성화되도록 했습니다. 각 SDK나 도구에는 기본 알고리즘이 정해져 있지만, 다른 알고리즘을 선택해 사용할 수도 있습니다. 원한다면 업로드 시 미리 계산해둔 체크섬을 계속해서 직접 제공할 수도 있습니다. 업로드, 멀티파트 업로드, 다운로드, 암호화 모드 전반에 걸쳐 일관된 동작을 제공함으로써 클라이언트 측 무결성 검사가 더욱 단순해집니다.
최신 버전의 AWS SDK와 AWS CLI는 각 업로드에 대해 순환 중복 검사(CRC) 기반 체크섬
체크섬 작업, 멀티파트 업로드, 지원되는 체크섬 알고리즘 목록에 대해 더 알아보려면 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_type을 FULL_OBJECT로 설정하거나 CRC64NVME 알고리즘 사용을 선택해 전체 객체 체크섬을 선택적으로 활성화할 수 있습니다.
이전 버전의 SDK나 AWS CLI를 사용 중인 경우:
애플리케이션이 2024년 12월 이전 버전의 SDK나 도구를 사용하고 있는 경우에도, Amazon S3는 신규 객체에 대해 여전히 CRC64NVME 체크섬을 컴퓨팅하고 이를 객체 메타데이터에 저장하여 이후에 참고할 수 있도록 합니다. 나중에 사용자 측에서 컴퓨팅한 CRC 값과 저장된 CRC 값을 비교해 네트워크 전송이 올바르게 이루어졌는지 검증할 수 있습니다. 또한 기존 방식대로, PutObject 또는 UploadPart 요청에 직접 미리 컴퓨팅한 체크섬을 제공해 무결성 보호를 수동으로 확장할 수도 있습니다. 이는 이전 버전에서 이를 처리하는 표준적인 방법입니다.
다음을 사용하여 이 기능을 구성하십시오.
request_checksum_calculation- 공유 AWSconfig파일 설정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- 공유 AWSconfig파일 설정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 S3GetObjectAPI가 호출되고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 |