Skip to main content

リポジトリのコード スキャンのアラートを管理する

セキュリティの観点から、プロジェクトのコード内の潜在的な脆弱性またはエラーに関するアラートの表示、修正、または却下を行うことができます。

Who can use this feature

If you have write permission to a repository you can manage code scanning alerts for that repository.

Code scanning は、GitHub.com のすべてのパブリック リポジトリに使用できます。 Organization によって所有されるプライベート リポジトリで code scanning を使うには、GitHub Advanced Security のライセンスが必要です。 詳細については、「GitHub Advanced Security について」を参照してください。

リポジトリのアラートを表示する

リポジトリへの書き込み権限があるユーザなら誰でも、プルリクエストの code scanning アノテーションを表示できます。 詳細については、「pull request の code scanning アラートのトリアージ」を参照してください。

[セキュリティ] タブでリポジトリのすべてのアラートの概要を表示するには、書き込みアクセス許可が必要です。

既定では、コード スキャン アラート ページがフィルター処理され、リポジトリの既定のブランチに関するアラートのみが表示されます。

  1. GitHub.com で、リポジトリのメイン ページへ移動します。 1. リポジトリ名の下にある [ セキュリティ] をクリックします。 [セキュリティ] タブ 1. 左側のサイドバーの [Code scanning alerts](コード スキャンのアラート) をクリックします。 [Code scanning alerts](コード スキャンのアラート) タブ

  2. 必要に応じて、フリー テキスト検索ボックスまたはドロップダウン メニューを使用してアラートをフィルター処理します。 たとえば、アラートを識別するために使われたツールによってフィルタリングできます。 [Filter by tool](ツール別のフィルター) 1. [Code scanning] で、調査するアラートをクリックします。 アラートの概要

    [アラート] ページのステータスと詳細は、他のブランチにアラートが存在する場合であっても、リポジトリの既定のブランチに対するアラートのステータスを反映するのみです。 既定以外のブランチのアラートの状態は、[アラート] ページの右側にある [影響を受けるブランチ] セクションで確認できます。 既定のブランチにアラートが存在しない場合、アラートの状態は、[in pull request] または [in branch] として、グレー表示されます。 アラートの [影響を受けるブランチ] セクション

  3. アラートでデータ フローの問題が強調表示された場合は、必要に応じて [パスの表示] をクリックし、データソースから、それが使用されているシンクまでのパスを表示します。 アラートの "Show paths" リンク

  4. CodeQL 解析によるアラートには、問題の説明も含まれています。 コードの修正方法に関するガイダンスについては、 [さらに表示] をクリックします。 アラートの詳細

詳細については、「code scanning アラートについて」を参照してください。

注: CodeQL による code scanning分析の場合、リポジトリの code scanning アラートの一覧の上部にあるヘッダーで、最新の実行に関する情報を確認することができます。

たとえば、最後のスキャンが実行されたのがいつか、リポジトリ中のコードの合計行数に対する分析されたコードの行数、生成されたアラートの合計数を見ることができます。 UI バナー

code scanning アラートのフィルター処理

code scanning アラート ビューに表示されるアラートをフィルター処理できます。 これにより、特定の種類のアラートに集中できるため、数多くのアラートがある場合に便利です。 表示されるアラートの一覧を絞り込むために使用できるいくつかの定義済みのフィルターとさまざまなキーワードがあります。

  • 定義済みのフィルターを使用するには、 [フィルター] 、またはアラートの一覧のヘッダーに表示されているフィルターをクリックし、ドロップダウン リストからフィルターを選択します。 定義済みのフィルター
  • キーワードを使用するには、フィルター テキスト ボックスに直接入力するか、または
    1. フィルター テキスト ボックスをクリックして、使用可能なすべてのフィルター キーワードの一覧を表示します。
    2. 使用するキーワードをクリックし、ドロップダウン リストから値を選択します。 キーワード フィルター リスト

キーワード フィルターを使用する利点は、結果が見つかる値のみがドロップダウン リストに表示されます。 これにより、結果が見つからないフィルターの設定を簡単に回避できます。

複数のフィルターを入力すると、ビューには、これらの すべてのフィルターと一致するアラートが表示されます。 たとえば、is:closed severity:high branch:main の場合、main ブランチに存在し、クローズされた重大度が高いアラートのみが表示されます。 例外は、refs (refbranchpr) に関連するフィルターです。is:open branch:main branch:next の場合、main ブランチと next ブランチの両方のオープンなアラートが表示されます。

