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

意図しない公開バケットポリシーが適用されないよう、ブロック設定を管理してください。

説明

block_public_policyは、公開アクセスを許可するバケットポリシーの適用リクエストを拒否する保護機能です。この保護が適用されない場合、誤ったポリシーが不要な外部アクセスを許可するおそれがあります。

実際のアクセスは、バケットポリシーや他のアクセス制御にも左右されます。S3はアカウントやバケットなどのパブリックアクセスブロック設定のうち、より厳しい設定を適用するため、一つのバケット設定だけで公開状態とは判断できません。

想定される影響

  • 誤った公開ポリシーによって、外部からのアクセスが許可されるおそれがあります。
  • 不要な読み取り権限によって、バックアップ、ログ、内部文書が漏えいするおそれがあります。

対処方法

  • 公開ポリシーが不要な場合は、アカウントとバケットでblock_public_policy = trueを設定してください。
  • 既存の公開ポリシーも確認し、不要な権限を削除してください。この設定では、適用済みのポリシーは削除されず、その効力も変わりません。
  • 意図的に公開する場合は必要な操作とリソースに限定し、他のパブリックアクセスブロック設定と実際のアクセスも確認してください。

例

以下は、アカウント単位の設定を比較する抜粋です。アカウントIDを実際の値に置き換え、同じアカウントのバケットを用意してください。他のレベルのブロック設定と実際のバケットポリシーは省略しています。

変更前

hcl
resource "aws_s3_account_public_access_block" "example" {
  account_id = 250924516109
}

resource "aws_s3_bucket_public_access_block" "example" {
  bucket                  = aws_s3_bucket.public_bucket.id
  block_public_acls       = false
  block_public_policy     = false
  ignore_public_acls      = false
  restrict_public_buckets = false
}

変更後

hcl
resource "aws_s3_account_public_access_block" "example" {
  account_id           = 250924516109
  block_public_policy  = true
}

resource "aws_s3_bucket_public_access_block" "example" {
  bucket                  = aws_s3_bucket.public_bucket.id
  block_public_acls       = false
  block_public_policy     = false
  ignore_public_acls      = false
  restrict_public_buckets = false
}

説明:

変更後は、アカウント単位で公開バケットポリシーの適用をブロックします。バケットのblock_public_policy = falseでは、この制限は緩和されません。既存のポリシーと他のパブリックアクセスブロック設定は別途確認してください。

参考資料