Skip to main content
ドキュメントへの更新が頻繁に発行されており、このページの翻訳はまだ行われている場合があります。 最新の情報については、「英語のドキュメント」を参照してください。

リポジトリの code scanning を構成する

リポジトリの code scanning を構成して、コード内のセキュリティの脆弱性を見つけることができます。

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

If you have write permissions to a repository, you can configure code scanning for that repository.

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

注: この機能を使うには、サイト管理者が お使いの GitHub Enterprise Server インスタンス の code scanning を有効にする必要があります。 コードをスキャンするためにGitHub Actionsを使いなら、サイト管理者はGitHub Actionsの有効化と、必要なインフラストラクチャのセットアップもしなければなりません。 詳しくは、「アプライアンスのコードスキャンを設定する」を参照してください。

code scanning を構成するためのオプション

code scanning アラートの生成方法、および使用するツールを、リポジトリレベルで決定できます。 GitHub Enterprise Server は、CodeQL 解析のために完全に統合されたサポートを提供すると共に、サードパーティーのツールを使用した解析もサポートします。 詳しくは、次の箇条書きと「コード スキャンについて」をご覧ください。

  • CodeQL : GitHub Actions (以下を参照) を使うか、またはサードパーティの継続的インテグレーション (CI) システム (「CIシステムでのCodeQL Code scanningについて」を参照) で CodeQL 分析を実行します。

  • サードパーティ: GitHub Actions またはサードパーティのツールを使って、結果を GitHub Enterprise Server にアップロードします (「SARIF ファイルを GitHub にアップロードする」を参照)。

    複数の構成を使用してコード スキャンを実行すると、アラートに複数の分析元が含まれることがあります。 アラートに複数の分析元がある場合、各分析元でのアラートの状態を、[アラート] ページに表示することができます。 詳しくは、「Code scanningアラートについて」を参照してください。

メモ: この記事では、このバージョンの GitHub Enterprise Server の初期リリースに含まれる CodeQL アクションのバージョンおよび関連する CodeQL CLI バンドルで使用できる機能について説明します。 エンタープライズでより新しいバージョンの CodeQL アクションを使用する場合は、この記事の GitHub Enterprise Cloud バージョンで最新の機能に関する情報を参照してください。 最新バージョンの使用については、「アプライアンスのコードスキャンを設定する」を参照してください。

code scanning の手動構成

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

  2. [ アラート] の右側にある [code scanning のセットアップ] をクリックします。code scanning アラートが見つからない場合は、Organization の所有者またはリポジトリ管理者に GitHub Advanced Security を有効にするよう依頼する必要があります。詳しくは、「Organization のセキュリティおよび分析設定を管理する」または「リポジトリのセキュリティと分析設定を管理する」をご覧ください。

  3. [code scanning の使用を開始する] で、CodeQL 分析ワークフローまたはサードパーティ ワークフローに対して [このワークフローを設定する] をクリックします。 [code scanning の使用を開始する] という見出しの下にある [このワークフローを設定します] ボタンワークフローは、それがリポジトリで検出されたプログラミング言語に関連する場合にのみ表示されます。 CodeQL 分析ワークフローは常に表示されますが、[このワークフローを設定する] ボタンは、CodeQL 分析がリポジトリ内に存在する言語をサポートしている場合にのみ有効になります。

  4. code scanning がコードをスキャンする方法をカスタマイズするため、ワークフローを編集します。

    通常は、何も変更せずに CodeQL 分析ワークフローをコミットてきます。 ただし、サード パーティのワークフローの多くでは、追加の構成が必要になるので、コミットする前にワークフローのコメントを読んでください。

    詳しくは、「code scanning のカスタマイズ」を参照してください。

  5. Start commit ドロップダウンを使用し、コミット メッセージを入力します。 コミットを開始する

  6. 既定のブランチに直接コミットするか、新しいブランチを作成して pull request を開始するかを選択します。 コミット先を選択する

  7. [Commit new file] (新しいファイルをコミットする) または [Propose new file] (新しいファイルを提案する) をクリックします。

推奨される CodeQL 分析ワークフローでは、code scanning は、既定のブランチまたは保護されたブランチに変更をプッシュするたび、あるいは既定のブランチに pull request を生成するたびに、コードを解析するよう構成されています。 その結果として、code scanning が開始されます。

コード スキャンの on:pull_requeston:push トリガーは、それぞれ異なる目的に役立ちます。 詳しくは、「code scanning のカスタマイズ」を参照してください。

code scanning の一括構成

スクリプトを使って、code scanning を多くのリポジトリで一括で構成できます。 スクリプトを使用して、GitHub Actions ワークフローを複数のリポジトリに追加する pull request を発生させる場合は、jhutchings1/Create-ActionsPRs リポジトリで PowerShell を使用する例を、または、PowerShell を持たず代わりに NodeJS を使用したいチームの場合は nickliffen/ghas-enablement を参照してください。

code scanning からログ出力を表示する

リポジトリで code scanning を構成したら、実行したアクションの出力を見ることができます。

  1. リポジトリ名の下の [Actions] (アクション) をクリックします。 メインのリポジトリ ナビゲーション内の [Actions](アクション) タブ

    code scanning ワークフローを実行するためのエントリを含むリストが表示されます。 エントリのテキストは、コミットメッセージに付けるタイトルです。

    code scanning ワークフローを表示しているアクションのリスト

  2. code scanning ワークフローのエントリをクリックします。

  3. 左側のジョブ名をクリックします。 たとえば、 [分析 (言語)] です。

    code scanning ワークフローからのログ出力

  4. このワークフローの実行時にアクションから出力されるログを確認します。

  5. すべてのジョブが完了すると、確認されたすべての code scanning アラートの詳細を表示できます。 詳しくは、「リポジトリのコード スキャンのアラートを管理する」を参照してください。

注釈: code scanning ワークフローを追加するための pull request をリポジトリに発行すると、その pull request からのアラートは、その pull request がマージされるまで ページに直接表示されません。 アラートが見つかった場合は、pull request がマージされる前に、 ページのバナーにある [NUMBER のアラートを検出] リンクをクリックして表示できます。

[n alerts found](n 件のアラートが見つかりました) リンクをクリックします

Pull Requestのチェックを理解する

プルリクエストで実行するよう設定した各 code scanning ワークフローでは、プルリクエストのチェックセクションに常に最低 2 つのエントリが表示されています。 ワークフローの解析ジョブごとに 1 つのエントリがあり、最後のエントリは解析結果です。

code scanning 解析チェックの名前は、「ツール名 / ジョブ名 (トリガー)」という形式になります。 たとえば、C++ のコードの CodeQL 解析には、「CodeQL / Analyze (cpp) (pull_request)」のエントリがあります。 code scanning 分析エントリで [詳細] をクリックして、ログのデータを表示できます。 これにより、解析ジョブが失敗した場合に問題をデバッグできます。 たとえば、コンパイル型言語の code scanning 解析では、アクションがコードをビルドできなかった場合に解析ジョブが失敗します。

code scanning プルリクエストのチェック

code scanning ジョブが完了すると、 GitHub はプルリクエストにより追加されたアラートがないか確認し、チェックのリストに「 の結果 / ツール名」のエントリを追加します。 code scanning が 1 回でも実行された後は、 [詳細] をクリックして分析結果を表示できます。

次の手順

code scanning を構成し、そのアクションを完了させた後は、次のことができます。