初めに
AWSでDockerを利用している方はECRをコンテナレジストリとして利用しているかと思いますが、ECRにイメージの脆弱性診断機能がリリースされた様なので早速使ってみました。
ECRコンソールから確認
一覧画面
ECRのコンソールにログインすると、以下の様にプッシュ時にスキャンという項目ができています。
プッシュ時に脆弱性チェックが行える様になっている様です。
新規作成画面
新規作成画面は以下の様になっていて、プッシュ時にスキャンするメニューが追加されています。
本機能によりプッシュ時に自動でスキャンすることができる様です。
また、既存のリポジトリに対しても上記同様の設定画面となっており、本機能リリース前に作成されたリポジトリに対しても、「プッシュ時のスキャン」をONにすることが可能でした。
イメージ画面
イメージ画面を開くと以下の様にスキャンボタンが追加されていました。
脆弱性チェックを行えるタイミングはプッシュ時以外にも任意のタイミングで行える様です。
実際にスキャンを実施すると、数分(時間はイメージのサイズによっても変わるかもしれません)でスキャンが終わり、以下の様に一覧画面からの脆弱性チェック結果が表示されます。
今回試したイメージは本機能がリリースされる前にプッシュしたイメージとなっているので、スキャンを実施するために特別なエージェント等を入れておく必要がなさそうです。
尚、同じイメージに対して再度スキャンを実施しようとするとエラーとなる様です。(2度実施する必要はないので、当然ではありますが…)
また、脆弱性結果をSNS通知を行ったりする機能はない様です。
脆弱性詳細画面
詳細をクリックすると以下の様に脆弱性一覧が表示されます。脆弱性は共通脆弱性識別子CVE単位で表示され、それぞれの脆弱性重要度も表示できます。
CVEをクリックすると以下の様に脆弱性の詳細を確認することができます。
SDK/CLIからの確認
ここまでコンソールでの確認方法を紹介しましたが、SDK/CLIの対応状況を確認してみました。
※ SDKはboto3を確認してみました。
スキャンやスキャン結果を参照するAPIは残念ながら2019/10/28現在確認できませんでした。
(CloudTrail のログも確認してみましたがDescribeImageScanFindings
というスキャン結果を参照しているイベントの記録はありましたが、スキャン結果は結果に乗っていませんでした。)
スキャン自体はプッシュタイミングで自動化ができるものの結果の確認は画面上からしかできないため、今はスキャンタイミングで目視確認をする運用になりそうです。
最後に
今回ECRの脆弱性チェックの機能を紹介しました。
これでコンテナの脆弱性確認も独自で実装しなくても行える様になるため、とても便利な機能がリリースされたなと感じました。
今後、APIで「脆弱性結果の取得」や「スキャンの実行が」できる様になれば、以下の様な自動化の仕組みの実装も可能になるので、今後に期待しています。
- CICDパイプライン上でPushしたイメージの脆弱性をチェック、脆弱性があった場合にパイプラインを止める(脆弱性のあるコンテナの起動を抑止)
- 定期的に最新イメージの脆弱性チェックし、脆弱性のあるイメージがある場合に通知