はじめに

ECRに保存したコンテナイメージの脆弱性を定期的にスキャンしてくれるInspectorは、EventBridgeと組み合わせれば、スキャン結果を色々な通知先に通知できて便利ですよね。
ただ、Inspectorにはサンプルのスキャン結果を生成する機能が存在しない為、通知テストを実施したい時は、実際に脆弱性を含んだコンテナイメージをECRにプッシュする必要があります。
この方法を備忘録がてら記載します。

通知テスト方法

ECRレポジトリの作成

通知テストを実施するAWSアカウントのECRコンソールで、テスト用コンテナイメージを保存するプライベートレポジトリを作成します。
ここでは、レポジトリ名はinspector-testとします。

テスト用コンテナイメージのビルド、プッシュ

CloudShellを起動して以下Gitレポジトリをクローンします。
https://github.com/ockeghem/badtodo


クローンしてきたレポジトリには、多くの脆弱性を含むコンテナをビルドする為のファイル郡が保存されています。
この中から適当なコンテナイメージをビルド/プッシュします。
ここでは、nginxコンテナイメージをビルド/プッシュする為、nginxフォルダに移動します。


以下コマンドを実行し、テスト用コンテナイメージのビルド、プッシュを実施します。

export AWS_ACCOUNT_ID=`aws sts get-caller-identity --query Account --output text`
export REPOSITORY_NAME="inspector-test"
export TAG=`openssl rand -hex 4`
aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin "$AWS_ACCOUNT_ID.dkr.ecr.ap-northeast-1.amazonaws.com"
docker build -t "$AWS_ACCOUNT_ID.dkr.ecr.ap-northeast-1.amazonaws.com/$REPOSITORY_NAME:$TAG" .
docker push "$AWS_ACCOUNT_ID.dkr.ecr.ap-northeast-1.amazonaws.com/$REPOSITORY_NAME:$TAG"


ECRにプッシュしたコンテナイメージで、実際に脆弱性が検知できていることを確認できます。

これで、通知設定が正しく行われていれば、スキャン結果が通知先に飛んできます。