Skip to main content

このバージョンの GitHub Enterprise サーバーはこの日付をもって終了となりました: 2024-03-26. 重大なセキュリティの問題に対してであっても、パッチリリースは作成されません。 パフォーマンスの向上、セキュリティの向上、新機能の向上を図るために、最新バージョンの GitHub Enterprise サーバーにアップグレードしてください。 アップグレードに関するヘルプについては、GitHub Enterprise サポートにお問い合わせください

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

セキュリティ ビューからプロジェクトのコード内の潜在的な脆弱性やエラーに関するアラートを表示、修正、または無視できます。

この機能を使用できるユーザーについて

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

Code scanning は、GitHub Enterprise Server の Organization 所有のリポジトリで利用できます。 この機能には、GitHub Advanced Security のライセンスが必要です。 詳しくは、「GitHub Advanced Security について」を参照してください。

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

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

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

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

  1. お使いの GitHub Enterprise Server インスタンス で、リポジトリのメイン ページへ移動します。

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

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

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

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

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

tag フィルターにプレフィックス - を付けると、そのタグを含む結果を除外できます。 たとえば、-tag:style には style タグのないアラートのみが表示されます。

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

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

code scanningアラートの検索

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

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

ヒント:

  • 複数語検索はOR検索と等価です。
  • AND 検索により、検索語句がアラート名または詳細の 任意の位置 に任意の順序で見つかった場合に結果が返されます。
  1. お使いの GitHub Enterprise Server インスタンス で、リポジトリのメイン ページへ移動します。
  2. リポジトリ名の下にある [ セキュリティ] をクリックします。 [セキュリティ] タブが表示されない場合は、 [] ドロップダウン メニューを選び、 [セキュリティ] をクリックします。 タブを示すリポジトリ ヘッダーのスクリーンショット。 [セキュリティ] タブが濃いオレンジ色の枠線で強調表示されています。
  3. 左側のサイドバーで、[ Code scanning をクリックします。
  4. [フィルター] ドロップダウン メニューの右側にあるフリー テキスト検索ボックスに、検索するキーワードを入力します。 code scanning アラート ビューの検索フィールドのスクリーンショット。 フィールドには、事前定義済みフィルター "is: open branch:main" が含まれています。 "sql or injection" のフリー テキストが濃いオレンジ色で囲まれています。
  5. Return キーを押します。 アラートリストには、検索条件にマッチしたオープンな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 注釈、または [セキュリティ] タブの概要リストから削除できます。

アラートを却下すると:

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

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

  1. お使いの GitHub Enterprise Server インスタンス で、リポジトリのメイン ページへ移動します。

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

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

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

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

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

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

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

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

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

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

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

参考資料