説明
ACL を使う S3 バケットでは、公開 ACL の権限を無視せず、ほかの制御でも遮断しなければ、外部アクセスを許可する可能性があります。IgnorePublicAcls: true はバケットとオブジェクトの公開 ACL 権限を無視しますが、ACL 自体の削除や新しい公開 ACL 設定リクエストの拒否は行いません。
実際のアクセスは、ACL の有効状態やアカウントレベルのブロックなどにも依存します。新しいバケットでは ACL がデフォルトで無効なため、この設定だけで公開アクセスの有無は判断できません。
想定される影響
- 公開読み取り権限が適用されると、オブジェクトの内容や一覧が漏えいする可能性があります。
- 公開 ACL を残したままブロック設定を解除すると、公開アクセスが再び許可される可能性があります。
対処方法
PublicAccessBlockConfigurationにIgnorePublicAcls: trueを設定してください。- 新しい公開 ACL のリクエストも拒否するには
BlockPublicAclsを有効にし、非公開バケットのほかの公開ブロック設定も確認してください。 - 既存の ACL から不要な公開権限を削除し、必要なアクセスをポリシーで設定してください。
例
以下では、同じバケットの公開 ACL 保護設定を変更します。
変更前
yaml
Resources:
Bucket13:
Type: AWS::S3::Bucket
Properties:
PublicAccessBlockConfiguration:
BlockPublicAcls: false
BlockPublicPolicy: true
IgnorePublicAcls: false
RestrictPublicBuckets: true
公開 ACL の権限を無視しません。ACL が有効でほかの制御が遮断しなければ、既存の公開権限が適用される可能性があります。
変更後
yaml
Resources:
Bucket13:
Type: AWS::S3::Bucket
Properties:
PublicAccessBlockConfiguration:
BlockPublicAcls: true
BlockPublicPolicy: true
IgnorePublicAcls: true
RestrictPublicBuckets: true
公開 ACL の権限を無視し、新しい公開 ACL のリクエストも拒否します。既存の ACL は自動削除されないため、不要な権限を別途削除してください。