S3 の公開ポリシーのブロック設定の確認

S3 の公開ポリシーのブロックを、公開要件とほかのアクセス制御に合わせて設定してください。

説明

S3 の BlockPublicPolicy は、S3 が公開と判断するバケットポリシーの保存要求を拒否する設定です。無効にしただけでデータが公開されるわけではありません。新しいバケットではパブリックアクセスブロックが既定で有効になり、テンプレートに設定がないことだけでは、実際の保護が無効だとは判断できません。

バケットやアカウントなどに適用されるブロック設定のうち、より厳しい設定が優先されます。BlockPublicPolicy を有効にしても既存ポリシーは削除されないため、現在の権限も確認する必要があります。

想定される影響

非公開のバケットで公開ポリシーの保存を拒否しないと、その後の誤った権限付与によって外部へのデータ公開につながるおそれがあります。実際の範囲は、ポリシーの操作とリソース、ほかのアクセス制御によって変わります。

対処方法

  • 非公開バケットでは、パブリックアクセスブロックの四つのオプションを明示的に有効にしてください。
  • 既存のバケットポリシーと ACL にある不要な公開権限も削除し、アカウント単位の設定を確認してください。
  • 意図的な公開サービスでは、必要な範囲と代替構成を検討してください。保護の変更によって正規のサービスや必要なクロスアカウントアクセスが停止しないことを試験してください。

例

同じバケットのブロック設定を比較します。ポリシーや ACL は別途権限を付与するもので、この設定だけでオブジェクトが公開されるわけではありません。

変更前

yaml
Resources:
  Bucket13:
    Type: AWS::S3::Bucket
    Properties:
      PublicAccessBlockConfiguration:
        BlockPublicAcls: false
        BlockPublicPolicy: false
        IgnorePublicAcls: false
        RestrictPublicBuckets: true

BlockPublicPolicy は無効ですが、RestrictPublicBuckets は有効です。二つの設定は役割が異なり、適用されるアカウント単位の保護も確認する必要があります。

変更後

yaml
Resources:
  Bucket13:
    Type: AWS::S3::Bucket
    Properties:
      PublicAccessBlockConfiguration:
        BlockPublicAcls: true
        BlockPublicPolicy: true
        IgnorePublicAcls: true
        RestrictPublicBuckets: true

四つのブロック設定をすべて有効にします。既存のポリシーや ACL を削除する変更ではないため、不要な公開許可も整理し、必要なアクセスを確認してください。

参考資料