Skip to main content

既存の CI システムでコード スキャンを使用する

サードパーティの継続的インテグレーション システムの CodeQL CLI またはその他のツールを使用してコードを分析し、結果を GitHubにアップロードできます。 結果の code scanning アラートは、 GitHub内で生成されたすべてのアラートと共に表示されます。

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

書き込み アクセスを持つユーザー

Code scanning は、次のリポジトリの種類で使用できます。

  • GitHub.com 上のパブリックリポジトリ
  • GitHub Team、GitHub Enterprise Cloud、または GitHub Enterprise Server 上の組織所有リポジトリ。 GitHub Code Security が 有効になっています。
          code scanningを使用してGitHub内でGitHub Actionsを実行する代わりに、外部の継続的インテグレーションまたは継続的デリバリー/デプロイ (CI/CD) システムでコードを分析し、結果をGitHubにアップロードできます。

メモ

GitHub で code scanning の結果として表示する SARIF データのアップロードは、GitHub Code Security が有効になっている organization 所有のリポジトリと、GitHub.com 上のパブリック リポジトリでサポートされます。 詳しくは、「リポジトリのセキュリティと分析設定を管理する」をご覧ください。

分析ツールの設定

まず、選択した分析ツールをダウンロードし、CI システムで設定する必要があります。

          CodeQL CLIを使用している場合は、CodeQL CLICodeQL分析を実行するすべての CI サーバーで、code scanning バンドルの完全なコンテンツを使用できるようにする必要があります。 詳細については、「[AUTOTITLE](/code-security/codeql-cli/getting-started-with-the-codeql-cli/setting-up-the-codeql-cli)」を参照してください。

分析ツールを CI システム内のサーバーで使用できるようにすると、データを生成する準備が整います。

コード分析

          CodeQL CLIまたはその他の分析ツールを使用してコードを分析するには、コードベース環境を分析して設定するコードを確認し、依存関係が使用可能であることを確認します。 コードベースのビルド コマンドを見つけることもできます。通常は CI システムの構成ファイルで使用できます。

その後、コードベースを分析して結果を生成する手順を完了できます。これは、使用している静的分析ツールによって異なります。

          CodeQL CLIを使用している場合は、まずコードからCodeQL データベースを作成してから、データベースを分析して SARIF 結果を生成する必要があります。 詳細については、「[AUTOTITLE](/code-security/codeql-cli/getting-started-with-the-codeql-cli/preparing-your-code-for-codeql-analysis)」および「[AUTOTITLE](/code-security/codeql-cli/getting-started-with-the-codeql-cli/analyzing-your-code-with-codeql-queries)」を参照してください。

で認証用のトークンを生成する GitHub

各 CI サーバーには、GitHub App、REST API、または別のメソッドを使用しているかどうかに関係なく、personal access tokenに結果をアップロードするために使用するGitHubまたはCodeQL CLIが必要です。 GitHub Appまたはsecurity_eventsのどちらかで、書き込み権限を持つアクセス トークンを使用する必要があります。 CI サーバーがこのスコープを持つトークンを既に使用して GitHubからリポジトリをチェックアウトしている場合は、同じトークンを使用する可能性があります。 それ以外の場合は、security_events 書き込みアクセス許可を持つ新しいトークンを作成し、これを CI システムのシークレット ストアに追加します。 詳細については、「GitHub アプリの作成について」と「個人用アクセス トークンを管理する」を参照してください。

          GitHubに結果をアップロードするさまざまな方法の詳細については、[AUTOTITLE](/code-security/code-scanning/integrating-with-code-scanning/uploading-a-sarif-file-to-github) を参照してください。

結果をアップロードしています GitHub

コードを分析し、SARIF の結果を生成し、 GitHubで認証できることを確認したら、結果を GitHubにアップロードできます。 結果のアップロードに使用できるさまざまな方法の詳細については、「SARIF ファイルを GitHub にアップロードする」を参照してください。

          GitHubを使用して結果をCodeQL CLIにアップロードする方法の詳細については、[AUTOTITLE](/code-security/codeql-cli/getting-started-with-the-codeql-cli/uploading-codeql-analysis-results-to-github) を参照してください。

既定では、 code scanning では、リポジトリの分析ごとに 1 つの SARIF 結果ファイルが必要です。 したがって、コミットから2つめのSARIF結果ファイルをアップロードすると、それはデータのオリジナルのセットの置き換えとして扱われます。 たとえば、分析ツールが分析する言語ごと、または使用するルールのセットごとに異なる SARIF ファイルを生成する場合、1 つの分析に対して 2 つの異なる SARIF ファイルをアップロードすることができます。 リポジトリ内のコミットに対して複数の結果セットをアップロードする場合は、各結果セットを一意のセットとして識別する必要があります。 SARIF アップロードのカテゴリの指定方法は、分析方法によって異なります。