既定ではないブランチでフィルター処理したのと同じアラートが、既定のブランチに存在する場合、そのアラートのアラート ページには、その状態が既定ではないブランチでの状態と競合する場合でも、既定のブランチのアラートの状態のみが反映されることに注意してください。 たとえば、アラートの概要の branch-x の [Open](オープン) リストに表示されるアラートは、そのアラートが既定のブランチで既に修正されている場合、アラート ページに "Fixed"(修正済み) の状態で表示される場合があります。 フィルター処理したブランチのアラートの状態は、アラート ページの右側の [Affected branches](影響を受けるブランチ) セクションで確認できます。

tag フィルターにプレフィックス - を付けると、そのタグを含む結果を除外できます。 たとえば、-tag:style の場合は、style タグを含まないアラートのみが表示されます。-tag:experimental の場合は、すべての実験アラートが省略されます。 詳細については、「code scanning アラートについて」を参照してください。

結果をアプリケーション コードのみに制限する

"Only alerts in application code" フィルターまたは autofilter:true キーワードと値を使用して、結果をアプリケーション コード内のアラートに制限できます。 アプリケーション コード以外のコードの種類の詳細については、上記の「About labels for alerts not in application code」 (アプリケーション コード内にないアラートのラベルについて) を参照してください。

code scanningアラートの検索

アラートのリストを検索できます。 これは、リポジトリ中に大量のアラートがある場合や、たとえばアラートの正確な名前を知らないような場合に役立ちます。 GitHub Enterprise Cloudは以下に渡って自由テキスト検索を行います。

  • アラートの名前です。
  • アラートの詳細 (これには、ビューの [さらに表示] 折りたたみ可能セクションで既定により非表示になっている情報も含まれます)。 検索で使用されるアラート情報
サポートされている検索構文の例結果
単一語検索injectioninjection を含むすべてのアラートが返されます
複数語検索sql injectionsql または injection を含むすべてのアラートが返されます
完全一致検索
(二重引用符を使用)
"sql injection"sql injection をこのとおりに含むすべてのアラートが返されます
OR検索sql OR injectionsql または injection を含むすべてのアラートが返されます
AND検索sql AND injectionsqlinjection の両方の語を含むすべてのアラートが返されます

ヒント:

  • 複数語検索はOR検索と等価です。
  • AND 検索により、検索語句がアラート名または詳細の 任意の位置 に任意の順序で見つかった場合に結果が返されます。
  1. GitHub.com で、リポジトリのメイン ページへ移動します。 1. リポジトリ名の下にある [ セキュリティ] をクリックします。 [セキュリティ] タブ 1. 左側のサイドバーの [Code scanning alerts](コード スキャンのアラート) をクリックします。 [Code scanning alerts](コード スキャンのアラート) タブ
  2. [フィルター] ドロップダウン メニューの右側にあるフリー テキスト検索ボックスに、検索するキーワードを入力します。 フリー テキスト検索ボックス
  3. Return キーを押します。 アラートリストには、検索条件にマッチしたオープンなcode scanningアラートが含まれます。

Issues で code scanning アラートを追跡する

注: Issue の code scanning アラートの追跡はベータ版であり、変更される可能性があります。

この機能では、GitHub Actions を使用してネイティブで、または既存の CI/CD インフラストラクチャを使用して外部で分析を実行すること、およびサードパーティの code scanning ツールがサポートされていますが、サードパーティの追跡ツールはサポート されていません

Code scanning アラートは GitHub Issues のタスク リストと統合されており、すべての開発タスクで簡単にアラートに優先順位を付け、追跡することができます。 issue の詳細については、「[Issue について](/issues/tracking-your-work-with-issues/about-issues)」を参照してください。

issue のコード スキャン アラートを追跡するには、issue のタスク リスト項目としてアラートの URL を追加します。 タスク リストの詳細については、「タスク リストについて」を参照してください。 code scanning アラートの追跡を目的とした issue の作成に関する詳細については、「タスク リストを使った issue 内の code scanning アラートの追跡」を参照してください。

アラートを解決する

リポジトリへの書き込み権限があるユーザなら誰でも、コードに修正をコミットしてアラートを解決できます。 リポジトリでプルリクエストに対して code scanning が実行されるよう予定されている場合は、修正してプルリクエストを発行するようお勧めします。 これにより、変更の code scanning 解析がトリガーされ、修正で新しい問題が入り込まないようテストされます。 詳細については、「code scanning のカスタマイズ」と「pull request の code scanning アラートのトリアージ」を参照してください。

