こんにちは!イーゴリです。
前回の記事では、AWSマネジメントコンソールでAMIのパブリック共有機能をブロックする方法をご紹介しましたが、AWSマネジメントコンソールでの設定方法だと、リージョンごとにAMIのパブリック共有機能をブロックする必要があるため、手間がかかって非常に非効率な方法です。
この記事では、AWS CLI経由でBash Scriptを使用し、すべてのリージョンでAMIのパブリック共有機能を一括ブロックする方法を紹介したいと思います。
すべてのリージョンでAMIのパブリック共有機能をブロックする
#!/bin/bash # デフォルトリージョン設定 export AWS_DEFAULT_REGION=us-west-1 # リージョンの一覧を取得する REGIONS=$(aws ec2 describe-regions --query "Regions[].RegionName" --output text) # すべてのリージョンで無効にする for REGION in $REGIONS; do echo "Enable AMI block public access in $REGION..." aws ec2 enable-image-block-public-access --image-block-public-access-state block-new-sharing --region $REGION done # リージョンをリセットする unset AWS_DEFAULT_REGION
備考:「# デフォルトリージョン設定」を入れた理由は「You must specify a region. You can also configure your region by running "aws configure".」のエラーが発生しているためです。すでにリージョンが設定されている場合、この設定を入れなくても問題ないです。どのデフォルトリージョンの選択も可能です。
出力結果:
% bash script Enable AMI block public access in ap-south-1... { "ImageBlockPublicAccessState": "block-new-sharing" } Enable AMI block public access in eu-north-1... { "ImageBlockPublicAccessState": "block-new-sharing" } Enable AMI block public access in eu-west-3... { "ImageBlockPublicAccessState": "block-new-sharing" } Enable AMI block public access in eu-west-2... { "ImageBlockPublicAccessState": "block-new-sharing" } Enable AMI block public access in eu-west-1... { "ImageBlockPublicAccessState": "block-new-sharing" } Enable AMI block public access in ap-northeast-3... { "ImageBlockPublicAccessState": "block-new-sharing" } Enable AMI block public access in ap-northeast-2... { "ImageBlockPublicAccessState": "block-new-sharing" } Enable AMI block public access in ap-northeast-1... { "ImageBlockPublicAccessState": "block-new-sharing" } Enable AMI block public access in ca-central-1... { "ImageBlockPublicAccessState": "block-new-sharing" } Enable AMI block public access in sa-east-1... { "ImageBlockPublicAccessState": "block-new-sharing" } Enable AMI block public access in ap-southeast-1... { "ImageBlockPublicAccessState": "block-new-sharing" } Enable AMI block public access in ap-southeast-2... { "ImageBlockPublicAccessState": "block-new-sharing" } Enable AMI block public access in eu-central-1... { "ImageBlockPublicAccessState": "block-new-sharing" } Enable AMI block public access in us-east-1... { "ImageBlockPublicAccessState": "block-new-sharing" } Enable AMI block public access in us-east-2... { "ImageBlockPublicAccessState": "block-new-sharing" } Enable AMI block public access in us-west-1... { "ImageBlockPublicAccessState": "block-new-sharing" } Enable AMI block public access in us-west-2... { "ImageBlockPublicAccessState": "block-new-sharing" }
ステータス確認
#!/bin/bash # デフォルトリージョン設定 export AWS_DEFAULT_REGION=us-west-1 # リージョンの一覧を取得する REGIONS=$(aws ec2 describe-regions --query "Regions[].RegionName" --output text) # すべてのリージョンで無効にする for REGION in $REGIONS; do echo "Check AMI block public access in $REGION..." aws ec2 get-image-block-public-access-state --region $REGION done # リージョンをリセットする unset AWS_DEFAULT_REGION
出力結果:
% bash kakunin-script Check AMI block public access in ap-south-1... { "ImageBlockPublicAccessState": "block-new-sharing" } Check AMI block public access in eu-north-1... { "ImageBlockPublicAccessState": "block-new-sharing" } Check AMI block public access in eu-west-3... { "ImageBlockPublicAccessState": "block-new-sharing" } Check AMI block public access in eu-west-2... { "ImageBlockPublicAccessState": "block-new-sharing" } Check AMI block public access in eu-west-1... { "ImageBlockPublicAccessState": "block-new-sharing" } Check AMI block public access in ap-northeast-3... { "ImageBlockPublicAccessState": "block-new-sharing" } Check AMI block public access in ap-northeast-2... { "ImageBlockPublicAccessState": "block-new-sharing" } Check AMI block public access in ap-northeast-1... { "ImageBlockPublicAccessState": "block-new-sharing" } Check AMI block public access in ca-central-1... { "ImageBlockPublicAccessState": "block-new-sharing" } Check AMI block public access in sa-east-1... { "ImageBlockPublicAccessState": "block-new-sharing" } Check AMI block public access in ap-southeast-1... { "ImageBlockPublicAccessState": "block-new-sharing" } Check AMI block public access in ap-southeast-2... { "ImageBlockPublicAccessState": "block-new-sharing" } Check AMI block public access in eu-central-1... { "ImageBlockPublicAccessState": "block-new-sharing" } Check AMI block public access in us-east-1... { "ImageBlockPublicAccessState": "block-new-sharing" } Check AMI block public access in us-east-2... { "ImageBlockPublicAccessState": "block-new-sharing" } Check AMI block public access in us-west-1... { "ImageBlockPublicAccessState": "block-new-sharing" } Check AMI block public access in us-west-2... { "ImageBlockPublicAccessState": "block-new-sharing" }
image-block-public-access-stateがblock-new-sharingのステータスがある場合、設定の反映が完了です。
※設定の反映は数分程度かかるため、1~2分後ステータスの確認を試してみてください。
注意点
AMIのパブリック共有機能をブロックしても既存のパブリックAMIが有効のままになっているので、手動で無効にする必要がありますので、ご注意ください。
以上、御一読ありがとうございました。
本田 イーゴリ (記事一覧)
カスタマーサクセス部
・2024 Japan AWS Top Engineers (Security)
・AWS SAP, DOP, SCS, DBS, SAA, DVA, CLF
・Azure AZ-900
・EC-Council CCSE
趣味:日本国内旅行(47都道府県制覇)・ドライブ・音楽