※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`はないが、`High`と`Medium`がそれぞれ指摘された。 名前がリンクになっているのでクリックすると・・・ 指摘毎に対処ページが表示される。便利。脆弱性の対応をしてみる。
パッケージのバージョンアップをすることで、脆弱性指摘が減るか確認してみる。
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しているケースも多いと思うので、便利に使用出来そう。
・というか、元々あったのだろうか???ドキュメント探しても見つからない。。
裏で何をベースにスキャンしているとか、情報があったら欲しいです。。