Amazon S3 のデータ整合性保護
注記
設定ページのレイアウトを理解したり、以下の AWS SDK とツールによるサポートの表を解釈したりするには、「このガイドの設定ページについて」を参照してください。
しばらくの間、AWS SDK は Amazon Simple Storage Service にデータをアップロードする際、または 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 Common Runtime (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 |