コンテンツにスキップ

S3 ポリシー

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

--profile 指定がない場合は Workload アカウントで実行する。S3 ポリシーの作成・アタッチは Master アカウントで実行する。

概要

S3 ポリシー(S3_POLICY)は 宣言型ポリシー の一つで、S3 の Block Public Access(BPA)4 設定を組織レベルで一括強制する。

BPA の階層構造における位置づけ

S3 の BPA は 4 つの階層で設定できる。S3 はリクエストに対して全階層の BPA 設定を評価し、いずれかがブロックを示していればリクエストを拒否する(公式ドキュメント)。

階層粒度
組織レベル(S3 ポリシー、本ページ)OU / アカウント単位
アカウントレベルアカウント単位
バケットレベルバケット単位
アクセスポイントレベルアクセスポイント単位(作成時のみ設定可)

S3 ポリシーの特徴(公式ドキュメント):

  • 4 設定すべてを一括制御(個別設定不可。全有効化 all か無効化 none の二択。公式ドキュメントに明記)
  • アカウントレベル BPA を強制的に有効化する。バケットレベル BPA は変更しない(実機確認済み)
  • アカウントレベル BPA の設定変更はエラーになる
  • バケットレベル BPA の変更はブロックされない(自由に変更可能)
  • パブリックポリシーの設定はブロックされる
  • デタッチ時はアカウントレベルの元の設定に自動復元

Security Hub finding への影響

S3 ポリシーはアカウントレベル BPA のみに作用するため、各コントロールへの影響は以下の通り。

コントロール評価方式S3 ポリシーの影響(想定)
S3.8設定ベース(バケットレベル BPA)NON_COMPLIANT 状態であった場合、NON_COMPLIANT のまま。バケットレベル BPA は変更されないため
S3.2結果ベース(総合判断)NON_COMPLIANT 状態であった場合、COMPLIANT に変わるBPA 検証のパターン 5 でアカウントレベル BPA 有効時に COMPLIANT になることを確認済み
S3.3結果ベース(総合判断)同上
S3.19設定ベース(AP BPA)NON_COMPLIANT 状態であった場合、NON_COMPLIANT のまま。AP BPA は変更されないため
S3.6ポリシーベースNON_COMPLIANT 状態であった場合、NON_COMPLIANT のまま。BPA とは無関係。バケットポリシーの内容は変わらないため
S3 ポリシーで BPA を強制しても、S3.8 と S3.19 の finding は解消しない。バケットレベル BPA とアクセスポイント BPA は個別に有効化する必要がある。

ポリシーの形式

{
    "s3_attributes": {
        "public_access_block_configuration": {
            "@@assign": "all"
        }
    }
}

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

結果

コントロールFAILED 状態S3 ポリシー有効化後
S3.8NON_COMPLIANTNON_COMPLIANT のまま
S3.2NON_COMPLIANTCOMPLIANT に変化
S3.3NON_COMPLIANTCOMPLIANT に変化
S3.19NON_COMPLIANTNON_COMPLIANT のまま
S3.6NON_COMPLIANTNON_COMPLIANT のまま
  • S3 ポリシーはアカウントレベル BPA を強制するが、バケットレベル BPA とアクセスポイント BPA は変更しない
  • S3.2 / S3.3(結果ベース)はアカウントレベル BPA が有効になることで COMPLIANT に変化する
  • S3.8 / S3.19(設定ベース)はバケットレベル / AP レベルの BPA を直接チェックするため NON_COMPLIANT のまま
  • S3.6(ポリシーベース)は BPA とは無関係のためNON_COMPLIANT のまま
  • アカウントレベル BPA の無効化はブロックされる(AccessDenied)。バケットレベル BPA の変更はブロックされない
  • パブリックポリシーの設定はアカウントレベル BPA の BlockPublicPolicy によりブロックされる
  • デタッチ時はアカウントレベル BPA がアタッチ前の状態に自動復元される

前提条件

項目状態
S3 ポリシー未作成
アカウントレベル BPA未設定
バケットレベル BPA4 設定すべて有効(デフォルト)。パターン A で FAILED 状態を作成する際に無効化する

