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アラートをトリアージする」を参照してください。

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

デフォルトでは、リポジトリのデフォルトのブランチのアラートのみが表示されるように、code scanning アラートがフィルター処理されています。

  1. GitHub.com で、リポジトリのメイン ページへ移動します。

  2. リポジトリ名の下にある [ セキュリティ] をクリックします。 [セキュリティ] タブが表示されない場合は、 [] ドロップダウン メニューを選び、 [セキュリティ] をクリックします。 タブを示すリポジトリ ヘッダーのスクリーンショット。 [セキュリティ] タブが濃いオレンジ色の枠線で強調表示されています。

  3. 左側のサイドバーで、[ Code scanning をクリックします。

  4. 必要に応じて、フリー テキスト検索ボックスまたはドロップダウン メニューを使用してアラートをフィルター処理します。 たとえば、アラートを識別するために使われたツールによってフィルタリングできます。

    code scanning アラート ページのスクリーンショット。 検索ボックスとフィルターのドロップダウン メニューは、濃いオレンジでアウトラインされています。

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

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

    code scanning アラートのスクリーンショット。 [パスの表示] リンクが濃いオレンジ色の枠線で囲まれています。 次の手順で説明する [詳細を表示] リンクも強調表示されています。

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

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

注記: code scanning 解析の前回の実行日時をツール ステータス ページで確認できます。 詳しくは、「コード スキャンのツール状態ページについて」を参照してください。

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

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

ドロップダウン リストからキーワードを選ぶか、検索フィールドにキーワードを入力すると、結果が含まれる値のみが表示されます。 結果のないフィルターを設定せずに済みます。

code scanning アラート ビューの検索フィールドのスクリーンショット。 ユーザーがフィールドに「branch:dependabot」と入力しました。 "dependabot" が名前に含まれる有効なブランチの名前がすべて、ドロップダウン メニューに表示されています。

複数のフィルターを入力すると、ビューには、これらの _すべて_のフィルターと一致するアラートが表示されます。 たとえば、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 タグのないアラートのみが表示されます。

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

"Only alerts in application code" フィルターまたは autofilter:true キーワードと値を使用して、結果をアプリケーション コード内のアラートに制限できます。 アプリケーション コードではなく自動的にラベル付けされるコードの種類の詳細については、「Code scanningアラートについて」を参照してください。

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 で、リポジトリのメイン ページへ移動します。
  2. リポジトリ名の下にある [ セキュリティ] をクリックします。 [セキュリティ] タブが表示されない場合は、 [] ドロップダウン メニューを選び、 [セキュリティ] をクリックします。 タブを示すリポジトリ ヘッダーのスクリーンショット。 [セキュリティ] タブが濃いオレンジ色の枠線で強調表示されています。
  3. 左側のサイドバーで、[ Code scanning をクリックします。
  4. [フィルター] ドロップダウン メニューの右側にあるフリー テキスト検索ボックスに、検索するキーワードを入力します。 code scanning アラート ビューの検索フィールドのスクリーンショット。 フィールドには、事前定義済みフィルター "is: open branch:main" が含まれています。 "sql or injection" のフリー テキストが濃いオレンジ色で囲まれています。
  5. Return キーを押します。 アラートリストには、検索条件にマッチしたオープンなcode scanningアラートが含まれます。

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

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

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

特定の code scanning アラートの状態を追跡する問題を迅速に作成するには、[code scanning アラート] ページで、追跡するアラートをクリックします。そのアラートの詳細ページ内の [問題の作成] をクリックします。 自動生成された問題を必要に応じてカスタマイズし、[新しい問題の送信] をクリックします。

または、存在する問題で code scanning アラートを追跡するには、issue のタスク リスト項目としてアラートの URL を追加します。 タスク リストについて詳しくは、「タスクリストについて」をご覧ください。

code scanning アラートを追跡するための issue の作成については、「タスク リストを使用した issue のコード スキャン アラートの追跡」を参照してください。

アラートを解決する

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

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

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

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

code scanning の検索フィールドのスクリーンショット。ドロップダウン メニューの "ブランチ" が展開されています。 "ブランチ" ボタンが濃いオレンジ色で囲まれています。

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

**注:**複数の構成を使用して code scanning を実行すると、1 つ以上の構成によって同じアラートが生成されることがあります。 すべての構成を定期的に実行する場合を除いて、ある構成では解決されており、別の構成では解決されていないアラートが表示される可能性があります。 これらの古い構成とアラートは、ブランチから削除できます。 詳しくは、「ブランチから古い構成とアラートを削除する」をご覧ください。

アラートを無視する

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

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

アラートを却下すると:

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

アラートを無視するには:

  1. GitHub.com で、リポジトリのメイン ページへ移動します。

  2. リポジトリ名の下にある [ セキュリティ] をクリックします。 [セキュリティ] タブが表示されない場合は、 [] ドロップダウン メニューを選び、 [セキュリティ] をクリックします。 タブを示すリポジトリ ヘッダーのスクリーンショット。 [セキュリティ] タブが濃いオレンジ色の枠線で強調表示されています。

  3. 左側のサイドバーで、[ Code scanning をクリックします。

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

  5. アラートを確認してから Dismiss alert(アラートの却下) をクリックし、アラートをクローズする理由を選ぶか入力します。 pull request の code scanning アラートのチェック エラーの  スクリーンショット。 チェックエラーの [アラートの却下] ボタンが濃いオレンジ色で囲まれています。 [アラートの却下] ドロップダウンが表示されています。 クエリが将来の分析に含まれ続けるかに影響することがあるので、ドロップダウンメニューから適切な理由を選択することは重要です。 必要に応じて、無視にコメントを付けて、アラートを無視するコンテキストを記録できます。 無視のコメントはアラート タイムラインに追加され、監査と報告の間に正当な理由として使用できます。 コード スキャン REST API を使用して、コメントを取得または設定できます。 コメントは、alerts/{alert_number} エンドポイントの dismissed_comment に含まれます。 詳しくは、「Code Scanning」を参照してください。

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

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

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

無視されたアラートを再び開く

アラートを解除した後、アラートを修正する必要があることがわかった場合は、アラートを再度オンにしてコードで問題を修正します。 アラームがオフになったリストを表示し、アラームを検索し、アラームを表示し、再びアラームをオンにします。 その後、他のアラートと同じ方法でアラートを修正できます。

ブランチから古い構成とアラートを削除する

1 つのリポジトリに複数のコード スキャン構成が含まれる場合があります。 実行すると、複数の構成で同じアラートが生成されることがあります。 さらに、構成を異なるスケジュールで実行した場合、頻度の低い構成または古い構成ではアラートの状態が古くなる可能性があります。 複数の構成からのアラートについて詳しくは、「Code scanningアラートについて」をご覧ください。

  1. GitHub.com で、リポジトリのメイン ページへ移動します。

  2. リポジトリ名の下にある [ セキュリティ] をクリックします。 [セキュリティ] タブが表示されない場合は、 [] ドロップダウン メニューを選び、 [セキュリティ] をクリックします。 タブを示すリポジトリ ヘッダーのスクリーンショット。 [セキュリティ] タブが濃いオレンジ色の枠線で強調表示されています。

  3. 左側のサイドバーで、[ Code scanning をクリックします。

  4. [Code scanning] で、code scanning アラートをクリックします。

  5. サイドバーの [影響を受けるブランチ] セクションで、目的のブランチをクリックします。

  6. [構成の分析] ダイアログで、選択したブランチでこのアラートを報告した構成の詳細を確認します。 目的のブランチの不要な構成を削除するには、 をクリックします。

    誤って構成を削除した場合は、 [キャンセル] をクリックして変更を適用しないようにします。

    [構成の分析] モーダルのスクリーンショット。 [構成の削除] アイコンが濃いオレンジ色で囲まれています。

  7. 不要な構成を削除し、期待される構成が表示されていることを確認したら、 [変更の保存] をクリックします。

    誤って構成を削除した後で変更を保存した場合は、構成をもう一度実行してアラートを更新します。 GitHub Actions を使う構成の再実行について詳しくは、「ワークフローとジョブの再実行」をご覧ください。

注:

  • リポジトリのデフォルトのブランチのすべての code scanning 構成を削除した場合、デフォルトのブランチは [影響を受けるブランチ] サイドバーに残っていますが、どの構成でも分析されません。
  • リポジトリのデフォルトのブランチ以外のブランチのすべての code scanning 構成を削除した場合は、[影響を受けるブランチ] サイドバーからそのブランチが削除されます。

code scanning アラートへの応答を監査する

GitHub ツールを使用して、code scanning アラートに応答して実行されたアクションを監査できます。 詳しくは、「セキュリティ アラートの監査」を参照してください。

参考資料