AWS S3 (Simple Storage Service)とは?②

2019/05/20

概要

AWS S3 のデータの暗号化・データの整合性・バージョニング機能についてまとめました。

本記事は前回の続きです。

S3 の暗号化

S3 にはサーバーサイド暗号化とクライアントサイド暗号化の 2 の形式があります。

クライアントサイド暗号化

AWS SDK を使用してデータを S3 に送信する前にデータの暗号化を行います。 復号時には暗号化されたデータのメタデータから、データを復号させるためのキーの判別を行います。

サーバーサイド暗号化

データがストレージに書き込まれる時に暗号化を行い、読み出されるときに復号化を行います。 S3 で鍵の生成・暗号化・復号化を行います。

どう違うの?

クライアントサイドとサーバーサイドで暗号化する違いは、ユーザー側で暗号化を行うか AWS 側で暗号化を行うかが大きな違いとなります。

クライアントサイドで暗号化を行った場合、鍵の管理や手間が少しかかる分、セキュアにデータを扱うことができます。 サーバーサイドで暗号化を行った場合は AWS 側に管理・作成・復号を任せることができるため、手間がかかりません。

データの整合性

S3 のデータは結果整合性モデルを採用しています。 S3 は高可用性を実現するためにデータを複数の場所に保存されており、これらのデータを更新・削除した時に順次、データが更新されていきます。 そして「最終的にコピーされたデータが更新されればいい」と言った考え方が結果整合性モデルです。

データの新規登録を行った場合は即時に反映されますが、更新削除を行った場合については新規登録時に比べて、反映までに時間がかかります。

バージョン管理機能

バケットに対してバージョン管理機能を有効にすることで、Git のバージョン管理機能と同じく、意図しない操作で削除をしてしまった場合、データを復元できるといったことができます。 ライフサイクル機能と合わせてバージョン管理されているデータの保存期間を指定することができます。 バージョン管理されているオブジェクト分も追加で課金されます。

参考