脆弱性のためのイメージのスキャン
コンテナ・レジストリを使用して、リポジトリ内のイメージでセキュリティ脆弱性をスキャンする方法を確認します。
イメージに含まれているオペレーティング・システム・パッケージに脆弱性が存在することはあまりありません。これらの脆弱性を管理することで、システムのセキュリティ状態を強化し、新しい脆弱性が発見されたときに迅速に対応できます。
Oracle Cloud Infrastructure Registry (コンテナ・レジストリとも呼ばれる)を設定して、公開されている共通脆弱性(CVE)データベースに公開されているセキュリティ脆弱性のリポジトリ内のイメージをスキャンできます。
イメージ・スキャンを有効にするには、イメージ・スキャナをリポジトリに追加します。それ以降、リポジトリにプッシュされたイメージは、イメージ・スキャナによって脆弱性がスキャンされます。リポジトリにすでにイメージが含まれている場合、最近プッシュされた4つのイメージの脆弱性がただちにスキャンされます。
CVEデータベースに新しい脆弱性が追加されるたびに、Container Registryはスキャンが有効になっているリポジトリ内のイメージを自動的に再スキャンします。
スキャンされたイメージごとに、次のものを表示できます。
- 過去13か月間のイメージの各スキャンのサマリー。各スキャンで検出された脆弱性の数と、各スキャンの全体的なリスク・レベルが表示されます。イメージ・スキャン結果は13か月間保持されるため、一定期間のスキャン結果を比較できます。
- 各イメージ・スキャンの詳細な結果。各脆弱性の説明、リスク・レベル、および(使用可能な場合は) CVEデータベースへのリンクを参照してください。
イメージ・スキャナを削除することで、特定のリポジトリでのイメージ・スキャンを無効にできます。
イメージ・スキャンを実行するには、Container RegistryでOracle Cloud Infrastructure 脆弱性スキャン・サービスおよび脆弱性スキャンREST APIを使用します。脆弱性スキャン・サービスの詳細は、スキャンの概要およびコンテナ・イメージ・ターゲットを参照してください。
イメージ・スキャンを既存のソフトウェア開発およびデプロイメント・ライフサイクルに統合できます。イメージを構築したら、CI/CDツールで通常のdocker push
コマンドを使用して、イメージ・スキャンが有効になっているコンテナ・レジストリ内のリポジトリにイメージをプッシュできます。CI/CDツールでは、脆弱性スキャンREST APIを使用してイメージ・スキャンの結果を取得できます。イメージ・スキャンの結果に基づいて、CI/CDツールでイメージをライフサイクルの次のステージに移動するかどうかを決定できます。
イメージの脆弱性のスキャンに必要なIAMポリシー
イメージ・スキャン用のリポジトリを有効にする場合、コンテナ・レジストリからイメージをプルする権限をVulnerability Scanningサービスに付与する必要があります。
allow service vulnerability-scanning-service to read repos in tenancy
allow service vulnerability-scanning-service to read compartments in tenancy
allow service vulnerability-scanning-service to read repos in compartment <compartment-name>
allow service vulnerability-scanning-service to read compartments in compartment <compartment-name>
コンソールを使用したイメージ・スキャンの有効化および無効化
新しいリポジトリを作成すると、イメージ・スキャンはデフォルトで無効になります。コンソールを使用して、新しいイメージ・スキャナを作成することでリポジトリのイメージ・スキャンを有効にできます。イメージ・スキャンがすでに有効になっている場合は、コンソールを使用して無効にできます。
リポジトリのイメージ・スキャンを有効にするには:
- ナビゲーション・メニューを開き、「開発者サービス」をクリックします。「コンテナとアーティファクト」で、「コンテナ・レジストリ」をクリックします。
- レジストリを含むリージョンを選択します。
-
リポジトリを含むコンパートメントを選択します。
「リポジトリおよびイメージ」フィールドには、アクセス権がある選択したリージョンおよびコンパートメント内のリポジトリがリストされます。
- リストから、リポジトリを選択します。
- 「スキャナの追加」をクリックし、デフォルト設定を受け入れるか(通常は十分)、次を指定します:
- ターゲット名:オプションで、新しいイメージ・スキャナの名前。
- コンパートメントに作成:イメージ・スキャナを作成するコンパートメント。リポジトリが属するコンパートメントがデフォルトで選択されますが、別のコンパートメントを選択することもできます。
- 説明:オプションでスキャナの説明。
- 使用するスキャン構成を選択します。スキャン構成では、イメージが属するコンパートメントを指定して、スキャンするイメージを識別します。通常は、リポジトリ自体が属するコンパートメントを指定する既存のスキャン構成を選択するか、新しいスキャン構成を作成します。
- 新規スキャン構成の作成:新しいスキャン構成を作成して、リポジトリ自体が属するコンパートメントに属するイメージをスキャンします。デフォルト設定(通常は十分)をそのまま使用するか、オプションで新しいスキャン構成の名前を入力し、新しいスキャン構成を作成するコンパートメントを選択します。リポジトリ内のすべてのイメージがスキャンされます。
- 既存のスキャン構成の選択:既存のスキャン構成で指定されたコンパートメントに属するイメージをスキャンします。デフォルトでは、リポジトリと同じコンパートメントに属するスキャン構成を表示および選択できます。「コンパートメントの変更」をクリックして、他のコンパートメントに属するスキャン構成を表示および選択します。リポジトリが、選択した既存のスキャン構成内の指定したコンパートメントのいずれかに属している場合、リポジトリ内のすべてのイメージがスキャンされます。
-
「作成」をクリックして、指定したスキャン構成で新しいイメージ・スキャナを作成します。
これ以降、リポジトリにプッシュされたイメージは、イメージ・スキャナによって脆弱性がスキャンされます。リポジトリにすでにイメージが含まれている場合、最近プッシュされた4つのイメージの脆弱性がただちにスキャンされます。
リポジトリのイメージ・スキャンを無効にするには:
- ナビゲーション・メニューを開き、「開発者サービス」をクリックします。「コンテナとアーティファクト」で、「コンテナ・レジストリ」をクリックします。
- レジストリを含むリージョンを選択します。
-
リポジトリを含むコンパートメントを選択します。
「リポジトリおよびイメージ」フィールドには、アクセス権がある選択したリージョンおよびコンパートメント内のリポジトリがリストされます。
- リストから、リポジトリを選択します。
- 「スキャナの削除」をクリックします。
コンソールを使用したイメージ・スキャン結果の表示
イメージ・スキャンの結果を表示するには:
- ナビゲーション・メニューを開き、「開発者サービス」をクリックします。「コンテナとアーティファクト」で、「コンテナ・レジストリ」をクリックします。
- レジストリを含むリージョンを選択します。
- リポジトリ内の特定のイメージで検出された脆弱性を表示するには:
-
リポジトリを含むコンパートメントを選択します。
「リポジトリおよびイメージ」フィールドには、アクセス権がある選択したリージョンおよびコンパートメント内のリポジトリがリストされます。
- スキャン結果を表示するイメージを含むリポジトリの名前の横にあるプラス(+)ボタンをクリックします。
リポジトリの名前の下に、各イメージのバージョン識別子で識別されるリポジトリ内のイメージがリストされます。
- リストからイメージを選択してください。
-
- 「結果のスキャン」タブを表示して、過去13か月間のイメージの各スキャンのサマリーを表示します。次が表示されます:
- リスク・レベル:イメージによって示されるリスク・レベルで、スキャンで見つかった個々の脆弱性のリスク・レベルを単一の全体的なリスク・レベルに集計することで導出されます。
- 問題が見つかりました:スキャンで見つかった脆弱性の数。
- スキャンが開始されました: スキャンが終了しました:スキャンが実行された時間。
- (オプション)特定のスキャンで見つかった脆弱性の詳細を表示するには、「結果のスキャン」タブのスキャンの横にある「アクション」メニューから「詳細の表示」を選択し、「詳細のスキャン」ダイアログを表示します:
- 問題: CVEデータベースの脆弱性に付けられた名前。リンクをクリックすると、その詳細を参照できます。
- リスク・レベル:脆弱性の重大度レベル。「クリティカル」は、最も高いレベル(解決に最も優先される最も重大な問題)で、「高」、「中」、「低」、「マイナー」の順に続きます(解決する必要のある重大度が最も低い問題を示しますが、優先度が最も低い可能性があります)。
- Description:脆弱性の説明。
- 「Close」をクリックします。
CLIの使用
脆弱性スキャンCLIコマンドを使用して、脆弱性のイメージをスキャンします(コンテナ・イメージ・ターゲットを参照)。
CLIコマンドのフラグおよび変数オプションの完全なリストは、コマンドライン・リファレンスを参照してください。
APIの使用
APIの使用およびリクエストの署名の詳細は、REST APIのドキュメントおよびセキュリティ資格証明を参照してください。SDKの詳細は、SDKおよびCLIを参照してください。
イメージで脆弱性をスキャンするには、脆弱性スキャンAPIを使用します(コンテナ・イメージ・ターゲットを参照)。