Skip to main content
We publish frequent updates to our documentation, and translation of this page may still be in progress. For the most current information, please visit the English documentation.

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

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

Who can use this feature

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

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

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

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

code scanning の自動構成

code scanning の既定のセットアップでは、リポジトリに最適な設定で code scanning が自動的に構成されます。 リポジトリは、GitHub Actions を使用し、次の CodeQL 対応言語: JavaScript/TypeScript、Python、Ruby のみが含まれている場合、既定のセットアップの対象となります。 リポジトリに CodeQL でサポートされていない言語 (R など) が含まれている場合は、既定のセットアップを使用できますが、上記の言語以外の CodeQL 対応言語を含める場合は、詳細セットアップを使用する必要があります。 CodeQL 対応言語の詳細については、「CodeQL による code scanning について」を参照してください。

既定のセットアップを有効にすることが、リポジトリの code scanning を構成する最も簡単な方法です。 また、既定のセットアップでは、CodeQL ワークフロー ファイルで必要なメンテナンスは要求されません。 既定のセットアップを有効にする前に、分析する言語、実行するクエリ スイート、新しいスキャンをトリガーするイベントが表示されます。

追加のクエリを実行したり、スキャン スケジュールを変更したり、既定のセットアップで現在サポートされていない言語をスキャンしたりする必要がない場合は、既定のセットアップを試してください。

  1. GitHub.com で、リポジトリのメイン ページへ移動します。 1. リポジトリ名の下の [ 設定] をクリックします。 リポジトリの設定ボタン

  2. サイドバーの [セキュリティ] セクションで、 [コード セキュリティと分析] をクリックします。

  3. [Code scanning] セクションで、 [セットアップ] を選択し、 [既定] をクリックします。

    [既定] セットアップ オプションが強調された [Code scanning] セクションのスクリーンショット

  4. 表示されている CodeQL の既定の構成ウィンドウで、リポジトリの設定を確認し、 [CodeQL を有効にする] をクリックします。

    [CodeQL の既定の構成] ポップアップ ウィンドウのスクリーンショット。[CodeQL] ボタンが強調されています

    注:

    • CodeQL の既定の構成ウィンドウには、分析する言語、実行するクエリ スイート、新しいスキャンをトリガーするイベントなど、既定のセットアップの詳細が表示されます。 実行するクエリ スイート、新しいスキャンをトリガーするイベント、またはその他の code scanning 機能を変更する場合は、詳細セットアップを使用する必要があります。 詳細については、「詳細セットアップの作成」を参照してください。
    • 詳細セットアップから既定のセットアップに切り替える場合は、既定のセットアップによって既存の構成がオーバーライドされることを通知する警告が表示されます。 CodeQL を有効にしたら、既存のワークフロー ファイルを削除するか無効にしてください。 それ以外の場合、GitHub Actions の時間を使用して、code scanning の結果をアップロードすることなく、ワークフローは引き続き定期的に実行されます。
    • 構成後に既定の CodeQL セットアップを表示したい場合は、 を選択し、 [CodeQL 構成の表示] をクリックします。

詳細セットアップの作成

code scanning の詳細セットアップは、code scanning をカスタマイズする必要がある場合に役立ちます。 ワークフロー ファイルを作成および編集することで、実行するクエリの選択、スキャン スケジュールの変更、任意の CodeQL 対応言語のスキャン、マトリックス ビルドの使用などが可能になります。

スターター ワークフローを使用した code scanning の構成

注: Advanced Security のスターター ワークフローは、リポジトリの [アクション] タブの [セキュリティ] カテゴリに統合されています。 この新しい構成は現在ベータ版であり、変更される可能性があります。

GitHub Enterprise Cloud には、code scanning などのセキュリティ機能用のスターター ワークフローが用意されています。 ゼロから始めるのではなく、これらの推奨されるワークフローを使用して、code scanning ワークフローを作成できます。 Code scanning スターター ワークフローは、code scanning が有効になっている場合にのみ、リポジトリで使用できます。

アクションを使用して code scanning を実行すると、分が使用されます。 詳細については、「GitHub Actions の課金について」を参照してください。

  1. GitHub.com で、リポジトリのメイン ページへ移動します。 1. リポジトリ名の下の [Actions] (アクション) をクリックします。 メインのリポジトリ ナビゲーション内の [Actions](アクション) タブ
  2. リポジトリで既に 1 つ以上のワークフローが構成され、実行されている場合は、 [新しいワークフロー] をクリックしてステップ 5 に進みます。 現在、リポジトリ用に設定されているワークフローがない場合は、次のステップに進みます。 [新しいワークフロー] ボタンのスクリーンショット
  3. [セキュリティ] カテゴリまで下にスクロールし、設定するワークフローの下にある [設定] をクリックするか、 [すべて表示] をクリックして使用可能なすべてのセキュリティ ワークフローを表示します。 [アクション] ワークフローの [セキュリティ] セクションのスクリーンショット
  4. ワークフロー ページの右側のウィンドウで、 [ドキュメント] をクリックし、画面の指示に従ってワークフローをニーズに合わせて調整します。 スターター ワークフローの [ドキュメント] タブのスクリーンショット 詳細については、「スターター ワークフローの使用」と「code scanning の構成」を参照してください。

code scanning の手動構成

ワークフロー ファイルを作成して編集することで、code scanning をカスタマイズできます。 詳細セットアップでは、カスタマイズするための基本的なワークフロー ファイルが生成されます。

アクションを使用して code scanning を実行すると、分が使用されます。 詳細については、「GitHub Actions の課金について」を参照してください。

  1. GitHub.com で、リポジトリのメイン ページへ移動します。 1. リポジトリ名の下の [ 設定] をクリックします。 リポジトリの設定ボタン

  2. サイドバーの [セキュリティ] セクションで、 [コード セキュリティと分析] をクリックします。

  3. [Code scanning] セクションで、 [セットアップ] を選択し、 [詳細] をクリックします。

    注: 既定のセットアップから詳細 code scanning セットアップに切り替える場合は、[Code scanning] セクションで を選択し、 [詳細] をクリックします。 表示されるポップアップ ウィンドウで、 [CodeQL を無効にする] をクリックします。

    [詳細] セットアップ オプションが強調表示された [Code scanning] セクションのスクリーンショット

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

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

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

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

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

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

推奨される CodeQL analysis workflowでは、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 アラートの管理」を参照してください。

注釈: code scanning ワークフローを追加するための pull request をリポジトリに発行すると、その pull request からのアラートは、その pull request がマージされるまで Code scanning ページに直接表示されません。 アラートが見つかった場合は、pull request がマージされる前に、Code scanning ページのバナーにある [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 の結果 / ツール名」のエントリを追加します。 code scanning が 1 回でも実行された後は、 [詳細] をクリックして分析結果を表示できます。

次の手順

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