コンテンツにスキップ

S3.8

検証日: 2026-04-12 / リージョン: ap-northeast-1

--profile 指定がない場合は Workload アカウントで実行する。export AWS_PROFILE=Workload でデフォルトを設定しておくと便利。

コントロールの説明

S3 汎用バケットのバケットレベル Block Public Access(BPA)が有効かをチェックする。4 設定(BlockPublicAcls, IgnorePublicAcls, BlockPublicPolicy, RestrictPublicBuckets)のいずれかが無効であれば FAILED となる。

S3.2 / S3.3(BPA + ポリシー + ACL の総合判断)とは異なり、BPA の設定値を直接チェックする設定ベースの評価方式である。バケットポリシーや ACL の内容は評価しない。BPA を 1 設定でも無効化すれば即 NON_COMPLIANT になる。

アカウントレベル BPA が有効でも、バケットレベル BPA が無効なら NON_COMPLIANT となる。バケットレベルの設定のみをチェックし、上位レベルは考慮しない(S3.19 と同じ挙動)。

BPA の 4 設定の詳細は BPA について を参照。

対応する Config ルール: S3_BUCKET_LEVEL_PUBLIC_ACCESS_PROHIBITED(変更トリガー)

結果

  • デフォルトで作成したバケットは BPA 4 設定すべて有効で PASSED
  • 1 設定だけ無効化しても NON_COMPLIANT(4 設定すべて有効でないと COMPLIANT にならない)
  • アカウントレベル BPA が有効でも、バケットレベル BPA が無効なら NON_COMPLIANT のまま
  • BPA 再有効化で COMPLIANT に復帰
  • S3 ポリシー(S3 BPA) を有効化しても NON_COMPLIANT のまま(バケットレベル BPA は変更されないため)

前提条件

項目状態
アカウントレベル BPA未設定
バケットレベル BPA4 設定すべて有効(デフォルト)

検証の流れ

    flowchart LR
    A[1. デフォルト状態の確認] --> B[2. テストバケット作成]
    B --> C[3. BPA 無効化 →<br>NON_COMPLIANT 確認]
    C --> D[4. アカウントレベル<br>BPA の影響確認]
    D --> E[5. BPA 再有効化 →<br>COMPLIANT 復帰確認]
    E --> F[6. クリーンアップ]
  

1. デフォルト状態の確認

Security Hub finding の現在の状態を確認

aws securityhub get-findings \
  --filters '{
    "ComplianceSecurityControlId": [{"Comparison": "EQUALS", "Value": "S3.8"}],
    "ComplianceStatus": [{"Comparison": "EQUALS", "Value": "PASSED"}]
  }' \
  --query 'Findings[*].{ResourceId:Resources[0].Id,Status:Compliance.Status}' \
  --region ap-northeast-1
[
    {
        "ResourceId": "arn:aws:s3:::<バケット名>",
        "Status": "PASSED"
    },
    ...
]

全バケット PASSED。

2. テストバケット作成

aws s3api create-bucket \
  --bucket <テストバケット名> \
  --create-bucket-configuration LocationConstraint=ap-northeast-1 \
  --region ap-northeast-1
{
    "Location": "http://<テストバケット名>.s3.amazonaws.com/",
    "BucketArn": "arn:aws:s3:::<テストバケット名>"
}

デフォルトの BPA 設定を確認

aws s3api get-public-access-block \
  --bucket <テストバケット名> \
  --region ap-northeast-1
{
    "PublicAccessBlockConfiguration": {
        "BlockPublicAcls": true,
        "IgnorePublicAcls": true,
        "BlockPublicPolicy": true,
        "RestrictPublicBuckets": true
    }
}

3. BPA 無効化 → NON_COMPLIANT 確認

BPA を 1 設定だけ無効化

aws s3api put-public-access-block \
  --bucket <テストバケット名> \
  --public-access-block-configuration \
    BlockPublicAcls=false,IgnorePublicAcls=true,BlockPublicPolicy=true,RestrictPublicBuckets=true \
  --region ap-northeast-1
(出力なし)

BPA 設定の確認

aws s3api get-public-access-block \
  --bucket <テストバケット名> \
  --region ap-northeast-1
{
    "PublicAccessBlockConfiguration": {
        "BlockPublicAcls": false,
        "IgnorePublicAcls": true,
        "BlockPublicPolicy": true,
        "RestrictPublicBuckets": true
    }
}

Config ルールの手動トリガー

aws configservice start-config-rules-evaluation \
  --config-rule-names securityhub-s3-bucket-level-public-access-prohibited-<サフィックス> \
  --region ap-northeast-1
(出力なし)

Config 評価結果の確認

aws configservice get-compliance-details-by-config-rule \
  --config-rule-name securityhub-s3-bucket-level-public-access-prohibited-<サフィックス> \
  --query 'EvaluationResults[?EvaluationResultIdentifier.EvaluationResultQualifier.ResourceId==`<テストバケット名>`].{ResourceId:EvaluationResultIdentifier.EvaluationResultQualifier.ResourceId,ComplianceType:ComplianceType}' \
  --region ap-northeast-1
