Amazon Web Services ブログ

Amazon Inspector を使用した Amazon ECR プライベートレジストリでのコンテナスキャンの更新

本投稿は Brad Gray と Paavan Mistry による記事 Container scanning updates in Amazon ECR private registries using Amazon Inspector を翻訳したものです。

先週の re:Invent 2021 で、クラウドワークロードの脆弱性管理を強化した 新しい Amazon Inspector を発表しましたAmazon Inspector は、セキュリティ評価と管理を大規模に自動化するために、あらゆる規模の組織で利用されているサービスです。Amazon Elastic Container Registry( Amazon ECR )のプライベートレジストリのお客様向けに、今回の発表では、2019年10月にリリースした コンテナイメージのネイティブスキャン機能 の更新、強化、統合が行われました。この記事では、Amazon ECR プライベートレジストリのお客様向けに、これらのアップデートと新しいコンテナスキャンの選択肢を説明します。

導入

コンテナイメージの脆弱性をスキャンすることは、コンテナワークロードの安全性を確保するために、クラウドネイティブのサプライチェーン内で重要なセキュリティコントロールです。プライベートレジストリの Amazon ECR image scanning では、Enhanced scanning と Basic scanning の2つのスキャンオプションが提供されるようになりました。どちらの選択肢もコンテナイメージの静的スキャンを提供します。静的スキャンでは、コンテナイメージ内のオペレーティングシステム(OS)パッケージを、既知のセキュリティ脅威の公開リストである Common Vulnerabilities and Exposures(CVE)を基にスキャンすることができ、独自のスキャンインフラをセットアップしたり、サードパーティのスキャンライセンスを購入したりする必要がありません。

Enhanced scanning では、Amazon ECR は Amazon Inspector と統合し、リポジトリの自動的かつ継続的なスキャンを提供します。 Amazon Inspector による Enhanced scanning は、サポートされているオペレーティングシステムをスキャンし、ドキュメントに記載されている Python、Java、C#、Golang などの一般的なプログラミング言語のスキャンもサポートされています。 Basic scanning では、リポジトリの設定によって、プッシュをトリガーにした自動スキャン、もしくは手動スキャンを実行できます。これにより、Amazon ECR のスキャン結果リストを表示することができます。このブログでは、これらの機能アップデートと設定についてさらに掘り下げていきます。

イメージスキャンのためのレジストリレベルの設定

Amazon ECR プライベートレジストリで利用可能なリポジトリレベルのscan-on-push機能は、現在非推奨となっており、レジストリレベルのスキャン設定に切り替わっています。プライベートレジストリの Basic scanning はデフォルトで提供されますが、Enhanced scanning をレジストリで有効にすることで、コンテナイメージの脆弱性を見つけるための自動的かつ継続的なスキャンを提供することができます。すでに scan-on-push 機能を使用している既存の Amazon ECR プライベートレジストリのお客様には、Amazon ECR 内で Basic scanning がデフォルトで有効になります。

お客様は、Amazon ECR コンソールまたは AWS CLI を使用して、お客様のプライベートレジストリの Basic scanning または Enhanced scanning を有効にすることができます。 Amazon ECR コンソールを使用して、お客様は Private registryScanning の順に移動して、スキャンタイプを選択することができます。

以下の例では、プライベートレジストリに対して AWS CLI を使用して Enhanced scanning を有効にし、スキャンフィルタを指定しています。デフォルトでは、rules が指定されていない場合、Amazon ECR はすべてのリポジトリに対して継続的なスキャンを行うスキャン設定を行います。

aws ecr put-registry-scanning-configuration \
 --scan-type ENHANCED \
--rules '[{"repositoryFilters" : [{"filter":"prod","filterType" : "WILDCARD"}],"scanFrequency" : "CONTINUOUS_SCAN"}]' \
--region us-west-2

Enhanced scanning

Amazon ECR Enhanced scanning は、Amazon Inspector との統合により、お客様のコンテナイメージに対して脆弱性スキャンを実行します。コンテナイメージは、オペレーティングシステムとプログラム言語パッケージの両方の脆弱性がスキャンされます。 Amazon ECR と Amazon Inspector の両方で、スキャン結果を直接確認することができます。

Enhanced scanning では、どのリポジトリを自動かつ継続的スキャンに設定し、どのリポジトリをプッシュ時スキャンに設定するかを選択することができます。これは、先ほど AWS CLI コマンドを使用して実演したように、スキャンフィルターを設定することによって行われます。プライベートレジストリで Enhanced scanning が有効になっている場合、スキャンフィルターに一致するすべてのリポジトリは Enhanced scanning のみを使用してスキャンされます。フィルターにマッチしないリポジトリは、スキャンされることはありません。

このブログでは、以前使用したAWS CLIの例を使って、Enhanced scanning を実際に見てみましょう。 Amazon ECR のプライベートレジストリのスキャンタイプ ENHANCED を有効にし、prod リポジトリに設定された継続的なスキャンフィルターを有効にしています。自動再スキャンは、Enhanced scanning 設定で継続オプションを使用するかオンプッシュオプションを使用するかに基づいて、コンテナイメージに対して自動再スキャンがトリガーされます。 Amazon Inspector がデータベースに新しいCVEを追加するたびに、設定された Amazon ECR リポジトリ内のすべての適格なコンテナイメージがそれに応じてスキャンされます。

まず、プライベートレジストリに、本番用とテスト用のサンプルイメージを保存するためのリポジトリを2つ作成しましょう。

aws ecr create-repository --repository-name scanrepo-prod
aws ecr create-repository --repository-name scanrepo-test

次に、脆弱なイメージのサンプル(ここではデモンストレーション目的でのみ使用)をプルし、イメージにタグを付けて、作成した本番リポジトリにプッシュします。以下のサンプルの AWSアカウント番号をご自身のAWSアカウント番号に置き換えてください。

