Skip to main content

現在、GitHub AE は限定的リリースです。

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

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

この機能を使用できるユーザー

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

Code scanning は、GitHub AE の Organization 所有のリポジトリで利用できます。 これは GitHub Advanced Security の機能です (ベータ リリース中は無料)。 詳しくは、「GitHub Advanced Security について」を参照してください。

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

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

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

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

  1. ご自分のエンタープライズ で、リポジトリのメイン ページへ移動します。

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

  3. 左側のサイドバーの [Code scanning alerts](コード スキャンのアラート) をクリックします。

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

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

  6. アラートでデータ フローの問題が強調表示された場合は、必要に応じて [パスの表示] をクリックし、データソースから、それが使用されているシンクまでのパスを表示します。 code scanning アラートのスクリーンショット。 [パスの表示] リンクが濃いオレンジ色の枠線で囲まれています。 次の手順で説明する [詳細を表示] リンクも強調表示されています。

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

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

注: 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](影響を受けるブランチ) セクションで確認できます。

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

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

アラートを解決する

リポジトリへの書き込み権限があるユーザなら誰でも、コードに修正をコミットしてアラートを解決できます。 リポジトリでプルリクエストに対して 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 を実行する場合、アラートに複数の分析元が含まれることがあります。 すべての構成を定期的に実行する場合を除いて、ある分析元では解決されており、別の分析元では解決されていないアラートが表示される可能性があります。 詳しくは、「Code scanningアラートについて」を参照してください。

アラートの却下または削除

アラートをクローズする方法は2つあります。 コード中の問題を修正するか、アラートを却下できます。 または、リポジトリの管理者アクセス許可を持っている場合は、アラートを削除できます。 アラートの削除は、code scanningツールをセットアップした後に、それを削除する事にした場合、あるいは使い続けたいよりも大きなクエリセットでCodeQL分析を設定してしまい、ツールからいくつかのクエリを削除した場合といった状況で役立ちます。 どちらの場合も、アラートを削除することでcode scanningの結果をクリーンアップできます。 アラートは、 Security(セキュリティ) タブ内の概要リストから削除できます。

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

アラートを却下すると:

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

アラートを削除した場合:

  • それはすべてのブランチで削除されます。
  • アラートはプロジェクトの現在のアラート数から除外されます。
  • これは、アラートの概要の "クローズ" リストには追加 されません
  • アラートを生成したコードが同じままであり、構成の変更なしで同じ code scanning ツールをもう一度実行すると、分析結果にはアラートが再度表示されます。

アラートを却下または削除するには:

  1. ご自分のエンタープライズ で、リポジトリのメイン ページへ移動します。

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

  3. 左側のサイドバーの [Code scanning alerts](コード スキャンのアラート) をクリックします。

  4. リポジトリに対して管理アクセス許可を持っていて、この code scanning ツールのアラートを削除する必要がある場合は、チェック ボックスの一部またはすべてを選択して、 [削除] をクリックします。

    必要に応じて、自由テキスト検索またはフィルターを使ってアラートの一部を表示し、一致したすべてのアラートを一度に削除することもできます。 たとえば、クエリをCodeQL分析から削除したら、"Rule"フィルタを使ってそのクエリに対するアラートだけをリストして、それらのアラートをすべて選択して削除できます。

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

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

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

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

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

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

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

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

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

参考資料