説明
ignore_public_aclsは、公開ACLが存在しても、その公開権限をS3のアクセス制御に使わないようにする保護機能です。block_public_aclsが新しい公開ACLリクエストをブロックするのに対し、この設定は既存の公開ACLによる権限も無視します。
実際の権限は、他のブロック設定やObject Ownershipにも左右されます。ACLが無効なバケットではACLは権限を付与しないため、この設定だけで公開状態とは判断できません。
想定される影響
- 公開ACLの権限が有効なままだと、意図しない利用者のアクセスが継続するおそれがあります。
- 不要な読み取り権限によって、オブジェクトの内容やバケット内のオブジェクト一覧が公開されるおそれがあります。
対処方法
ignore_public_acls = trueを設定し、公開ACLによる権限がアクセス制御に使われないようにしてください。block_public_aclsも確認し、不要な公開ACLを削除してください。公開ACLを無視しても、保存されたACL自体は削除されません。- ACLが不要ならObject Ownershipで無効にしてください。バケットポリシーを含む他の権限も別途確認してください。
例
以下は、公開ACLを無視する設定を比較する例です。新しいバケットでは既定でACLが無効であり、アカウントなどの他のブロック設定も適用される場合があります。バケット名は実際に使う名前に置き換えてください。
変更前
hcl
resource "aws_s3_bucket" "example" {
bucket = "example"
}
resource "aws_s3_bucket_public_access_block" "example" {
bucket = aws_s3_bucket.example.id
block_public_acls = true
block_public_policy = true
ignore_public_acls = false
}
変更後
hcl
resource "aws_s3_bucket" "example" {
bucket = "example"
}
resource "aws_s3_bucket_public_access_block" "example" {
bucket = aws_s3_bucket.example.id
block_public_acls = true
block_public_policy = true
ignore_public_acls = true
}
説明:
変更後は公開ACLによる権限を無視します。既存ACLの削除や、バケットポリシーが付与する権限の遮断は行わないため、実際のアクセスも確認してください。