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 でデフォルトを設定しておくと便利。
検証の流れ
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"
}ManagedBy が account → declarative-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(出力なし)