

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon S3 暗号化クライアントの移行 (V2 から V3)
<a name="s3-encryption-migration-v2-v3"></a>

**注記**  
S3 暗号化クライアントの V1 を使用している場合は、まず V2 に移行してから V3 に移行する必要があります。V1 から V2 への移行手順[Amazon S3 暗号化クライアントの移行 (V1 から V2)](s3-encryption-migration-v1-v2.md)については、「」を参照してください。

このトピックでは、Amazon Simple Storage Service (Amazon S3) 暗号化クライアントのバージョン 2 (V2) からバージョン 3 (V3) にアプリケーションを移行し、移行プロセス全体でアプリケーションの可用性を確保する方法について説明します。V3 では、セキュリティを強化し、データキーの改ざんから保護するために、AES GCM とキーコミットメントおよびコミットメントポリシーが導入されています。

## 移行の概要
<a name="s3-encryption-migration-v2-v3-overview"></a>

Amazon S3 暗号化クライアントのバージョン 3 では、セキュリティを強化するためのキーコミットメントを備えた AES GCM が導入されています。この新しい暗号化アルゴリズムは、データキーの改ざんから保護し、暗号化されたデータの整合性を確保します。V3 への移行には、プロセス全体でアプリケーションの可用性とデータアクセシビリティを維持するための慎重な計画が必要です。

この移行は 2 つのフェーズから構成されます。

1. **新しいフォーマットを読み取るために既存のクライアントを更新します。**まず、 AWS SDK for Ruby の更新バージョンをアプリケーションにデプロイします。これにより、既存の V2 暗号化クライアントは、新しい V3 クライアントによって書き込まれたオブジェクトを復号できます。アプリケーションで AWS SDKs、各 SDK を個別にアップグレードする必要があります。

2. **暗号化クライアントと復号クライアントを V3 に移行します。**すべての V2 暗号化クライアントが新しい形式を読み取れるようになったら、既存の暗号化クライアントと復号クライアントをそれぞれの V3 バージョンに移行できます。これには、コミットメントポリシーの設定と、新しいクライアント設定オプションを使用するためのコードの更新が含まれます。

V1 から V2 にまだ移行していない場合は、まずその移行を完了する必要があります。V1 から V2 への移行の詳細については、[Amazon S3 暗号化クライアントの移行 (V1 から V2)](s3-encryption-migration-v1-v2.md)「」を参照してください。

## V3 の機能について
<a name="s3-encryption-migration-v2-v3-understanding"></a>

Amazon S3 暗号化クライアントのバージョン 3 では、コミットメントポリシーとキーコミットメント付き AES GCM の 2 つの主要なセキュリティ機能が導入されています。これらの機能を理解することは、移行戦略を計画し、暗号化されたデータのセキュリティを確保するために不可欠です。

### コミットメントポリシー
<a name="s3-encryption-migration-v2-v3-commitment-policies"></a>

コミットメントポリシーは、暗号化および復号オペレーション中に暗号化クライアントがキーコミットメントを処理する方法を制御します。キーコミットメントにより、暗号化されたデータは暗号化に使用された正確なキーでのみ復号され、特定のタイプの暗号化攻撃から保護されます。

V3 暗号化クライアントは、次の 3 つのコミットメントポリシーオプションをサポートしています。

 **`FORBID_ENCRYPT_ALLOW_DECRYPT`** 

このポリシーは、キーコミットメントなしでオブジェクトを暗号化し、キーコミットメントの有無にかかわらず両方のオブジェクトの復号を許可します。
+  **暗号化動作:** オブジェクトはV2 と同じアルゴリズムスイートを使用して、キーコミットメントなしで暗号化されます。
+  **復号動作:** キーコミットメントの有無にかかわらず暗号化されたオブジェクトを復号できます。
+  **セキュリティへの影響:** このポリシーはキーコミットメントを強制せず、改ざんを許可する場合があります。このポリシーで暗号化されたオブジェクトは、キーコミットメントのセキュリティ保護の強化の恩恵を受けません。このポリシーは、V2 暗号化動作との互換性を維持する必要がある移行中にのみ使用してください。
+  **バージョンの互換性:** このポリシーで暗号化されたオブジェクトは、S3 暗号化クライアントのすべての V2 および V3 実装で読み取ることができます。

 **`REQUIRE_ENCRYPT_ALLOW_DECRYPT`**