この例では、Enhanced scanning が Amazon ECR パブリックイメージの最近の Apache Log4j2 の脆弱性(CVE-2021-44228)を特定する方法を示しています。

docker pull public.ecr.aws/docker/library/neo4j:4.4.0
docker tag public.ecr.aws/docker/library/neo4j:4.4.0 111122223333.dkr.ecr.us-west-2.amazonaws.com/scanrepo-prod
docker tag public.ecr.aws/docker/library/neo4j:4.4.0 111122223333.dkr.ecr.us-west-2.amazonaws.com/scanrepo-test
aws ecr get-login-password --region us-west-2 | docker login --username AWS --password-stdin 111122223333.dkr.ecr.us-west-2.amazonaws.com/scanrepo-prod
docker push 111122223333.dkr.ecr.us-west-2.amazonaws.com/scanrepo-prod
docker push 111122223333.dkr.ecr.us-west-2.amazonaws.com/scanrepo-test

プライベートレジストリ内の prod リポジトリに対して継続スキャンが有効になっているため、次のスクリーンショットのように、Amazon ECR コンソールに画像の Amazon Inspector からの結果が表示されていることがわかります。

ECR コンソールでは、下図のように Amazon Inspector コンソールを通じて、脆弱性を深く掘り下げ、スキャンで得られた知見を整理することができます。

また、以下のように、コンテナイメージ別、レイヤー別、リポジトリ別などのレポートビューで、Enhanced scanning の結果を確認することも可能です。

Amazon ECR と Amazon Inspector は、AWS SecurityHubや Amazon EventBridge(旧称 CloudWatch Events)といった他の AWS サービスともデータを共有することができます。以下のスクリーンショットは、AWS Security Hub 内で利用可能なスキャン結果を示しています。EventBridge の詳細については、Amazon ECR events と EventBridge を参照してください。

prod リポジトリに設定されたフィルタのため、test リポジトリでは手動スキャンが有効になっており、そのためコンソールでは脆弱性のステータスがスキャンオフと表示されています。

お客様は、アプリケーションのリスクとセキュリティのベースラインに基づいて、これらの Enhanced scanning 機能を使用して自動化および最適化戦略を構築することができます。

Basic scanning

プライベートレジストリで Basic scanning を有効にすると、リポジトリフィルタを設定してプッシュ時にスキャンするように設定したリポジトリを指定したり、CLIコマンドstart-image-scan を使用して手動スキャンを実行したりすることができるようになります。 Amazon ECR は、スキャン結果のリストを提供します。各コンテナイメージは、24時間に1回スキャンされる可能性があります。

Amazon ECR は、オープンソースの Clair プロジェクトのCVEデータベースを使用し、スキャン結果のリストを提供します。デプロイされているコンテナイメージのセキュリティに関する情報を得るために、スキャン結果を確認することができます。Clair の詳細については、GitHub の Clair を参照してください。 Amazon ECR は、イメージスキャンが完了すると、Amazon EventBridge(旧称CloudWatch Events)にイベントを送信します。

Basic scanning に関する詳細な設定情報は、ドキュメント に記載されています。

対象範囲と価格

Amazon ECR で利用可能な新しいスキャン方法についてご理解いただけたと思いますので、次に対象範囲とコストについての質問にお答えします。現時点では、Amazon ECR は、Debian、Ubuntu、Amazon Linuxを含む、ほとんどの一般的な Linux ディストリビューションの OS パッケージの CVE スキャンを提供しています。最新のリストについては、サポートされているOSとプログラミング言語 のドキュメント を参照してください。

Amazon ECR をご利用のお客様は、追加料金なしで Basic scanning をご利用いただけます。 Basic scanning では、各コンテナイメージを24時間に1回スキャンすることができます。この制限には、プッシュによる最初のスキャン(有効な場合)と、手動によるスキャンが含まれます。

Enhanced scanning は、Amazon Inspector を通じて提供され、課金されます。 Amazon Inspector を初めて利用するすべてのアカウントは、サービスの評価とコストの見積もりのために 15日間のトライアル を利用することができます。トライアル期間中は、Amazon ECR にプッシュされたすべての対象コンテナイメージが無料で継続的にスキャンされます。

Enhanced scanning の価格は、2段階になっています。 Amazon ECR プッシュ時に初期スキャンされたコンテナイメージのコストは、1イメージスキャンあたり0.09ドル(※1)です。継続スキャン用に設定された Amazon ECR のコンテナイメージの再スキャンは、イメージの再スキャンごとに0.01ドルです。 Amazon Inspector がデータベースに新しい CVE を追加するたびに、設定された Amazon ECR のリポジトリにあるすべての対象コンテナイメージが自動的に再スキャンされます。

結論

本日、Amazon ECR プライベートレジストリのお客様向けにこの重要なセキュリティ機能の提供を開始することができ、コンテナ型アプリケーションのセキュリティ体制を改善するために、この機能の恩恵を受けられることを期待しています。私たちは、コンテナロードマップ を通じて、イメージスキャン機能をどのように改善できるか、皆さんから学びたいと考えています。また、他にどのような関連機能が有用か、ご意見をお聞かせください。

この機能の詳細については、以下の資料でご確認いただけます。

Amazon Inspector ローンチブログ
Amazon Inspector 新着情報ブログ
Amazon ECR イメージスキャン 公式ドキュメント
Amazon Inspector コンテナイメージスキャン 公式ドキュメント

※1 これは us-west-2 (Oregon) の価格です。価格はリージョン毎に異なりますので、詳細は最新の 価格表 をご参照ください。

翻訳はソリューションアーキテクトの竹本が担当しました。