Aquaを使うならこんなふうに 第5回 AquaのImage Scanについて(4) #aqua #container #security #コンテナ #セキュリティ
この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。
イメージスキャンについて(4)
前回は、イメージスキャンのUIについて説明しました。今回は、Image Assurance Policy について説明します。
Image Assurance Policy
Image Assurance Policyは、イメージスキャンの際にチェックするセキュリティ項目を定義するポリシーです。Image Assurance Policyは、以下の要素で構成されます。
-
Application scopes と Additional scope criteria
ポリシーが適用されるイメージのセットを定義します。 -
Actions
イメージがImage Assurance Policyに違反した場合の、Aquaの対応を設定します。 - Exceptions
Image Assurance Policy の評価の例外とするアイテムを設定します。 - Controls
イメージスキャンの結果に基づいて評価される、個々のテストを設定します。
Application scopesとAdditional scope criteriaに、ポリシーの適用範囲を設定できます。今回は、Actions、Exceptions、Controlsについて説明します。
Actions
特定のImage Assurance Policy に違反した場合、イメージに対して以下のActionを実行します。これらActionは、複数選択できます。
Create an audit message when image failed:
イメージが違反した場合、監査メッセージを作成します。ポリシーに違反した理由を示すエントリが監査ログに追加されます。
Fail the Aqua step in CI/CD:
CI/CD プロセス中にスキャンされたイメージビルドはFailedとしてマークされます。これにより後続処理(レジストリへのプッシュなど)の実行を制御できます。
Mark failed images as non-compliant
ポリシーに抵触したイメージは「non-compliant」というステータスが付けられます。これは、Container Runtime Policyにて「Block Non-compliant Images」を有効にすれば、該当のイメージを利用したコンテナ化を防ぎます。
Exceptions
Exceptionsは、Image Assurance Policy 評価の例外として扱われます。
Ignore vulnerabilities that have no available fix:
fix版がリリースされていない脆弱性を無視します。これを選択した場合、既知の解決策がない脆弱性はポリシー違反としません。
Ignore vulnerabilities that were published in the last [nn] days:
直近nn日以内に公開された脆弱性を無視します。新しい脆弱性であることから悪用される可能性が低い脆弱性に対して、1~999日の「猶予期間」を設定できします。
Ignore specific vulnerabilities:
特定の脆弱性(CVE-2019-1234 など)を指定し、それを無視します。
Ignore vulnerabilities and malware found in specific path
任意の数のパス(リソース)を一覧として設定できます。指定したパスで見つかった脆弱性やマルウェアは、ポリシー違反としません。パスは gitignore 構文で入力する必要があります。
Controls
Controlsは、Image Assurance Policyごとに定義されるテスト項目です。Image Assurance Policy には、以下のControlを含めることができます。
Approved Base Image
設定されたイメージをベースイメージとしていない場合、失敗とします。
CVEs Blocked
指定された脆弱性のいずれかがイメージに含まれている場合、失敗とします。
Dynamic Threat Analysis
このコントロールにより、Aqua Dynamic Threat Analysis (DTA)によるイメージスキャンが可能になります。このコントロールは、選択された深刻度(低、中、高、クリティカル)以上の問題がDTAスキャンで検出された場合に、失敗とします。
Images Allowed
許可されたイメージを設定します。ここで設定したイメージは、すべて成功とします。このControlは、Default Image Assurance Policyでしか表示されません。
Images Blocked
許可しないイメージを設定します。ここで設定したイメージは、全て失敗とします。このControlは、Default Image Assurance Policyでしか表示されません。
Labels Forbidden
指定されたDockerオブジェクトラベルが含まれている場合、イメージを失敗とします。キーのみを指定した場合、そのキーはイメージ上に存在しなければなりませんが、値は任意となります。キーと値のペアを指定した場合、キーは指定した値と一緒に存在しなければなりません。下記のLabel Requiredと反対の動作をするコントロールです。
Label Required
指定されたDockerオブジェクトラベルがすべて含まれていない場合、イメージを失敗とします。キーのみを指定した場合、そのキーはイメージ上に存在しなければなりませんが、値は任意となります。キーと値のペアを指定した場合、キーは指定した値と一緒に存在しなければならなりません。上記のLabels Forbiddenと反対の動作をするコントロールです。
Malware
イメージにマルウェアが含まれている場合、失敗とします。
MicroEnforcer
Aqua MicroEnforcerがイメージのエントリーポイントとして設定されていない場合、失敗とします。
Aqua MicroEnfocerは、AWS FargateやMicrosoft Azure Container Instances(ACI)などのCaaS(Containers-as-a-Service)環境で動作するコンテナの、ランタイムセキュリティを提供します。
OS Package Manager
Aquaがスキャンを完了するために必要とするOSパッケージマネージャ(apk、dpkg、rpm)が含まれていない場合、イメージを失敗とします。
OSS Licenses Allowed
選択した OSS ライセンスのいずれかがイメージに存在する場合、イメージを成功とします。
OSS Licenses Blocked
選択した OSS ライセンスのいずれかを必要とする場合、イメージを失敗とします。
Packages Blocked
指定されたパッケージが含まれている場合、イメージを失敗とします。
Required Packages
指定されたパッケージすべてが含まれていない場合、イメージを失敗とします。
SCAP
ユーザーは、OVAL(Open Vulnerability and Assessment Language)形式のスクリプトを追加でき、スクリプトが適用されたイメージにSCAP(Security Content Automation Protocol)スキャンを適用します。OVALファイルで定義された設定のいずれかに違反した場合、イメージを失敗とします。
Sensitive Data
RSA 鍵などの機密データが含まれている場合、イメージを失敗とします。
Superuser
root(Linux)もしくはContainer Administrator(Windows)で実行するように設定されたイメージは、失敗とします。
Vulnerability Score
選択された値以上のスコアの脆弱性を含む場合、イメージを失敗とします。
Vulnerability Severity
選択された深刻度以上の脆弱性を含む場合、イメージを失敗とします。
終わりに
今回は、Image Assurance Policyについて解説しました。Image ScanとImage Assurance Policyの動画を公開していますので、こちらも参考にしてください。次回は、Aqua独自の機能であるDTAについて説明します。次回をお楽しみに。
Aqua に関する最新情報はこちらをご覧ください。