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