リポジトリに対して書き込みアクセス許可がある場合、アラートの概要を表示し、 [クローズ済み] をクリックして、解決されたアラートを表示することができます。 詳細については、「Viewing the alerts for a repository」 (リポジトリのアラートの表示) を参照してください。 "Closed"リストは、修正されたアラートと、ユーザが却下したアラートを示します。

自由テキスト検索またはフィルターを使ってアラートの一部を表示し、一致するすべてのアラートをクローズ済みとマークすることができます。

あるブランチでは解決されたアラートが、別のブランチでは解決されていないことがあります。 アラートの概要で "Branch" フィルターを使用して、特定のブランチでアラートが解決されているかどうかを確認できます。

ブランチによるアラートのフィルタリング

既定ではないブランチでフィルター処理したのと同じアラートが、既定のブランチに存在する場合、そのアラートのアラート ページには、その状態が既定ではないブランチでの状態と競合する場合でも、既定のブランチのアラートの状態のみが反映されることに注意してください。 たとえば、アラートの概要の branch-x の [Open](オープン) リストに表示されるアラートは、そのアラートが既定のブランチで既に修正されている場合、アラート ページに "Fixed"(修正済み) の状態で表示される場合があります。 フィルター処理したブランチのアラートの状態は、アラート ページの右側の [Affected branches](影響を受けるブランチ) セクションで確認できます。

注: 複数の構成を使用してコード スキャンを実行する場合、アラートに複数の分析元が含まれることがあります。 すべての構成を定期的に実行する場合を除いて、ある分析元では解決されており、別の分析元では解決されていないアラートが表示される可能性があります。 詳細については、「About analysis origins」 (分析元について) を参照してください。

## アラートの却下

アラートをクローズする方法は2つあります。 コード中の問題を修正するか、アラートを却下できます。

アラートを無視することは、修正する必要がないと思われるアラートを閉じる方法です。 たとえば、テストで使われるだけのコードのエラーや、エラーを修正するための労力がコードを改善することによる潜在的な利点よりも大きい場合です。 アラートは、コード内の code scanning 注釈、または [セキュリティ] タブの概要リストから削除できます。

アラートを却下すると:

  • それはすべてのブランチで却下されます。
  • アラートはプロジェクトの現在のアラート数から除外されます。
  • アラートはアラートのサマリの"Closed"リストに移動されます。必要な場合は、そこからアラートを再オープンできます。
  • アラートをクローズした理由は記録されます。
  • 必要に応じて、却下についてコメントを残し、アラートを却下したコンテキストを記録することもできます。
  • 次にcode scanningが実行されたとき、同じコードはアラートを生成しません。

アラートを却下するには:

  1. GitHub.com で、リポジトリのメイン ページへ移動します。 1. リポジトリ名の下にある [ セキュリティ] をクリックします。 [セキュリティ] タブ 1. 左側のサイドバーの [Code scanning alerts](コード スキャンのアラート) をクリックします。 [Code scanning alerts](コード スキャンのアラート) タブ

  2. アラートを却下したい場合、そのアラートをまず調べて、却下する正しい理由を選択できるようにすることが重要です。 調べたいアラートをクリックしてください。 概要リストからアラートを開く

  3. アラートを確認してから Dismiss alert をクリックし、アラートをクローズする理由を選ぶか入力します。 コード スキャン アラートのスクリーンショット。却下理由を選ぶドロップダウンが強調されています。 クエリが将来の分析に含まれ続けるかに影響することがあるので、ドロップダウンメニューから適切な理由を選択することは重要です。 必要に応じて、無視にコメントを付けて、アラートを無視するコンテキストを記録できます。 無視のコメントはアラート タイムラインに追加され、監査と報告の間に正当な理由として使用できます。 コード スキャン REST API を使用して、コメントを取得または設定できます。 コメントは、alerts/{alert_number} エンドポイントの dismissed_comment に含まれます。 詳細については、コード スキャンに関するページを参照してください。

    たとえばコードがサポートされていないサニタイズ ライブラリを使っているといった理由で、CodeQL のアラートを擬陽性の結果として却下する場合、CodeQL に貢献して分析を改善することを検討してください。 CodeQL の詳細については、「CodeQL に貢献する」を参照してください。

複数のアラートを一度に却下する

同じ理由で却下したい複数のアラートがプロジェクトにあるなら、アラートのサマリからそれらをまとめて却下できます。 通常は、リストをフィルタしてマッチするアラートをすべて却下することになるでしょう。 たとえば、プロジェクト中で特定の共通脆弱性タイプ (CWE)の脆弱性がタグ付けされた現在のアラートをすべて却下したいことがあるでしょう。

参考資料