Amazon ECRのスキャン結果をChatbot経由でSlackに通知する

こんにちは。サービスグループの武田です。Amazon ECRのスキャン結果をChatbot経由でSlackに通知してみました。
2022.02.22

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは。サービスグループの武田です。

Amazon ECRのスキャン結果をSlackに通知するにあたって、その方法を検討していました。以前であればLambda関数で受け取って通知するところですが、現在はChatbotがサポートしています。必要十分な情報が通知されるのか試してみました。

Chatbot、SNSトピックの設定は共通ですので、ちゃだいんのエントリを参考にしてください。

次にEventBridgeとSNSを連携させるためのイベントルールを定義します。今回はスキャン結果を通知したいので次のようなカスタムパターンを定義します。

{
  "source": ["aws.ecr"],
  "detail-type": ["ECR Image Scan"],
  "detail": {
    "scan-status": ["COMPLETE"]
  }
}

ターゲットには事前に定義しておいたSNSトピックを指定すればOKです。EventBridgeに通知される具体的な内容をドキュメントから引用しておきます。Slackへ通知される内容に不満があれば、ここにある情報であれば入力トランスフォーマーを利用して追加できます。

{
    "version": "0",
    "id": "85fc3613-e913-7fc4-a80c-a3753e4aa9ae",
    "detail-type": "ECR Image Scan",
    "source": "aws.ecr",
    "account": "123456789012",
    "time": "2019-10-29T02:36:48Z",
    "region": "us-east-1",
    "resources": [
        "arn:aws:ecr:us-east-1:123456789012:repository/my-repository-name"
    ],
    "detail": {
        "scan-status": "COMPLETE",
        "repository-name": "my-repository-name",
        "finding-severity-counts": {
	       "CRITICAL": 10,
	       "MEDIUM": 9
	     },
        "image-digest": "sha256:7f5b2640fe6fb4f46592dfd3410c4a79dac4f89e4782432e0378abcd1234",
        "image-tags": []
    }
}

Amazon ECR イベントと EventBridge - Amazon ECR

通知内容を検証するにあたって、Docker Hubに上がっているAmazon Linuxのイメージを利用しました。適当に古いタグを指定すればおそらく脆弱性も検出されるだろうとの魂胆です。

そしてSlackへ通知された結果がこちらです。まずは脆弱性がなかった場合。

COMPLETEしたんだなということがわかります。続いて脆弱性が発見された場合。

Finding severity counts として、MEDIUM、LOW、CRITICALの数がさっきより増えています。つまりこの項目が通知になければ脆弱性はなかったということになります。ちなみに通知のタイトル部分はリンクとなっており、クリックするとマネジメントコンソールが開きます。

便利!

まとめ

今回はECRのスキャン結果をChatbotで通知する方法を試してみました。発見された脆弱性の数、詳細へのリンクがあることから十分なのではないでしょうか。通知方法を検討している方はぜひ試してみてください。