S3 の公開 ACL ブロック設定の確認

新しい公開 ACL を拒否する S3 の設定を確認し、既存の公開権限も削除してください。

説明

S3 バケットで公開 ACL を制限しないと、ACL の設定ミスによってバケットやオブジェクトに意図しない公開権限が付く可能性があります。BlockPublicAcls は新しい公開 ACL を含むリクエストを拒否しますが、既存の ACL は削除しません。

実際の公開アクセスは、ACL の有効状態やほかの保護設定によって変わります。新しいバケットでは ACL がデフォルトで無効であり、IgnorePublicAcls やアカウントレベルのブロックによって公開 ACL の権限が適用されない場合もあります。

想定される影響

  • 公開読み取り権限が有効になると、オブジェクトの内容や一覧が漏えいする可能性があります。
  • バケットの公開書き込み権限が有効になると、不要なオブジェクトの作成や削除が可能になる場合があります。

対処方法

  • 公開 ACL が不要なら、PublicAccessBlockConfiguration に BlockPublicAcls: true を設定してください。
  • 既存の公開 ACL 権限を削除し、IgnorePublicAcls を有効にしてください。非公開バケットでは、ほかのパブリックアクセスブロック設定とバケットポリシーも確認してください。
  • ACL を無効にする前に、必要なアクセス権限をポリシーで設定してください。

例

以下では、新しい公開 ACL をブロックする設定を比較します。

変更前

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

BlockPublicAcls は無効ですが、IgnorePublicAcls: true により公開 ACL の権限は無視されます。この例だけでオブジェクトが公開されているとは判断できません。

変更後

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

新しい公開 ACL のリクエストを拒否し、既存の公開 ACL の権限も無視します。必要なアプリケーションアクセスが引き続き機能することを確認してください。

参考資料