AWS S3 (Simple Storage Service)とは?②
2019/05/20
概要
AWS S3 のデータの暗号化・データの整合性・バージョニング機能についてまとめました。
本記事は前回の続きです。
S3 の暗号化
S3 にはサーバーサイド暗号化とクライアントサイド暗号化の 2 の形式があります。
クライアントサイド暗号化
AWS SDK を使用してデータを S3 に送信する前にデータの暗号化を行います。 復号時には暗号化されたデータのメタデータから、データを復号させるためのキーの判別を行います。
サーバーサイド暗号化
データがストレージに書き込まれる時に暗号化を行い、読み出されるときに復号化を行います。 S3 で鍵の生成・暗号化・復号化を行います。
どう違うの?
クライアントサイドとサーバーサイドで暗号化する違いは、ユーザー側で暗号化を行うか AWS 側で暗号化を行うかが大きな違いとなります。
クライアントサイドで暗号化を行った場合、鍵の管理や手間が少しかかる分、セキュアにデータを扱うことができます。 サーバーサイドで暗号化を行った場合は AWS 側に管理・作成・復号を任せることができるため、手間がかかりません。
データの整合性
S3 のデータは結果整合性モデルを採用しています。 S3 は高可用性を実現するためにデータを複数の場所に保存されており、これらのデータを更新・削除した時に順次、データが更新されていきます。 そして「最終的にコピーされたデータが更新されればいい」と言った考え方が結果整合性モデルです。
データの新規登録を行った場合は即時に反映されますが、更新削除を行った場合については新規登録時に比べて、反映までに時間がかかります。
バージョン管理機能
バケットに対してバージョン管理機能を有効にすることで、Git のバージョン管理機能と同じく、意図しない操作で削除をしてしまった場合、データを復元できるといったことができます。 ライフサイクル機能と合わせてバージョン管理されているデータの保存期間を指定することができます。 バージョン管理されているオブジェクト分も追加で課金されます。