ECRのイメージスキャンはレジストリ単位の設定がリポジトリ単位の設定より優先される
ECRのイメージスキャンの設定時に理解した事まとめ
リポジトリ単位のスキャン設定
従来(re:Invent2021のInspectorに関する発表まで)は各リポジトリごとにスキャン設定を行うことが一般的だった様子(リポジトリ作成時や設定変更時に、imageScanningConfigurationパラメを使用し、プッシュ時の自動スキャンを有効化するかを指定=イメージプッシュ都度自動的にスキャン実行)
前述のタイミングで、「レジストリ(=リージョン)単位のスキャン」設定が出来るようになっている。
現在はAWSはスキャン設定をレジストリレベルで管理する方式に移行し、アカウント全体のスキャンポリシーを一元管理し統一されたセキュリティ基準を適用することが可能に。
レジストリレベルのスキャン設定 では、スキャンタイプとスキャン対象を指定。
リポジトリ単位とレジストリ単位の設定が重複した場合の挙動
リポジトリ単位のスキャン設定は非推奨となっており、レジストリ単位のスキャン設定が優先。両方の設定が存在する場合、レジストリレベルのスキャンフィルターの設定が適用。
公式
スキャンに関する分岐
①:スキャンレベル(設定単位)
・レジストリ単位
・リポジトリ単位
②:スキャンタイプ(レジストリ設定時に指定)
・BASIC(基本スキャン)
基本スキャンでは、手動スキャンや、このレジストリ内にあるイメージプッシュ時のスキャンが可能です。これは無料のサービスです。
・ENHANCED(拡張スキャン)
Amazon Inspector による拡張スキャンでは、自動連続スキャンを利用できます。Inspector は、オペレーティングシステムとプログラミング言語 (Python、Java、Ruby など) のパッケージの両方の脆弱性をリアルタイムで特定します。
③:スキャン頻度
・CONTINUOUS_SCAN(継続スキャン)
・SCAN_ON_PUSH(プッシュ時スキャン)
④番外:ベーシックスキャンの新旧(Clair利用タイプ=>現行タイプ)
↓
旧:
ベーシックスキャンはClairベース
脆弱性検知は OS パッケージのみに限定
新:(「新しいベーシックスキャン」):
CVEデータの処理が高速・精度向上
レジストリ設定で一括制御可能
定期スキャン(継続スキャン)ポート
一部にSnykの脆弱性DBを利用(参考)
※Clair(クレア)は、CoreOS(現Red Hat)が開発のオープンソース脆弱性スキャナ。Docker コンテナイメージ内のソフトウェアパッケージに対して既知脆弱性(CVE)を検出する静的解析ツール。とのこと。
スキャン設定パターン一覧
パターン | レジストリレベルスキャンタイプ | レジストリレベルスキャン頻度 | 対象リポジトリの指定(フィルター) | 挙動の説明 |
---|---|---|---|---|
① | BASIC | SCAN_ON_PUSH | すべてのリポジトリ | レジストリ設定が BASIC且つ、全リポジトリにおいて ImageScanOnPush=true が設定されている(フィルタリング無し)場合、プッシュ時に自動スキャンが実行(旧来スタイルも含む)。 |
② | BASIC | SCAN_ON_PUSH | 一部リポジトリ(フィルター) | レジストリ設定が BASIC且つフィルタリングが設定されている場合、フィルターで指定されたリポジトリでのみ ImageScanOnPush=true が有効となり、プッシュ時に自動スキャンが実行。その他リポジトリは対象外。 |
③ | ENHANCED | SCAN_ON_PUSH | 全リポジトリ | レジストリ設定が ENHANCED の場合、リポジトリ設定 (ImageScanOnPush ) は無視され、Inspector によりプッシュ時に自動スキャンが実行。 |
④ | ENHANCED | CONTINUOUS_SCAN | 一部リポジトリ(フィルター) | レジストリ設定が ENHANCED 且つ CONTINUOUS_SCAN の場合、対象リポジトリでは Inspector による CVE 更新時の継続スキャンが実行される。ImageScanOnPush は無効。 |
⑤ | ENHANCED | CONTINUOUS_SCAN + SCAN_ON_PUSH | フィルターで組み合わせ | レジストリ設定が ENHANCED且つフィルタリングが設定されている場合、対象リポジトリではプッシュ時および CVE 更新時に Inspector によるスキャンが実行。ImageScanOnPush は無効。 |
⑥ | BASIC | SCAN_ON_PUSH | 任意 | レジストリ設定が BASIC であっても、リポジトリの ImageScanOnPush=false または未設定の場合、プッシュ時スキャンは実行されず、必要時に手動スキャンを行う。 |
IaC(Cfn,CDK)でのレジストリ単位の設定
以上でした
有り難うございました。
Discussion