このガイドでは、Secure Source Manager で脆弱性スキャン機能を有効にしてセキュリティ ポスチャーを強化する方法について説明します。
脆弱性スキャンは、ソースコードの依存関係にある既知の脆弱性を自動的に検出し、pull リクエストへの新しい commit ごとにスキャンします。脆弱性は、pull リクエスト ビューとリポジトリ全体の [Security] タブの両方に表示されます。
脆弱性スキャンを有効にする
リポジトリで次のロールと設定が有効になっていることを確認します。
必要なロール
脆弱性スキャンを有効にするために必要な権限を取得するには、Secure Source Manager リポジトリに対する Secure Source Manager リポジトリ管理者 (roles/securesourcemanager.repoAdmin)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。
この事前定義ロールには、脆弱性スキャンを有効にするために必要な securesourcemanager.repositories.update 権限が含まれています。
カスタムロールや他の事前定義ロールを使用して、この権限を取得することもできます。
Secure Source Manager のロールを付与する方法については、IAM によるアクセス制御とユーザーにインスタンスへのアクセス権を付与するをご覧ください。
リポジトリ設定を更新する
リポジトリの脆弱性スキャンは、Secure Source Manager インターフェースから有効にできます。
- 脆弱性スキャンを有効にするリポジトリに移動します。
- [Settings] アイコンをクリックします。
- [脆弱性スキャン] の切り替えボタンを見つけます。
- 切り替えボタンをクリックして [オン] にします。
- [Update Settings] ボタンをクリックして設定を更新します。
脆弱性スキャンの操作
脆弱性スキャンを有効にすると、次のスキャンが自動的に実行されます。
- スケジュール スキャン: すべてのブランチのヘッド commit(1 日 1 回)。
- pull リクエストのスキャン:
- pull リクエストの作成時に、新しい pull リクエストのヘッド commit。
- push 時に pull リクエストに push された新しい commit。
コードの依存関係の脆弱性のみが検出されます。脆弱性スキャンでは、National Vulnerability Database や GitHub Advisory Database などの公開データベースに登録されている脆弱性が検出されます。検出された脆弱性には、脆弱性に関する公開データベース データへの外部リンクと、利用可能な場合は CVE ID が含まれます。
[セキュリティ] タブ
脆弱性スキャンを有効にすると、リポジトリのナビゲーション バーに [セキュリティ] タブが表示されます。このタブを使用して、スキャンされた脆弱性を検索できます。保持期間は最大 3 年です。
[Security] タブには、スケジュールされたスキャンと pull リクエスト スキャンの両方の結果が表示されます。
デフォルトでは、[セキュリティ] タブの [検出場所] フィルタは、最近閲覧したブランチ(またはリポジトリのデフォルト ブランチ)に設定されます。他の脆弱性を表示するには、[検出場所] フィルタを調整するか、クリアします。
[セキュリティ] タブには、各脆弱性に関する次のデータが表示されます。
- 重大度: 公開脆弱性データベース ソースによって評価された、脆弱性のセキュリティ重大度。
- ID: 公開 CVE ID(利用可能な場合)。それ以外の場合は、GHSA ID などの別の識別子。また、利用可能な場合は、脆弱性の公開データベース エントリへの外部リンク。
- 検出場所: スキャンされた Git commit SHA と、これが最新の commit であるすべての Git ブランチ、Git タグ、pull リクエストのリスト。
- ファイル: 脆弱な依存関係を含むリポジトリ ソースファイルと、行番号(使用可能な場合)。
- パッケージ: 脆弱性を含む依存パッケージの名前とそのバージョン。脆弱性に対処するパッケージのバージョンがわかっている場合は、そのバージョンも表示されます。
- 説明: 脆弱性の説明(利用可能な場合)。
- 検出日: 脆弱性を検出したスキャンの日付。
[セキュリティ] タブでは、次のフィルタを使用できます。
- 重大度: 指定された重大度(
CRITICAL、HIGH、MEDIUM、LOW)の脆弱性のみを表示します。 - 検出場所: 指定された Git ブランチ、タグ、commit SHA で検出された脆弱性のみを表示します。
- ファイル: 指定されたソースパスで検出された脆弱性のみを表示します。部分文字列を受け入れます。たとえば、
project/を使用して、project/ディレクトリ内の脆弱な依存関係をフィルタできます。 - 脆弱性: ID、説明、影響を受けるパッケージ名などの公開データで脆弱性を検索します。部分文字列を使用できます。
- 開始日と終了日: 指定した日付以降または以前に検出された脆弱性のみを表示します。形式:
YYYY-MM-DD。
pull リクエスト
pull リクエストのスキャンが完了すると、検出された脆弱性が pull リクエストの [Conversation] タブに表示されます。スキャンでは、すべてのリポジトリ ファイルがチェックされます。pull リクエストで変更されていないファイルの脆弱性が含まれる場合があります。
pull リクエストには、検出された上位の脆弱性の概要が表示されます。pull リクエストの脆弱性の完全なリストと詳細を表示するには、[Full Results] リンクをクリックして、リポジトリの [Security] タブで表示します。
脆弱性によって pull リクエストの統合がブロックされることはありません。
サポートされているファイル形式
次の言語のパッケージ ファイルが、依存関係の脆弱性についてスキャンされます。
| サポート対象 | |
|---|---|
| Go | |
| Java | |
| JavaScript | |
| Node.js | |
| PHP | |
| Python | |
| Ruby | |
| Rust | |
| TypeScript | |
| .NET |