このポリシーは、キーコミットメントを使用してオブジェクトを暗号化し、キーコミットメントの有無にかかわらず、両方のオブジェクトの復号を許可します。
+  **暗号化動作:** オブジェクトは、キーコミットメントで AES GCM を使用してキーコミットメントで暗号化されます。
+  **復号動作:** キーコミットメントの有無にかかわらず暗号化されたオブジェクトを復号でき、下位互換性を提供します。
+  **セキュリティへの影響:** 新しいオブジェクトはキーコミットメント保護の恩恵を受けますが、キーコミットメントのない既存のオブジェクトは引き続き読み取ることができます。これにより、移行中のセキュリティと下位互換性のバランスが取れます。
+  **バージョンの互換性:** このポリシーで暗号化されたオブジェクトは、S3 暗号化クライアントの V3 および最新の V2 実装でのみ読み取ることができます。

 **`REQUIRE_ENCRYPT_REQUIRE_DECRYPT`** 

このポリシーは、キーコミットメントでオブジェクトを暗号化し、キーコミットメントで暗号化されたオブジェクトの復号のみを許可します。
+  **暗号化動作:** オブジェクトは、キーコミットメントで AES GCM を使用してキーコミットメントで暗号化されます。
+  **復号動作:** キーコミットメントで暗号化されたオブジェクトのみを復号できます。キーコミットメントなしでオブジェクトを復号しようとすると失敗します。
+  **セキュリティへの影響:** このポリシーは、すべてのオペレーションに主要なコミットメントを適用することで、最高レベルのセキュリティを提供します。このポリシーは、すべてのオブジェクトがキーコミットメントで再暗号化され、すべてのクライアントが V3 にアップグレードされた後にのみ使用します。
+  **バージョンの互換性:** このポリシーで暗号化されたオブジェクトは、S3 暗号化クライアントの V3 および最新の V2 実装でのみ読み取ることができます。このポリシーは、V2 または V1 クライアントによって暗号化されたオブジェクトの読み取りも禁止します。

**注記**  
移行を計画するときは、 から始め`REQUIRE_ENCRYPT_ALLOW_DECRYPT`て下位互換性を維持しながら、新しいオブジェクトに対する主要なコミットメントのセキュリティ上の利点を得ます。すべてのオブジェクトが再暗号化され、すべてのクライアントが V3 にアップグレードされた`REQUIRE_ENCRYPT_REQUIRE_DECRYPT`後にのみ、 に移動します。

### キーコミットメントを持つ AES GCM
<a name="s3-encryption-migration-v2-v3-aes-gcm-kc"></a>

AES GCM with Key Commitment (`ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY`) は、V3 で導入された新しい暗号化アルゴリズムであり、データキーの改ざんから保護することでセキュリティを強化します。このアルゴリズムの仕組みと適用時期を理解することは、移行を計画するために重要です。

 **以前のアルゴリズムと`ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY`の違い** 

以前のバージョンの S3 暗号化クライアントでは、キーコミットメントなしで AES CBC または AES GCM を使用して、命令ファイルのデータキーを暗号化していました。 は暗号化プロセスに暗号化コミットメント`ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY`を追加し、暗号化されたデータを特定のキーにバインドします。これにより、攻撃者が命令ファイル内の暗号化されたデータキーを改ざんし、クライアントが誤ったキーでデータを復号するのを防ぐことができます。

キーコミットメントがないと、攻撃者が命令ファイル内の暗号化されたデータキーを変更して別のキーに復号し、不正アクセスやデータ破損を引き起こす可能性があります。 は、暗号化されたデータキーが暗号化中に使用された元のキーにのみ復号できるようにすることで、この攻撃`ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY`を防止します。

 **バージョンの互換性** 

で暗号化されたオブジェクトは、S3 暗号化クライアントの V3 実装と、V3 形式の読み取りのサポートを含む V2 の特定の移行バージョンによってのみ復号`ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY`できます。 V3 この移行サポートがない V2 クライアントは、 で暗号化された命令ファイルを復号できません`ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY`。