[
    {
        "ResourceId": "<テストバケット名>",
        "ComplianceType": "NON_COMPLIANT"
    }
]

1 設定だけ無効化しても NON_COMPLIANT。S3.2 / S3.3 とは異なり、BPA の設定値を直接チェックするため、バケットポリシーや ACL の有無に関わらず即 NON_COMPLIANT になる。

4. アカウントレベル BPA の影響確認

アカウントレベル BPA が有効でも、バケットレベル BPA が無効なら NON_COMPLIANT のままであることを確認する。

バケットレベル BPA を全無効化

aws s3api put-public-access-block \
  --bucket <テストバケット名> \
  --public-access-block-configuration \
    BlockPublicAcls=false,IgnorePublicAcls=false,BlockPublicPolicy=false,RestrictPublicBuckets=false \
  --region ap-northeast-1
(出力なし)

バケットレベル BPA の確認

aws s3api get-public-access-block \
  --bucket <テストバケット名> \
  --region ap-northeast-1
{
    "PublicAccessBlockConfiguration": {
        "BlockPublicAcls": false,
        "IgnorePublicAcls": false,
        "BlockPublicPolicy": false,
        "RestrictPublicBuckets": false
    }
}

アカウントレベル BPA を有効化

aws s3control put-public-access-block \
  --account-id <アカウント ID> \
  --public-access-block-configuration \
    BlockPublicAcls=true,IgnorePublicAcls=true,BlockPublicPolicy=true,RestrictPublicBuckets=true \
  --region ap-northeast-1
(出力なし)

アカウントレベル BPA の確認

aws s3control get-public-access-block \
  --account-id <アカウント ID> \
  --region ap-northeast-1
{
    "PublicAccessBlockConfiguration": {
        "BlockPublicAcls": true,
        "IgnorePublicAcls": true,
        "BlockPublicPolicy": true,
        "RestrictPublicBuckets": true
    }
}

Config ルールの手動トリガー → NON_COMPLIANT のまま確認

aws configservice start-config-rules-evaluation \
  --config-rule-names securityhub-s3-bucket-level-public-access-prohibited-<サフィックス> \
  --region ap-northeast-1
(出力なし)
aws configservice get-compliance-details-by-config-rule \
  --config-rule-name securityhub-s3-bucket-level-public-access-prohibited-<サフィックス> \
  --query 'EvaluationResults[?EvaluationResultIdentifier.EvaluationResultQualifier.ResourceId==`<テストバケット名>`].{ResourceId:EvaluationResultIdentifier.EvaluationResultQualifier.ResourceId,ComplianceType:ComplianceType}' \
  --region ap-northeast-1
[
    {
        "ResourceId": "<テストバケット名>",
        "ComplianceType": "NON_COMPLIANT"
    }
]

アカウントレベル BPA が有効でも、バケットレベル BPA が無効なら NON_COMPLIANT のまま。S3.8 はバケットレベルの BPA 設定のみをチェックし、上位レベルは考慮しない。

アカウントレベル BPA を元に戻す

aws s3control delete-public-access-block \
  --account-id <アカウント ID> \
  --region ap-northeast-1
(出力なし)

5. BPA 再有効化 → COMPLIANT 復帰確認

BPA 再有効化

aws s3api put-public-access-block \
  --bucket <テストバケット名> \
  --public-access-block-configuration \
    BlockPublicAcls=true,IgnorePublicAcls=true,BlockPublicPolicy=true,RestrictPublicBuckets=true \
  --region ap-northeast-1
(出力なし)

BPA 設定の確認

aws s3api get-public-access-block \
  --bucket <テストバケット名> \
  --region ap-northeast-1
{
    "PublicAccessBlockConfiguration": {
        "BlockPublicAcls": true,
        "IgnorePublicAcls": true,
        "BlockPublicPolicy": true,
        "RestrictPublicBuckets": true
    }
}

Config ルールの手動トリガー

aws configservice start-config-rules-evaluation \
  --config-rule-names securityhub-s3-bucket-level-public-access-prohibited-<サフィックス> \
  --region ap-northeast-1
(出力なし)

Config 評価結果の確認

aws configservice get-compliance-details-by-config-rule \
  --config-rule-name securityhub-s3-bucket-level-public-access-prohibited-<サフィックス> \
  --query 'EvaluationResults[?EvaluationResultIdentifier.EvaluationResultQualifier.ResourceId==`<テストバケット名>`].{ResourceId:EvaluationResultIdentifier.EvaluationResultQualifier.ResourceId,ComplianceType:ComplianceType}' \
  --region ap-northeast-1
[
    {
        "ResourceId": "<テストバケット名>",
        "ComplianceType": "COMPLIANT"
    }
]

BPA 再有効化で COMPLIANT に復帰。

6. クリーンアップ

aws s3api delete-bucket \
  --bucket <テストバケット名> \
  --region ap-northeast-1
(出力なし)

Amazonアソシエイトリンク