コンテンツまでスキップ

【re:Invent 2025】セッションレポート「S3 のセキュリティとアクセスコントロールのベストプラクティス (STG316)」

はじめに

re:Invent 2025で行われたBreakOut Session、「Amazon S3 security and access control best practices (STG316)」のセッションレポートとなります。

セッション概要

Amazon S3 provides security settings and granular access controls to suit any workload.
In this session, learn about the fundamentals of S3 security and dive deep into the latest enhancements in usability and functionality.
Discover best practices for data security and access control in S3.

Amazon S3は、あらゆるワークロードに適したセキュリティ設定ときめ細かなアクセス制御を提供します。
本セッションでは、S3セキュリティの基礎について学び、使いやすさと機能性における最新の機能強化について深く掘り下げます。
S3におけるデータセキュリティとアクセス制御のベストプラクティスをご紹介します。

セッションの様子

aws-re-invent-2025-stg316-1

本セッションは、アクシャット・サンドさん(左)とブライアント・カトラーさん(右)の対話形式で進められました。

アクシャットさんはAmazon S3担当シニア・プロダクト・マネージャー、ブライアントさんはAmazon S3担当プリンシパル・エンジニアという肩書のようで、両名ともAWSのS3サービスのセキュリティと技術に関する専門知識を持つ人物であることがわかります。

セッション内容

S3のセキュリティと耐久性に関する8つのベストプラクティスと、今すぐ始めるべき3つのことについてのプレゼンテーションがありました。

8つのベストプラクティス

aws-re-invent-2025-stg316-2

  1. パブリックアクセスをブロックする
    • 現在新規作成されるS3バケットは、デフォルトでパブリックアクセスブロックが有効になっています
    • 唯一、パブリックアクセスが必要となるWebホスティングのユースケースでは、CloudFrontの利用を強く推奨しています 。
  2. バケットレベルのキーを有効にする
    • バケットキーは、最近ローンチされたコスト削減機能です 。
    • KMSで独自のキーを使用している場合、オブジェクトのPut/GetのたびにS3がKMSと通信する必要があります 。 オブジェクト数が数百万、数十億に上ると、そのリクエストコストは膨大になります 。
    • バケットレベルのキーを使用すると、KMSへのリクエストをキャッシュし、KMSのコストを劇的に削減できます 。 大規模な顧客では400万ドルを節約した例もあります 。
  3. スケールに対応するために責任を分割する
    • S3 アクセスポイント、S3 アクセスグラント、属性ベースのアクセスコントロール等を用いて責任を分割し、スケールに対応しましょう。
  4. セキュリティの変更をモデル化してテストする
    • 本番データを使用せずに、同じバケット、レプリケーション、ライフサイクルルールなど、本番と同じ構成を設定します 。
    • ポリシー変更を加えた後、肯定的なテストケース(動作すべきもの)と否定的なテストケース(動作すべきでないもの)の両方をテストします 。 これらのテストケースを維持し、変更のたびに実行することが重要です 。
  5. AWS Organizationsを使用する
    • OUレベルで設定されたリソースコントロールポリシー(RCP)は、そのOU内のすべてのアカウントのリソースに適用されます 。
    • これにより、「暗号化されていないアクセスを禁止する」などの組織全体のガードレールを簡単に強制できます 。 開発者は独自の設定を行えますが、組織全体のガードレールに準拠していることが保証されます 。
  6. S3のセキュリティをS3外に拡張する
    • データのセキュリティと整合性を確保するため、S3の機能をアプリケーションレイヤーに拡張します
    • チェックサム(Checksums):データ生成時にチェックサムを計算し、S3へのアップロード時に検証することを推奨します 。 AWS SDKを使用すると、アップロードプロセス時に自動的にチェックサムを計算できます 。
    • クライアントサイドの暗号化:KMSで管理するのと同じキーを使用して、ローカルシステムでデータを暗号化します 。
    • 暗号化された転送:すべての通信にHTTPS/TLSを使用することを推奨します 。
  7. ロギングを有効にする
    • AWS CloudTrail:AWS全体からのロギングを提供します 。
    • S3 サーバーアクセスログ:S3固有のアクティビティをログに記録します 。
    • ロギングは予防的コントロールだけでなく、異常検知やドリフト検知、自動化されたインシデント修復に不可欠です 。
  8. 耐久性と復旧のための計画を立てる
    • 条件付き書き込み(Conditional Writes):オブジェクトの上書きを防止します 。
    • S3 オブジェクトバージョニング(Object Versioning):上書きせずに新しいバージョンを追加し、すべてのバージョンにアクセスできるようにします 。
    • S3 オブジェクトロック(Object Lock):オブジェクトが削除できない期間を設定できます 。
    • レプリケーション(Replication):別のリージョンにデータのコピーを持つことで、可用性を高めます 。
    • S3 バックアップ(Backup):ビジネスに不可欠なデータのフルコピーを作成します 。

今から始めるべき3つのこと

aws-re-invent-2025-stg316-3

  1. 新しいタグ付けに移行する
    • AWS標準である新しいタグリソースAPI(ABACサポートを含む)への移行を始めます 。
  2. ロギングを有効にする
    • ロギングは必要になるまでその価値が分かりませんが、今日すぐに有効にすべきです 。
  3. チェックサムをアプリケーションで有効にする
    • データを作成する場所でチェックサムを生成し、オブジェクトの整合性を保証します 。

さいごに

セキュリティは常に変化し続ける領域であり、AWS S3のようなストレージサービスでは特に重要です。 このセッションで紹介された8つのベストプラクティスは、小規模から大規模環境まで適用可能な実践的なアドバイスとなっています。

S3のセキュリティは複雑に見えるかもしれませんが、このセッションで示されたように、体系的なアプローチで対応することで、より安全でコスト効率の高いクラウドストレージ環境を構築可能です。 設計段階から組み込むことの重要性を改めて認識させてくれる価値あるセッションでした。