検証の流れ

    flowchart LR
    A[1. S3 ポリシー<br>作成・アタッチ] --> B[2. パターン A:<br>FAILED → PASSED]
    B --> C[3. パターン B:<br>設定変更ブロック]
    C --> D[4. パターン C:<br>デタッチ → 復元]
    D --> E[5. ポリシー削除]
    E --> F[6. クリーンアップ]
  

1. S3 ポリシー作成・アタッチ

テスト用バケットの作成

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:::<テストバケット名>"
}

S3 ポリシーの作成

aws organizations create-policy \
  --name "s3-bpa-test" \
  --description "S3 BPA enforcement test" \
  --type S3_POLICY \
  --content '{"s3_attributes":{"public_access_block_configuration":{"@@assign":"all"}}}' \
  --profile Master \
  --region ap-northeast-1
{
    "Policy": {
        "PolicySummary": {
            "Id": "<ポリシー ID>",
            "Name": "s3-bpa-test",
            "Type": "S3_POLICY"
        }
    }
}

アタッチ前の BPA 状態を確認

アカウントレベル BPA:

aws s3control get-public-access-block \
  --account-id <アカウント ID> \
  --region ap-northeast-1
An error occurred (NoSuchPublicAccessBlockConfiguration) when calling the GetPublicAccessBlock operation: The public access block configuration was not found

アカウントレベル BPA は未設定。このエラーはアカウントレベルで BPA が一度も設定されていないことを意味する。

バケットレベル BPA:

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

S3 ポリシーを対象 OU にアタッチ

aws organizations attach-policy \
  --policy-id <ポリシー ID> \
  --target-id <対象 OU ID> \
  --profile Master \
  --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
    }
}

アタッチ前は未設定だったアカウントレベル BPA が、S3 ポリシーにより全 true に強制された。

バケットレベル BPA を確認(変更されていないこと)

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

2. パターン A: FAILED → S3 ポリシー有効化 → finding 確認

S3 ポリシーが有効な状態ではバケットレベル BPA の無効化やパブリックポリシーの設定がブロックされるため、FAILED 状態を作成できない。一時的に S3 ポリシーをデタッチしてから FAILED 状態を作成し、再アタッチして finding がどう変わるかを確認する。S3.6 も含めた全 5 コントロールを一括で確認する。

S3 ポリシーを一時デタッチ

aws organizations detach-policy \
  --policy-id <ポリシー ID> \
  --target-id <対象 OU ID> \
  --profile Master \
  --region ap-northeast-1
(出力なし)

S3.8 の FAILED 状態を作成

S3.8 はバケットレベル BPA の 4 設定がすべて有効かをチェックする。FAILED にするためにバケットレベル 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
    }
}

S3.2 / S3.3 の FAILED 状態を作成

S3.2 / S3.3 は BPA 無効化だけでは FAILED にならない(BPA についてで検証済み)。バケットポリシーでパブリック読み書きを許可して初めて FAILED になる。

aws s3api put-bucket-policy \
  --bucket <テストバケット名> \
  --policy '{
    "Version": "2012-10-17",
    "Statement": [
      {
        "Effect": "Allow",
        "Principal": "*",
        "Action": ["s3:GetObject", "s3:PutObject"],
        "Resource": "arn:aws:s3:::<テストバケット名>/*"
      }
    ]
  }' \
  --region ap-northeast-1
(出力なし)

S3.19 の FAILED 状態を作成

S3.19 はアクセスポイントの BPA 設定をチェックする。BPA 無効のアクセスポイントを作成して FAILED にする。アクセスポイントの BPA は作成後に変更できないため、作成時に無効化する必要がある。

aws s3control create-access-point \
  --name <BPA 無効 AP 名> \
  --account-id <アカウント ID> \
  --bucket <テストバケット名> \
  --public-access-block-configuration BlockPublicAcls=false,IgnorePublicAcls=false,BlockPublicPolicy=false,RestrictPublicBuckets=false \
  --region ap-northeast-1
{
    "AccessPointArn": "arn:aws:s3:ap-northeast-1:<アカウント ID>:accesspoint/<BPA 無効 AP 名>",
    "Alias": "<エイリアス>"
}

S3.6 の FAILED 状態を作成

S3.6 はバケットポリシーで他アカウントに制限対象アクションを許可していれば NON_COMPLIANT になる。パブリック読み書きポリシーに加えて、他アカウントへの制限対象アクション許可を追加する。

