LoginSignup
2
0

Amazon Inspector v2 を利用した Amazon ECR コンテナイメージの脆弱性管理

Last updated at Posted at 2023-06-26

はじめに

このエントリでは、Amazon Inspector v2(以下、Inspector とします) の機能の中で、拡張スキャンを利用して Amazon ECR コンテナイメージの脆弱性をチェックする方法をお伝えします。拡張スキャンが実施されるタイミングや、スキャンの実施期間(新機能の ECR re-scan duration)にも少しだけ触れています。Amazon EventBridge および AWS Security Hub との統合などは触れておりませんので、予めご了承ください。EC2インスタンスの脆弱性管理につきましてはこちらのブログ記事「Amazon Inspector v2 を利用した脆弱性管理 - 自動ディスカバリ・継続的スキャンなど便利な新機能多数 -」をご参照いただければ幸いです。

使用方法

Inspector の有効化

まず Inspector の画面を表示します。 サービスの検索ウィンドウに [Insp] と入力すると次のように表示されるので [Inspector] を選択します。
insp_001.png
画面右側の [使用を開始する] をクリックします。
insp_002.png
画面右側の [Inspector をアクティブ化] をクリックします。
insp_003.png

これで Amazon Inspector の有効化が完了し、EC2 インスタンスや ECR イメージの自動ディスカバリや脆弱性スキャンなどが利用可能となります。

スキャン設定

Elastic Container Registry の画面を表示します。 サービスの検索ウィンドウに [Elastic Container] と入力すると次のように表示されるので [Elastic Container Registry] を選択します。
insp_004.png
左メニューの [Scanning] をクリックします。
insp_005.png
スキャン設定画面が表示されます。スキャンタイプは [拡張スキャン] を選択します。[すべてのリポジトリを継続的にスキャンする] にチェックを入れます。[保存] ボタンをクリックします。(特定のリポジトリをスキャン対象から除外することもできますが、ここではすべてのリポジトリをスキャンの対象とします。)
insp_006.png
拡張スキャンには追加料金がかかるため、確認のためのダイアログが表示されます。[確認] ボタンをクリックします。
inspector_ecr_002.png
スキャン設定を完了後の画面です。スキャン設定が [拡張版] に、連続フィルターが [*] なっており、拡張スキャンですべてのリポジトリをスキャンするよう設定されていることが確認できます。
insp_007.png

プライベートリポジトリの作成

左メニューの [Repositories] を選択し、[リポジトリを作成] ボタンをクリックします。
insp_008.png
今回はプライベートリポジトリを作成するので [プライベート] を選択します。リポジトリ名に適当な名前を入力します。
insp_009.png
イメージスキャンの設定と暗号化設定はデフォルトの [無効] のままにします。[リポジトリを作成] ボタンをクリックします。
insp_010.png
リポジトリが作成されました。
insp_011.png

Dockerの認証

手元のDockerイメージをECRのリポジトリへプッシュするには、まずDockerの認証が必要となります。ここではECRプライベートレジストリへDockerを認証させるためにCLIを使用することにします。手元の環境で次のコマンドを実行してください。

AWS CLI
$ aws ecr get-login-password --region <myregion> | docker login --username AWS --password-stdin <my_account_id>.dkr.ecr.<myregion>.amazonaws.com
AWS Tools for Windows PowerShell:
$ (Get-ECRLoginCommand).Password | docker login --username AWS --password-stdin <my_account_id>.dkr.ecr.<myregion>.amazonaws.com

(※ myregion や my_account_id は適宜変更してください。)

Dockerイメージのプッシュ

まずECRリポジトリへプッシュするために必要なタグを付与します。

$ docker tag <image_id> <my_account_id>.dkr.ecr.<muregion>.amazonaws.com/<repository_name>:<ubuntu-20.04>

次にリポジトリにDockerイメージをプッシュします。

$ docker push <my_account_id>.dkr.ecr.<myregion>.amazonaws.com/<repository_name>:<ubuntu-20.04>

(※ <...>部分は適宜変更してください。)

リポジトリの状況を確認するため、リポジトリ名のリンクをクリックしてください。
insp_012.png

リポジトリにイメージがプッシュされていることが確認できました。
insp_013.png

スキャン結果の確認

リポジトリが拡張スキャンの対象となっている場合、プッシュされたイメージはすぐスキャンされます。[調査結果を表示] をクリックすることで、スキャンの結果を表示できます。
insp_014.png
検出された脆弱性の概要と詳細が表示されます。
insp_015.png
CVE番号をクリックすることで、脆弱性のより詳細な内容が表示されます。
insp_016.png

Amazon Inspector の画面では、コンテナイメージごとのサマリやリポジトリごとのサマリを表示することができます。
insp_017.png
insp_018.png

拡張スキャンの実施タイミング

イメージのプッシュ時と、Inspectorの脆弱性データベースに新たなCVE番号が追加された際に実行されます。

拡張スキャンの実施期間

以前は30日までとなっていましたが、[30日/180日/ライフタイム] の中から選択できるようになりました。デフォルトは [ライフタイム] です。 この設定を変更するには Inspector の [設定] -> [全般] を開き、ECR re-scan duration 設定を変更してください。
insp_019.png

まとめ

Amazon Inspector v2 を利用して Amazon ECR コンテナイメージの脆弱性をスキャンする方法をご紹介しました。コンテナイメージのプッシュ時だけでなく、脆弱性データベースに新たなCVE番号が追加されるごとに再スキャンが実行されるため、常に最新の状況を把握できます。ぜひ活用をご検討ください。

参照

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0