**警告**  
( `REQUIRE_ENCRYPT_ALLOW_DECRYPT`または`REQUIRE_ENCRYPT_REQUIRE_DECRYPT`コミットメントポリシー`ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY`を使用して) で暗号化を有効にする前に、暗号化されたオブジェクトを読み取る必要があるすべてのクライアントが V3 または V3 形式をサポートする移行バージョンにアップグレードされていることを確認してください。移行サポートのない V2 クライアントが で暗号化されたオブジェクトを読み取ろうとすると`ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY`、復号は失敗します。

移行中、`FORBID_ENCRYPT_ALLOW_DECRYPT`コミットメントポリシーを使用して、V3 クライアントがキーコミットメントで暗号化されたオブジェクトを読み取れる`ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY`ようにしながら、 なしで暗号化を継続できます。これにより、すべてのリーダーを最初にアップグレードしてから、キーコミットメントによる暗号化に切り替える安全な移行パスが提供されます。

## 新しいフォーマットを読み取るために既存のクライアントを更新する
<a name="s3-encryption-migration-v2-v3-update-clients"></a>

V3 暗号化クライアントは、V2 クライアントがデフォルトでサポートしていない暗号化アルゴリズムとキーコミットメント機能を使用します。移行の最初のステップは、V2 復号クライアントを V3 暗号化オブジェクトを読み取ることができる AWS SDK for Ruby のバージョンに更新することです。このステップを完了すると、アプリケーションの V2 クライアントは V3 暗号化クライアントによって暗号化されたオブジェクトを復号できるようになります。

V3 クライアントによって暗号化されたオブジェクト ( `REQUIRE_ENCRYPT_ALLOW_DECRYPT`または`REQUIRE_ENCRYPT_REQUIRE_DECRYPT`コミットメントポリシーを使用するオブジェクト) を読み取るには、バージョン 1.93.0 以降の gem `aws-sdk-s3` を使用する必要があります。このバージョンには、キーコミットメントを使用して AES GCM で暗号化されたオブジェクトの復号化のサポートが含まれています。

 **コマンドラインからインストールする** 

コマンドラインから `aws-sdk-s3` gem をインストールするプロジェクトの場合は、 バージョンオプションを使用して、1.208.0 の最小バージョンがインストールされていることを確認します。

```
gem install aws-sdk-s3 -v '>= 1.208.0'
```

 **Gemfile の使用** 

Gemfile を使用して依存関係を管理するプロジェクトの場合、gem `aws-sdk-s3` の最小バージョンを 1.208.0 に設定します。例えば、次のようになります。

```
gem 'aws-sdk-s3', '>= 1.208.0'
```

1. Gemfile を変更して、最小バージョンを指定します。

1. `bundle update aws-sdk-s3` を実行して gem を更新します。

1. バージョンを確認するには、`bundle info aws-sdk-s3` を実行します。

**注記**  
最新バージョンに更新すると、既存の V2 暗号化クライアントは V3 クライアントによって暗号化されたオブジェクトを復号できます。ただし、次のセクションで説明するように、新しいオブジェクトは V2 アルゴリズムを使用して V3 に移行するまで暗号化され続けます。

## 暗号化クライアントと復号クライアントを V3 に移行する
<a name="s3-encryption-migration-v2-v3-migrate"></a>

新しい暗号化形式を読み取るようにクライアントを更新した後、アプリケーションを V3 暗号化および復号クライアントに更新できます。次の手順は、コードを V2 から V3 に正常に移行する方法を示しています。

V3 暗号化クライアントを使用するようにコードを更新する前に、前のステップに従い、gem `aws-sdk-s3` バージョン 1.93.0 以降を使用していることを確認してください。

**注記**  
AES-GCM で復号する場合は、復号されたデータの使用を開始する前に、オブジェクト全体を最後まで読み取ります。これは、オブジェクトが暗号化されてから変更されていないことを確認するためものステップです。

### V3 クライアントの設定
<a name="s3-encryption-migration-v2-v3-configure"></a>

V3 暗号化クライアントでは、キーコミットメントの動作と下位互換性を制御する新しい設定オプションが導入されています。これらのオプションを理解することは、移行を成功させるために不可欠です。

 **commitment\_policy** 