aws s3api put-bucket-policy \
  --bucket <テストバケット名> \
  --policy '{
    "Version": "2012-10-17",
    "Statement": [
      {
        "Effect": "Allow",
        "Principal": "*",
        "Action": ["s3:GetObject", "s3:PutObject"],
        "Resource": "arn:aws:s3:::<テストバケット名>/*"
      },
      {
        "Effect": "Allow",
        "Principal": {"AWS": "<組織外アカウント ID>"},
        "Action": "s3:PutBucketPolicy",
        "Resource": "arn:aws:s3:::<テストバケット名>"
      }
    ]
  }' \
  --region ap-northeast-1
(出力なし)

Config ルールの手動トリガー → 全コントロール NON_COMPLIANT 確認

S3.8:

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"
    }
]

S3.2:

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

S3.3:

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

S3.19:

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

S3.6:

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

S3 ポリシーを再アタッチ

aws organizations attach-policy \
  --policy-id <ポリシー ID> \
  --target-id <対象 OU ID> \
  --profile Master \
  --region ap-northeast-1
(出力なし)

バケットレベル BPA を確認(変更されないはず)

S3 ポリシーはアカウントレベル BPA を強制するが、バケットレベル BPA を変更するかは不明。ここでバケットレベル BPA が全 false のままであれば、S3 ポリシーはバケットレベルには作用しないことが確認できる。

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

バケットレベル BPA は変更されない(実機確認済み)。

Config ルールの手動トリガー → 各コントロールの状態確認

コントロール想定結果理由
S3.8NON_COMPLIANT のままバケットレベル BPA は変更されないため
S3.2COMPLIANT に変わるアカウントレベル BPA が有効なので「restricts public policies」と判定
S3.3COMPLIANT に変わる同上
S3.19NON_COMPLIANT のままAP BPA は変更されないため
S3.6NON_COMPLIANT のままBPA とは無関係。バケットポリシーの内容は変わらないため

S3.8:

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

S3.2:

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

S3.3:

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

S3.19:

aws configservice start-config-rules-evaluation \
  --config-rule-names securityhub-s3-access-point-public-access-blocks-<サフィックス> \
  --region ap-northeast-1
(出力なし)
aws configservice get-compliance-details-by-config-rule \
  --config-rule-name securityhub-s3-access-point-public-access-blocks-<サフィックス> \
  --query 'EvaluationResults[?EvaluationResultIdentifier.EvaluationResultQualifier.ResourceId==`<BPA 無効 AP 名>`].{ResourceId:EvaluationResultIdentifier.EvaluationResultQualifier.ResourceId,ComplianceType:ComplianceType}' \
  --region ap-northeast-1

S3.6:

aws configservice start-config-rules-evaluation \
  --config-rule-names securityhub-s3-bucket-blacklisted-actions-prohibited-<サフィックス> \
  --region ap-northeast-1
(出力なし)
aws configservice get-compliance-details-by-config-rule \
  --config-rule-name securityhub-s3-bucket-blacklisted-actions-prohibited-<サフィックス> \
  --query 'EvaluationResults[?EvaluationResultIdentifier.EvaluationResultQualifier.ResourceId==`<テストバケット名>`].{ResourceId:EvaluationResultIdentifier.EvaluationResultQualifier.ResourceId,ComplianceType:ComplianceType}' \
  --region ap-northeast-1
S3.8 と S3.19 は「設定ベース」の評価であり、それぞれバケットレベル BPA とアクセスポイント BPA の設定値を直接チェックする。S3 ポリシーはアカウントレベル BPA のみに作用するため、S3.8 と S3.19 は NON_COMPLIANT のまま変化しない。S3.6 は BPA とは無関係にバケットポリシーの内容をチェックするため、S3 ポリシーの影響を受けず NON_COMPLIANT のまま。

3. パターン B: 設定変更ブロック確認

S3 ポリシーが有効な状態で、各レベルの BPA 変更がブロックされるかを確認する。

アカウントレベル BPA の無効化を試みる → AccessDenied

aws s3control delete-public-access-block \
  --account-id <アカウント ID> \
  --region ap-northeast-1
An error occurred (AccessDenied) when calling the DeletePublicAccessBlock operation: This account does not allow changes to its account-level S3 Block Public Access settings due to an organizational S3 Block Public Access policy in effect.

