S3のアクセス制御方法はバケットポリシーとACLの2つがある

 

S3アクセスの特徴

  • デフォルトではアカウント管理者、 ルートユーザーのみ アクセス可能
  • IAMで権限管理ができる
    • S3のバケットに直接IAMポリシーを組み込むことが可能(リソースベースのポリシー)
    • 特定 IP アドレスのみ許可 などの接続制限が可能
  • ACLでも権限管理(アクセス管理)ができる
    • アカウント 単位
    • バケット 単位
    • オブジェクト 単位

 

S3のバケットポリシーとACL

S3バケットの公開に対する制御はバケットポリシーまたはACLで実現します。

バケットポリシーはバケットのみに設定されるアクセス制御です。

ACLはバケットとオブジェクトの両方に設定することができます

 

バケット単位のACLの設定に関係なくオブジェクト単位(データ)のACLが優先されるように設定されます。

つまり、バケット単位にACLでパブリックアクセスを許可しない設定にすることに加えて、

常にアップロードされたオブジェクトについてもパブリックアクセスを許可していない確認が必要です。

そのため、追加されたのが S3のパブリックアクセス設定機能です。

 

S3 の パブリックアクセス設定機能の範囲は、バケットレベルまたはアカウントレベルです。

すべてのオブジェクトへのパブリックアクセスをブロックできます。

S3 は PCI-DSS、HIPAA/HITECH、FedRAMP、EU データ保護指令、および FISMA などのコンプライアンスプログラムを維持し、規制要件を満たしています。

S3はソースへのアクセスリクエストをモニタリングするための監査機能も多数サポートしています。

ブロックを有効化することで、S3バケット全体に対してパブリックアクセスを拒否することも可能です。

 

S3 アクセスコントロールリスト (ACL)のアクセス制御

  • ブロック パブリック アクセスのアカウント設定(マネジメントコンソール画面)
    • 新規にアップロードする際に、デフォルトで公開状態にならないようにする設定画面

 

Amazon S3 アクセスコントロールリスト (ACL) では、バケットとオブジェクトへのアクセスを管理できます。

各バケットとオブジェクトには、サブリソースとして ACL がアタッチされています。

これにより、アクセスが許可される AWS アカウントまたはグループとアクセスの種類が定義されます。

リソースに対するリクエストを受信すると、Amazon S3 は該当する ACL を調べて、必要なアクセス許可がリクエスタにあることを確認します。

バケットポリシーは、バケットに対してユーザーアクセス権限を設定するポリシーです。

オブジェクト単位でのアクセス権限のコントロールにはACLを利用します。

 

S3バケットの公開に対する制御

S3バケットの公開に対する制御はACLまたはバケットポリシーにより実行します。

バケットポリシーはバケットのみに設定されるアクセス制御ですが、ACLはバケットとオブジェクトの両方に設定することができます。

これは、バケット単位のACLの設定に関係なくオブジェクト単位のACLが優先されるように設定されます。

つまり、バケット単位にACLでパブリックアクセスを許可しない設定にすることに加えて、常にアップロードされたオブジェクトについてもパブリックアクセスを許可していないことを確認することが必要となります。

そのため、追加されたのが S3のパブリックアクセス設定機能です。