S3の機能の洗い出し

B!

「静的Webホスティングができるよ〜」「ストレージサーバーとして使っているよ〜」という使い方はしてきたのですが、実は高機能だという事を最近知ったので、改めてS3の機能について洗い出してみました。

自戒の意味を込めた記事です

S3のアクセス制御

制御方法 説明 適用範囲 ユースケース例
バケットポリシー - 特定のバケットやオブジェクトに対するアクセスを制御する
- IPアドレスやドメイン単位での制御ができる
バケット全体 静的ウェブサイトのホスティングで「GetObject」を許可。
IAMポリシー AWSユーザーやロール単位でS3のアクセス権限を付与する。 IAMユーザー、グループ、ロール バックアップ用のS3バケットに特定のIAMユーザーだけがアクセス。
ACL(アクセス制御リスト) - オブジェクトやバケット単位で細かなアクセス制御を設定する。推奨されない。
- IPアドレスやドメイン単位での制御はできない
バケットまたはオブジェクト 一部のオブジェクトを公開アクセスにする。

S3のストレージクラス

ストレージクラス 特徴 料金 ユースケース
S3 Standard - 高い可用性と耐久性(99.999999999%)
- 即時アクセス可能
最も高いストレージ料金 - 頻繁にアクセスするデータ
- 重要なWebアプリケーションのデータ
S3 Intelligent-Tiering - アクセス頻度に応じて自動的に階層を移動
- アクセスがない場合は低コストになる
アクセスと移行ごとに追加料金あり アクセス頻度が不明なデータや長期間保存される可能性のあるデータ
S3 Standard-IA (Infrequent Access) - 高耐久で即時アクセス可能だが、アクセス頻度が低いデータ向け 保存コストは安いが、アクセスごとに取り出し料金が発生 バックアップデータやアーカイブなど、たまにアクセスするデータ
S3 One Zone-IA - 1つのAZにのみ保存されるため、低コストだが耐久性は低い。 Standard-IAより安い 再生成可能なデータや、特定の地域に限定されたデータ
S3 Glacier Flexble Retrieval(旧S3 Glacier) - 低コストの長期保存向け
- 取り出しに数時間かかる場合あり。
非常に安価だが、取り出し時の料金が高い 監査記録や法的なデータ保存
S3 Glacier Deep Archive - 最も安価なストレージクラス
- 取り出しに12時間以上かかることも。
最も低いストレージコスト ほとんどアクセスされないデータの保存(数年単位のアーカイブ)
S3 Glacier Instant Retrieval - アクセスされることがほとんどなく、ミリ秒単位の取り出しが可能 標準よりやや安価 すぐにアクセスする必要のあるアーカイブデータ

 

S3の暗号化方式

サーバー側暗号化 (SSE: Server-Side Encryption)

Amazon S3がデータを保存する際に暗号化を実施

SSE-S3 (Server-Side Encryption with Amazon S3-Managed Keys)

特徴 S3が自動的に管理するキーを使用して暗号化
管理 ユーザー側のキー管理は不要
AWSでやってくれる
ユースケース デフォルトで簡単な暗号化を利用したい場合

SSE-KMS (Server-Side Encryption with AWS Key Management Service)

特徴 AWS KMSを使用して、ユーザーが管理するキーで暗号化
管理 ユーザーはAWS KMSのキー管理が必要。アクセス制御や監査ログが可能
ユースケース 高度なキー管理や監査が必要な場合

    SSE-C (Server-Side Encryption with Customer-Provided Keys)

    特徴 ユーザーが提供したカスタムキーを使用して暗号化
    AWSはキーを保持しない
    管理 ユーザーがキーを完全に管理する必要あり
    ユースケース ユーザーが完全にキーを管理したい場合

    クライアント側暗号化 (CSE: Client-Side Encryption)

    クライアント(ユーザー)がデータをS3にアップロードする前に暗号化します。AWSは暗号化されたデータしか保存しません。

    クライアント側暗号化 (CSE) の種類:

    • CSE-KMS: AWS KMSを使用してクライアントがデータを暗号化。
    • CSE-C: ユーザーが独自に管理するキーを使用してクライアント側で暗号化。

    暗号化方式の選択ポイント

    • デフォルトの簡単な暗号化: SSE-S3
    • 監査ログやアクセス制御が必要: SSE-KMS
    • カスタムキー管理が必要: SSE-C
    • データをAWSに渡す前に暗号化したい: CSE-KMSまたはCSE-C

    オブジェクトロック

    S3バケット内のオブジェクトを一定期間、または無期限に「変更不可能」にするための機能です。
    これにより、意図的または誤って削除・上書きされることを防ぎ、データの不変性(immutability)を保証します。

    これは、金融・医療分野など、法的なデータ保持監査要件のあるシステムに役立ちます。

      リテンションモード

      保存期間のあるロックモード。

      • ガバナンスモード
        • 保存期間が到来すると自動解除
        • `s3:BypassGovernanceRetention` の権限を持っていれば削除可能
      • コンプライアンスモード
        • 保存期間が到来すると自動解除
        • root ユーザーも含めて全てのユーザーが更新, 削除ができない

      リーガルホールド

      保存期間のないロックモード

      • `s3:PutObjectLegalHold` の権限を持っていれば適用及び削除が可能

      Transfer Acceleration

      AWSのネットワークを用いて高速にデータを転送する機能。
      (CloudFront経由のほうが早い説があったりする…?

       

      最新の記事はこちらから