S3を見ているとバケット単位のパブリックアクセスブロックのほかにアカウントレベルでのパブリックアクセスブロックの設定があったので調べてみた。
アカウントレベルのアクセスブロックとは
Amazon S3 のパブリックアクセスブロックは、Amazon S3 のリソースへのパブリックアクセスの管理に役立つ、アクセスポイント、バケット、アカウントの設定を提供します。デフォルトでは、新しいバケット、アクセスポイント、およびオブジェクトはパブリックアクセスを許可しません。 注記 アカウントレベルの設定は、個々のオブジェクトの設定よりも優先されます。パブリックアクセスをブロックするようにアカウントを設定すると、アカウント内の個々のオブジェクトに対して行われたパブリックアクセスの設定が上書きされます。 docs.aws.amazon.com
アカウントレベルのブロックのほうが強いらしい!!
個別許可したい場合はアカウントレベルを許可し、個別ブロックする形しかなさそう( ゚Д゚)
設定されている場所
※こ・こ♡
操作に必要な権限
- s3:GetBucketPolicyStatus
- s3:GetBucketPublicAccessBlock
- s3:PutBucketPublicAccessBlock
- s3:PutBucketPublicAccessBlock
- s3:GetAccountPublicAccessBlock
- s3:PutAccountPublicAccessBlock
- s3:PutAccountPublicAccessBlock
- s3:CreateAccessPoint
terraformで設定してみた
※これだけ
resource "aws_s3_account_public_access_block" "s3_account_public_acess_block" { block_public_acls = true ignore_public_acls = true block_public_policy = true restrict_public_buckets = true }
# terraform plan # terraform apply Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: + create Terraform will perform the following actions: # aws_s3_account_public_access_block.s3_account_public_acess_block will be created + resource "aws_s3_account_public_access_block" "s3_account_public_acess_block" { + account_id = (known after apply) + block_public_acls = true + block_public_policy = true + id = (known after apply) + ignore_public_acls = true + restrict_public_buckets = true } Plan: 1 to add, 0 to change, 0 to destroy. Do you want to perform these actions? Terraform will perform the actions described above. Only 'yes' will be accepted to approve. Enter a value: yes aws_s3_account_public_access_block.s3_account_public_acess_block: Creating... aws_s3_account_public_access_block.s3_account_public_acess_block: Creation complete after 2s [id=xxxxxxxxxxxx] Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
※変わった!
感想
重要度がよくわからんわりに強制力が強いのが気に食わん( ̄д ̄)