`commitment_policy` パラメータは、暗号化および復号オペレーション中に暗号化クライアントがキーコミットメントを処理する方法を制御します。これは V3 クライアントにとって最も重要な設定オプションです。
+  `:require_encrypt_allow_decrypt` - キーコミットメントを使用して新しいオブジェクトを暗号化し、キーコミットメントの有無にかかわらずオブジェクトの復号を許可します。これは、既存の V2 オブジェクトとの下位互換性を維持しながら、新しいオブジェクトのセキュリティを強化するため、移行に推奨される設定です。
+  `:forbid_encrypt_allow_decrypt` - キーコミットメントなしで新しいオブジェクトを暗号化し (V2 アルゴリズムを使用）、キーコミットメントの有無にかかわらずオブジェクトを復号化できます。この設定は、一部のクライアントがまだ V3 暗号化オブジェクトを読み取ることができない場合など、移行中に V2 暗号化動作を維持する必要がある場合にのみ使用します。 V3 
+  `:require_encrypt_require_decrypt` - キーコミットメントで新しいオブジェクトを暗号化し、キーコミットメントで暗号化されたオブジェクトの復号のみを許可します。この設定は、すべてのオブジェクトがキーコミットメントで再暗号化され、すべてのクライアントが V3 にアップグレードされた後にのみ使用します。

 **security\_profile** 

`security_profile` パラメータは、古い暗号化クライアントバージョンによって書き込まれたオブジェクトの読み取りのサポートを決定します。このパラメータは、移行中に下位互換性を維持するために不可欠です。
+  `:v3_and_legacy` - V3 クライアントが V1 および V2 暗号化クライアントによって暗号化されたオブジェクトを復号できるようにします。移行中にこの設定を使用して、V3 クライアントが既存の暗号化されたオブジェクトをすべて読み取れるようにします。
+  `:v3` - V3 クライアントが V2 暗号化クライアントによって暗号化されたオブジェクトのみを復号できるようにします。すべての V1 オブジェクトを V2 形式に既に移行している場合は、この設定を使用します。
+ 指定しない場合、クライアントは V3 クライアントによって暗号化されたオブジェクトのみを復号します。これは、レガシーオブジェクトが存在しない新しいアプリケーション開発にのみ使用します。

 **エンベロープロケーション** 

`envelope_location` パラメータは、暗号化メタデータ (暗号化されたデータキーを含む) の保存先を決定します。このパラメータは、キーコミットメントで AES GCM によって保護されるオブジェクトに影響します。
+  `:metadata` (デフォルト) - 暗号化メタデータを S3 オブジェクトのメタデータヘッダーに保存します。これはデフォルトの動作であり、ほとんどのユースケースに推奨されます。メタデータストレージを使用する場合、キーコミットメントを使用した AES GCM は適用されません。
+  `:instruction_file` - 暗号化メタデータを、設定可能なサフィックスを持つ別の S3 オブジェクト (指示ファイル) に保存します。命令ファイルを使用する場合、キーコミットメントを持つ AES GCM は暗号化されたデータキーを改ざんから保護します。データキー自体のキーコミットメントによって提供される追加のセキュリティが必要な場合は、この設定を使用します。

を使用する場合`:instruction_file`、オプションで `instruction_file_suffix`パラメータを指定して、命令ファイルオブジェクトに使用されるサフィックスをカスタマイズできます。デフォルトのサフィックスは です`.instruction`。

 **各設定オプションを使用するタイミング** 

移行中は、次の推奨設定戦略に従います。

1.  **初期移行:** `commitment_policy: :require_encrypt_allow_decrypt`と を設定します`security_profile: :v3_and_legacy`。これにより、V3 クライアントは既存のすべての V1 および V2 オブジェクトを復号しながら、キーコミットメントで新しいオブジェクトを暗号化できます。

1.  **すべてのクライアントのアップグレード後:** キーコミットメント保護を必要とするすべてのオブジェクトを再暗号化`security_profile: :v3_and_legacy`するまで、 `commitment_policy: :require_encrypt_allow_decrypt`と の使用を続けます。

1.  **完全な V3 適用:** すべてのオブジェクトがキーコミットメントで再暗号化され、V1/V2 オブジェクトを読み取る必要がなくなった後にのみ、オプションで に切り替え`commitment_policy: :require_encrypt_require_decrypt`て `security_profile`パラメータを削除できます (または、V2 オブジェクトがまだ存在する`:v2`場合は に設定します）。

には`envelope_location`、変更する特別な理由がない限り、既存のストレージメソッド (`:metadata` または `:instruction_file`) を引き続き使用します。現在メタデータストレージを使用していて、データキーのキーコミットメントで AES GCM のセキュリティを強化したい場合は、 に切り替えることができますが`:instruction_file`、これにはこれらのオブジェクトを読み取るすべてのクライアントを更新する必要があることに注意してください。

### 暗号化クライアントと復号クライアントを V3 に移行する
<a name="s3-encryption-migration-v2-v3-migrate"></a>

新しい暗号化形式を読み取るようにクライアントを更新した後、アプリケーションを V3 暗号化および復号クライアントに更新できます。次の例は、コードを V2 から V3 に正常に移行する方法を示しています。

#### V3 暗号化クライアントの使用
<a name="s3-encryption-migration-v2-v3-using-v3-clients"></a>

 **移行前 (V2)** 

```
require 'aws-sdk-s3'

# Create V2 encryption client with KMS
client = Aws::S3::EncryptionV2::Client.new(
  kms_key_id: kms_key_id,
  key_wrap_schema: :kms_context,
  content_encryption_schema: :aes_gcm_no_padding,
  security_profile: :v2_and_legacy,
  commitment_policy: :forbid_encrypt_allow_decrypt
)

# Encrypt and upload object
client.put_object(bucket: 'my-bucket', key: 'my-object', body: 'secret data')

# Download and decrypt object
resp = client.get_object(bucket: 'my-bucket', key: 'my-object')
decrypted_data = resp.body.read
```

 **移行中 (下位互換性がある V3)** 

```
require 'aws-sdk-s3'

# Create V3 encryption client with KMS
client = Aws::S3::EncryptionV3::Client.new(
  kms_key_id: kms_key_id,
  key_wrap_schema: :kms_context,
  content_encryption_schema: :aes_gcm_no_padding,
  security_profile: :v3_and_legacy,
  commitment_policy: :require_encrypt_allow_decrypt
)

# Encrypt and upload object
client.put_object(bucket: 'my-bucket', key: 'my-object', body: 'secret data')

# Download and decrypt object
resp = client.get_object(bucket: 'my-bucket', key: 'my-object')
decrypted_data = resp.body.read
```

 **移行後 (V3)** 

```
require 'aws-sdk-s3'

# Create V3 encryption client with KMS
client = Aws::S3::EncryptionV3::Client.new(
  kms_key_id: kms_key_id,
  key_wrap_schema: :kms_context,
  content_encryption_schema: :aes_gcm_no_padding,
  security_profile: :v3,
  # Use the commitment policy (REQUIRE_ENCRYPT_REQUIRE_DECRYPT)
  # This encrypts with key commitment and does not decrypt V2 objects
  commitment_policy: :require_encrypt_require_decrypt
)

# Encrypt and upload object
client.put_object(bucket: 'my-bucket', key: 'my-object', body: 'secret data')

# Download and decrypt object
resp = client.get_object(bucket: 'my-bucket', key: 'my-object')
decrypted_data = resp.body.read
```

V3 の主な違いは、 `commitment_policy`パラメータの追加です。に設定すると`:require_encrypt_require_decrypt`、新しいオブジェクトがキーコミットメントで暗号化され、クライアントはキーコミットメントで暗号化されたオブジェクトのみを復号するため、データキーの改ざんに対するセキュリティが強化されます。

`put_object` 呼び出し自体は変更されません。すべてのセキュリティ強化は、クライアントレベルで設定されます。

### その他の例
<a name="s3-encryption-migration-v2-v3-additional-examples"></a>

このセクションでは、V2 から V3 への移行中に役立つ可能性のある特定の移行シナリオと設定オプションの追加の例を示します。

#### 命令ファイルとメタデータストレージ
<a name="s3-encryption-migration-v2-v3-example-storage"></a>

S3 暗号化クライアントは、暗号化メタデータ (暗号化されたデータキーを含む) を S3 オブジェクトのメタデータヘッダーまたは別の命令ファイルという 2 つの異なる場所に保存できます。ストレージ方法の選択は、キーコミットメント保護による AES GCM のメリットを受けるオブジェクトに影響します。

 **メタデータストレージ (デフォルト)** 

デフォルトでは、暗号化クライアントは暗号化メタデータを S3 オブジェクトのメタデータヘッダーに保存します。これは、暗号化メタデータを オブジェクトに保持し、個別の命令ファイルオブジェクトを管理する必要がないため、ほとんどのユースケースで推奨されるアプローチです。

```
require 'aws-sdk-s3'

# Create V3 encryption client with metadata storage (default)
client = Aws::S3::EncryptionV3::Client.new(
  kms_key_id: kms_key_id,
  key_wrap_schema: :kms_context,
  content_encryption_schema: :aes_gcm_no_padding,
  security_profile: :v3_and_legacy,
  commitment_policy: :require_encrypt_allow_decrypt,
  envelope_location: :metadata # Explicitly set to metadata (this is the default)
)

# Encrypt and upload object
# Encryption metadata is stored in the object's metadata headers
client.put_object(bucket: 'my-bucket', key: 'my-object',body: 'secret data')
```

メタデータストレージを使用する場合、キーコミットメントを持つ AES GCM は暗号化されたデータキーには適用されません。ただし、コンテンツ暗号化は、 `commitment_policy: :require_encrypt_allow_decrypt`または を使用する場合でもキーコミットメントの恩恵を受けます`:require_encrypt_require_decrypt`。

 **命令ファイルストレージ** 

または、暗号化メタデータを命令ファイルと呼ばれる別の S3 オブジェクトに保存するように暗号化クライアントを設定することもできます。V3 で命令ファイルを使用する場合、暗号化されたデータキーはキーコミットメントで AES GCM によって保護されるため、データキーの改ざんに対するセキュリティが向上します。

```
require 'aws-sdk-s3'

# Create V3 encryption client with instruction file storage
client = Aws::S3::EncryptionV3::Client.new(
  kms_key_id: kms_key_id,
  key_wrap_schema: :kms_context,
  content_encryption_schema: :aes_gcm_no_padding,
  security_profile: :v3_and_legacy,
  commitment_policy: :require_encrypt_allow_decrypt,
  envelope_location: :instruction_file, # Store metadata in separate instruction file
  instruction_file_suffix: '.instruction' # Optional: customize the suffix (default is '.instruction')
)

# Encrypt and upload object
# Encryption metadata is stored in a separate object: 'my-object.instruction'
client.put_object(bucket: 'my-bucket', key: 'my-object', body: 'secret data')

# When retrieving the object, the client automatically reads the instruction file
resp = client.get_object(bucket: 'my-bucket', key: 'my-object')
decrypted_data = resp.body.read
```

を使用する場合`envelope_location: :instruction_file`、暗号化クライアントは 2 つの S3 オブジェクトを作成します。

1. 暗号化されたデータオブジェクト (例: `my-object`)

1. 暗号化メタデータを含む指示ファイル (例: `my-object.instruction`)

`instruction_file_suffix` パラメータを使用すると、命令ファイルに使用されるサフィックスをカスタマイズできます。デフォルト値は `.instruction` です。

 **各ストレージ方法を使用するタイミング** 
+  **メタデータストレージは**、ほとんどのシナリオで使用します。暗号化メタデータはオブジェクトとともに移動するため、オブジェクト管理が簡素化されます。
+  オブジェクトメタデータのサイズが懸念される場合、または暗号化されたオブジェクトから暗号化メタデータを分離する必要がある場合は、**命令ファイルストレージを使用します**。命令ファイルを使用するには、2 つの S3 オブジェクト (暗号化されたオブジェクトとその命令ファイル) を 1 つではなく管理する必要があることに注意してください。

**警告**  
メタデータストレージから命令ファイルストレージに変更した場合 (またはその逆）、古いストレージメソッドで暗号化された既存のオブジェクトは、新しいストレージメソッドで設定されたクライアントでは読み取れません。ストレージ方法を慎重に計画し、アプリケーション全体の一貫性を維持します。