コンテンツにスキップ

Image Block Public Access

概要

Image Block Public Access(BPA)は EC2 ポリシー(宣言型) の属性の一つで、AMI のパブリック共有を組織全体でブロックする。

Control Tower 予防コントロールとの関係

CT.EC2.PV.11 は内部的に本属性の宣言型ポリシーを使用している(CT.EC2.PV.11 ステップ 4 で実機確認済み)。CT.EC2.PV.11 は block-new-sharing 固定。Control Tower を使わない環境では本ページの手順で Organizations ポリシーを直接設定する。

モード

モード効果
block-new-sharing新規のパブリック共有をブロック(既存のパブリック共有は維持)
unblocked制限なし

EBS Snapshot BPA(CT.EC2.PV.7)が block-all-sharing を提供するのに対し、Image BPA は block-new-sharing のみ。既存のパブリック AMI は有効化後もアクセス可能なままとなる。

ポリシーの形式

{
    "ec2_attributes": {
        "image_block_public_access": {
            "state": {
                "@@assign": "block_new_sharing"
            }
        }
    }
}

ポリシーの content 値はアンダースコア区切り(block_new_sharing)。API レスポンスはハイフン区切り(block-new-sharing)。

Security Hub CSPM との関係

検証時点では AMI のパブリック共有に対応する Security Hub CSPM コントロールが確認できなかったため、本記事では Security Hub CSPM の検証は行っていない(CT.EC2.PV.11 の結果 参照)。

検証環境

検証環境の構成図

本記事のコマンドは、--profile 指定がない場合は Workload アカウントで実行する。Master アカウントでの操作には --profile Master を指定する。事前に export AWS_PROFILE=Workload でデフォルトを設定しておくと便利。

検証の流れ

AMI パブリック共有の制限動作(新規共有の拒否確認等)は CT.EC2.PV.11 で実施済み。本記事では Organizations API 直接適用による設定の適用・反映のみを確認する。
    flowchart LR
    A[1. 事前準備] --> B[2. ポリシー作成・アタッチ]
    B --> C[3. 設定の反映確認]
    C --> D[4. クリーンアップ]
  

1. 事前準備

現在の設定を確認する。

aws ec2 get-image-block-public-access-state \
  --region ap-northeast-1
{
    "ImageBlockPublicAccessState": "unblocked",
    "ManagedBy": "account"
}

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

cat <<'EOF' > /tmp/image-bpa-policy.json
{
  "ec2_attributes": {
    "image_block_public_access": {
      "state": {
        "@@assign": "block_new_sharing"
      }
    }
  }
}
EOF

POLICY_ID=$(aws organizations create-policy \
  --name "ImageBlockPublicAccess" \
  --description "Image Block Public Access" \
  --type DECLARATIVE_POLICY_EC2 \
  --content file:///tmp/image-bpa-policy.json \
  --profile Master \
  --query 'Policy.PolicySummary.Id' \
  --output text)

echo "POLICY_ID=$POLICY_ID"
POLICY_ID=<ポリシー ID>
aws organizations attach-policy \
  --policy-id $POLICY_ID \
  --target-id <OU ID> \
  --profile Master

(出力なし)

3. 設定の反映確認

数十秒待ってから確認する。

aws ec2 get-image-block-public-access-state \
  --region ap-northeast-1
{
    "ImageBlockPublicAccessState": "block-new-sharing",
    "ManagedBy": "declarative-policy"
}

ManagedByaccountdeclarative-policy に変わった。CT.EC2.PV.11 を有効化した場合と同じ状態になっていることを確認できる。

4. クリーンアップ

aws organizations detach-policy \
  --policy-id $POLICY_ID \
  --target-id <OU ID> \
  --profile Master

aws organizations delete-policy \
  --policy-id $POLICY_ID \
  --profile Master

(出力なし)

Amazonアソシエイトリンク