ECRでコンテナ脆弱性診断が標準実装されていたので試してみた


※2019/10/29(火)追記:
公式で発表されてました!合わせて、issuesもClosedになっていました。
Native Container Image Scanning in Amazon ECR
公式ドキュメント

※2019/10/27(日)追記:
再び利用可能になっていました。
下記のissuesに経緯等が記載されています。
ECR Image vulnerability scanning #17

※2019/10/25(金)追記:
本機能は使用出来なくなっているようです。

ECRでスキャン?

今日の業務中にふとECR画面見たら、「スキャン」の表示を見つける。
コンテナの脆弱性診断が実装されてる?
ん?こんなのあったっけ。見落としていただけかな。ということで触ってみた。

リポジトリ作成


「プッシュ時にスキャン」画面メニューがある。とりあえず、リポジトリ作成してみる。


なるほど、docker pushでコンテナ登録する時にスキャンが走るようだ。有効にしてみる。


有効になった。

コンテナをECRに登録

試しにcentosのコンテナをpushして、スキャンをしてみる。

# centos:latestのコンテナをローカルに落とす。
docker pull centos:latest

# ECR用のタグを設定
docker tag centos:latest [AWSアカウントID].dkr.ecr.ap-northeast-1.amazonaws.com/centos:1.0

# ECRログイン
$(aws ecr get-login --no-include-email --region ap-northeast-1)

# ECRのcentosリポジトリにpushする。
docker push [AWSアカウントID].dkr.ecr.ap-northeast-1.amazonaws.com/centos:1.0

スキャン完了。そして脆弱性確認へ・・・

スキャンは完了!脆弱性があるようなので、詳細を見てみる。


概要で脆弱性の件数とパッケージ毎の脆弱性説明が表示される。
例では重要度がCriticalはないが、HighMediumがそれぞれ指摘された。
名前がリンクになっているのでクリックすると・・・


指摘毎に対処ページが表示される。便利。

脆弱性の対応をしてみる。

パッケージのバージョンアップをすることで、脆弱性指摘が減るか確認してみる。

FROM centos:latest
LABEL maintainer "portfield"

RUN yum -y update && yum clean all

OSアップデートするDockerfileを書く。シンプル。
centosディレクトリにファイルを配置。

# ECR用でバージョン上げてDockerイメージ作成
docker build -t [AWSアカウントID].dkr.ecr.ap-northeast-1.amazonaws.com/centos:1.1 centos

# ECRのcentosリポジトリにpushする。
docker push [AWSアカウントID].dkr.ecr.ap-northeast-1.amazonaws.com/centos:1.1

再びスキャン完了。脆弱性確認へ・・・


上がOSアップデート前、下がOSアップデート後のDockerイメージ。
脆弱性件数が減っていることから、OSアップデートにより、脆弱性が減ったことが分かる。
詳細も見てみよう。


OSアップデートだけでは対処出来なかった脆弱性が表示される。
名前のリンクと説明を頼りに対応しよう。今回は対応しない。。

スキャンを有効にしていなくてもOK。


手動実行出来るので、大丈夫。


このように進行中となり、最終的に完了する。

まとめ

・以上のように、リポジトリの設定を有効にするだけで、簡単に使用することが出来た。
CI/CDの一環でソース更新時にDockerイメージを自動作成し、ECRにpushしているケースも多いと思うので、便利に使用出来そう。
・というか、元々あったのだろうか???ドキュメント探しても見つからない。。
裏で何をベースにスキャンしているとか、情報があったら欲しいです。。