アカウントレベル BPA が変更されていないことを確認

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

バケットレベル 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 の変更はブロックされない。S3 ポリシーはアカウントレベルのみを保護する。

個別設定(一部だけ false)を試みる → ブロックされない

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

パブリックポリシーの設定を試みる → AccessDenied

アカウントレベル BPA の BlockPublicPolicy が有効なため、パブリックポリシーの設定はブロックされる。

aws s3api put-bucket-policy \
  --bucket <テストバケット名> \
  --policy '{
    "Version": "2012-10-17",
    "Statement": [
      {
        "Effect": "Allow",
        "Principal": "*",
        "Action": "s3:GetObject",
        "Resource": "arn:aws:s3:::<テストバケット名>/*"
      }
    ]
  }' \
  --region ap-northeast-1
An error occurred (AccessDenied) ... because public policies are prevented by the BlockPublicPolicy setting in S3 Block Public Access.

4. パターン C: デタッチ → 復元確認

S3 ポリシーをデタッチした後、アカウントレベル BPA がアタッチ前の状態に復元されることを確認する。2 つのケースを検証する。

  • ケース 1: アタッチ前にアカウントレベル BPA が未設定だった場合 → デタッチ後に未設定に戻るか
  • ケース 2: アタッチ前にアカウントレベル BPA を手動で設定していた場合 → デタッチ後に手動設定に戻るか

ケース 1: 未設定からの復元

現在の状態: S3 ポリシーがアタッチされており、アカウントレベル BPA は S3 ポリシーにより全 true に強制されている。アタッチ前はアカウントレベル BPA が未設定だった。

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

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

S3 ポリシーをデタッチ

aws organizations detach-policy \
  --policy-id <ポリシー ID> \
  --target-id <対象 OU ID> \
  --profile Master \
  --region ap-northeast-1
(出力なし)
aws s3control get-public-access-block \
  --account-id <アカウント ID> \
  --region ap-northeast-1
An error occurred (NoSuchPublicAccessBlockConfiguration) when calling the GetPublicAccessBlock operation: The public access block configuration was not found

S3 ポリシーアタッチ前の状態(未設定)に復元。

ケース 2: 手動設定からの復元

アカウントレベル BPA を手動で全 false に設定してから S3 ポリシーをアタッチし、デタッチ後に手動設定(全 false)に戻ることを確認する。

アカウントレベル BPA を手動で全 false に設定

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

S3 ポリシーをアタッチ

S3 ポリシーにより、手動設定(全 false)がオーバーライドされて全 true に強制される。

aws organizations attach-policy \
  --policy-id <ポリシー ID> \
  --target-id <対象 OU ID> \
  --profile Master \
  --region ap-northeast-1
(出力なし)

アカウントレベル BPA が全 true に強制されていることを確認

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

S3 ポリシーをデタッチ

aws organizations detach-policy \
  --policy-id <ポリシー ID> \
  --target-id <対象 OU ID> \
  --profile Master \
  --region ap-northeast-1
(出力なし)

アカウントレベル BPA が手動設定(全 false)に復元されていることを確認

S3 ポリシーは元のアカウントレベル設定を保存しており、デタッチ時に復元する。

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

アカウントレベル BPA を削除して検証前の状態に戻す

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

5. S3 ポリシー削除

aws organizations delete-policy \
  --policy-id <ポリシー ID> \
  --profile Master \
  --region ap-northeast-1
(出力なし)

6. クリーンアップ

aws s3control delete-access-point \
  --name <BPA 無効 AP 名> \
  --account-id <アカウント ID> \
  --region ap-northeast-1
(出力なし)
aws s3api delete-bucket-policy \
  --bucket <テストバケット名> \
  --region ap-northeast-1
(出力なし)
aws s3api put-public-access-block \
  --bucket <テストバケット名> \
  --public-access-block-configuration \
    BlockPublicAcls=true,IgnorePublicAcls=true,BlockPublicPolicy=true,RestrictPublicBuckets=true \
  --region ap-northeast-1
(出力なし)
aws s3api delete-bucket \
  --bucket <テストバケット名> \
  --region ap-northeast-1
(出力なし)

Amazonアソシエイトリンク