AWS S3の新機能: 移動なしの再暗号化

UpdateObjectEncryption APIのリリースは、大規模なデータセキュリティ管理における大きな転換点となる。従来、S3オブジェクトの暗号化を変更することは「物理的な」操作であり、ビットを移動する必要があった。今やそれは「論理的な」メタデータ操作となった。
技術詳細: 移動なしの再暗号化
この更新の背後にある「魔法」はエンベロープ暗号化にある。従来のCopyObjectワークフローでは、S3は古い鍵で実際のデータを復号し、新しい鍵で再暗号化して、事実上新しいファイルを作成する必要があった。
UpdateObjectEncryption APIでは、S3は基盤となるデータブロックに触れない。代わりに、データキー(DK)のみとやり取りする。
- S3はオブジェクトのメタデータに保存されている暗号化されたデータキーを取得する。
- 古いマスターキーを使用してそのデータキーを復号する。
- 同じデータキーを新しいKMSマスターキーで直ちに再暗号化する。
- オブジェクトのメタデータが新しい暗号化データキーでアトミックに更新される。
データ自体(暗号文)は同一のままなので、ETag(データのハッシュ)と作成日はまったく変わらない。
長所と短所
長所
- データのゼロレイテンシ: データが移動されないため、ファイルサイズに関係なく(1KBから5TBまで)操作はミリ秒で完了する。
- ストレージ整合性:
Last-Modified日付、ETag、Version IDが保持される。これはキャッシュ検証にETagを使用するアプリケーションにとって重要だ。 - アーカイブ対応: Glacierオブジェクトを事前に「復元」することなく暗号化をアップグレードできる。コールドストレージに置いたままでよい。
- コスト効率: コピーに関連するデータ取得料金(GET)とデータ転送料金を回避できる。API呼び出し(PUT価格)の支払いのみで済む。
- Intelligent-Tieringの安全性: S3 Intelligent-TieringのオブジェクトがFrequent Accessティアに「リセット」されることがなく、コスト最適化の進行状況が保持される。
短所
- KMSのみ:
SSE-KMSへの更新のみ可能。SSE-CやDSSE-KMSはサポートしない。 - 「非暗号化」は非サポート: ソースオブジェクトは必ず既に暗号化されている必要がある(SSE-S3またはSSE-KMS)。稀なレガシー「プレーンテキスト」オブジェクトの場合、このAPIは失敗する。
- Object Lockの壁: オブジェクトがリーガルホールドまたは保持モードにある場合、ロックが解除されるまで暗号化を更新できない。
- KMS ARNの要件: KMSキーエイリアスは使用できず、完全なAmazon Resource Name(ARN)を提供する必要がある。
比較: UpdateObjectEncryption vs. CopyObject
| 機能 | UpdateObjectEncryption(新) | CopyObject(レガシー) |
| データ移動 | なし(メタデータ更新のみ) | 完全なデータコピー |
| オブジェクトメタデータ | 保持(ETag、作成日) | リセット(新しいETag、新しい日付) |
| Glacierサポート | アーカイブ中でも動作 | 最初に「復元」が必要 |
| スループット | 高い(アトミック/即時) | オブジェクトサイズ/帯域幅に制限される |
| コスト | PUTリクエストのみ($0.005/1k) | GET + PUT + データ取得料金 |
| Object Lock | ブロックされる | 新しいバージョンを作成(バージョニング有効時) |
判断ガイド: どちらを選ぶべきか?
1. UpdateObjectEncryptionを使用するケース:
- 状況: コンプライアンス監査。規制要件を満たすために、AWS管理キー(
SSE-S3)からカスタマー管理キー(SSE-KMS)に切り替える必要がある。 - 状況: アーカイブデータ。復元の膨大なコストをかけずに暗号化アップグレードが必要なGlacier Deep Archive内のペタバイト級のデータがある。
- 状況: 巨大オブジェクト。コピー操作に数時間かかりタイムアウトのリスクがある5TBのオブジェクトがある。
- 状況: ETag依存。アプリケーションロジックが同期/キャッシングのためにETagの不変性に依存している。
2. CopyObjectを使用するケース:
- 状況: 暗号化されていないソース。全く暗号化されていない非常に古いオブジェクトを扱っている。
- 状況: クロスリージョン/アカウント。暗号化を変更しながらデータを別のバケットやリージョンに移動する必要がある。
- 状況: SSE-C要件。新しいAPIがサポートしていないカスタマー提供キー(SSE-C)を使用する必要がある。
- 状況: ロックされたオブジェクト。永続的にロックされたオブジェクト(コンプライアンスモード)の暗号化を更新する必要がある。この場合、新しいコピー/バージョンが唯一の手段となる。
大規模環境での注意点: 数百万のオブジェクトを扱う場合、このAPIをループで呼び出してはいけない。S3 Batch Operationsを使用すること。AWSはこの新しいAPIをBatchコンソールに直接統合しており、数クリックでバケット全体に対して「再暗号化」ジョブを実行できる。
公式AWSニュースはこちら: https://aws.amazon.com/about-aws/whats-new/2026/01/change-the-server-side-encryption-type-of-s3-objects/
公式AWSドキュメント: 既存データのサーバーサイド暗号化の更新。
Ercan の他のサイト
同じ著者、別の領域のサイトが2つ。