こんにちは。ネクストモード株式会社のあゆです。
この記事が初投稿なので、すごく緊張しています!
はじめに
Amazon Inspector v2(以下、Inspector v2)は EC2 および ECR の脆弱性診断を行ってくれるリージョナルなサービスです。コンソール上で簡単に有効化することができ、その後はほぼリアルタイムでスキャンしてくれるので、脆弱性の早期発見が可能となっています。
複数リージョンで Inspector v2 を使用する機会はあるかと思いますが、ご縁があり全リージョンで使用するという稀なケースに出会いました。いい機会だったので、AWS CLI の勉強も兼ねてシェルスクリプトを書くところまで挑戦したので、最後まで楽しんで読んでもらえたらと思います。
それでは早速やっていきましょう!
【補足】Inspector v2 のスキャンが対応している EC2 の OS
執筆時点(2022年8月1日)では、Inspector v2 は EC2 スキャン は Windows OS に対応していません。
詳細は下記エントリーをご覧ください。
環境
今回、AWS CLI で Inspector v2 を有効化するにあたり使用した環境は下記の通りです。
AWS CLI のバージョンが古いと inspector2
のコマンドが使えないので、最新のバージョンにアップデートしてください。
$ aws --version
aws-cli/2.7.8 Python/3.9.11 Linux/5.10.16.3-microsoft-standard-WSL2 exe/x86_64.ubuntu.20 prompt/off
やってみた
単一リージョンで有効化
AWS CLI Command Referenceを参考にしながら、オハイオリージョンで Inspector v2 を有効化していきます。
AWS CLI のリファレンスを見ると、EC2 および ECR の両方、もしくは片方を Enable にすることで、利用可能になりそうです。
コマンドを打つ前の Inspector v2 のコンソール画面を見ると、まだ有効化されていませんね。
早速コマンドを打って有効化してみましょう。コマンド自体は非常にシンプルです。
$ aws inspector2 enable \
--resource-types EC2 ECR \
--region us-east-2
{
"accounts": [
{
"accountId": "xxxxxxxxxxxx",
"resourceStatus": {
"ec2": "ENABLING",
"ecr": "ENABLING"
},
"status": "ENABLING"
}
],
"failedAccounts": []
}
--resource-types
で EC2 と ECR を指定したため、ec2 および ecr が ENABLING
になっており、status
も ENABLING
になっていることが確認できます。今回は両方を指定しましたが、片方だけでもコマンドを実行できます。
注意点として、--resource-types
で値を指定するときに小文字(ec2)だと失敗するので、大文字(EC2)で記述してください。
コンソール画面を見てみますと、「EC2 のスキャン」と「ECR コンテナのスキャン」が Enabled になっています!
全リージョンで有効化
ここからが本記事で最も書きたかったところです。
はじめに下記コマンドで有効リージョンの一覧を取得します。
$ aws ec2 describe-regions --query 'Regions[].RegionName'
[
"eu-north-1",
"ap-south-1",
"eu-west-3",
"eu-west-2",
"eu-west-1",
"ap-northeast-3",
"ap-northeast-2",
"ap-northeast-1",
"sa-east-1",
"ca-central-1",
"ap-southeast-1",
"ap-southeast-2",
"eu-central-1",
"us-east-1",
"us-east-2",
"us-west-1",
"us-west-2"
]
RegionName を変数にした方が楽ですが、Inspector v2 は大阪リージョン(ap-northeast-3)に対応していません。
そこで、大阪リージョンを除いて Inspector v2 のシェルスクリプトを書くと以下のようになります。
# リージョン一覧
regions=(\
ap-northeast-1 \
ap-northeast-2 \
ap-south-1 \
ap-southeast-1 \
ap-southeast-2 \
ca-central-1 \
eu-central-1 \
eu-north-1 \
eu-west-1 \
eu-west-2 \
eu-west-3 \
sa-east-1 \
us-east-1 \
us-east-2 \
us-west-1 \
us-west-2 \
)
#EC2およびECR有効化
for region in "${regions[@]}"; do
echo "#### Enable ${region} inspector for EC2..."
aws inspector2 enable --resource-types EC2 ECR --region "${region}" \
--query 'accounts[0].{accountId:accountId,ec2:resourceStatus.ec2,ecr:resourceStatus.ecr}' \
--output yaml
done
あとはシェルスクリプトを叩くだけで全リージョン一括有効化が可能となります。
また上記シェルスクリプトのリージョン一覧から Inspector v2 を利用したいリージョン以外は削除したり、EC2 もしくは ECR のみ利用したい場合は片方を削除するなどカスタマイズできるので、お好きにお使いいただければと思います。
まとめ
AWS CLI で Inspector v2 を有効化する方法を、単一リージョンと全リージョンの2つに分けてご紹介させていただきました。
Inspector v2 に関する記事やブログの中でも、AWS CLI のコマンドを使った情報はすぐには見つからなかったので、大変苦労しました。
同じ悩みを抱えている方に、少しでも私の記事が役に立ったら嬉しいなと思っています。
今回は以上になります。最後まで読んで頂きありがとうございました!
参考リンク
- Amazon Inspector v2 の EC2 スキャン は Windows OS に対応されていますか? | DevelopersIO
- inspector2 — AWS CLI 2.7.20 Command Reference