注: この機能を使うには、サイト管理者が お使いの GitHub Enterprise Server インスタンス の code scanning を有効にする必要があります。 詳しくは、「アプライアンス用コードスキャンの構成」を参照してください。
Enterprise の所有者が Enterprise レベルで GitHub Advanced Security (GHAS) ポリシーを設定している場合、code scanning を有効または無効にできない場合があります。 詳しくは、「エンタープライズのコード セキュリティと分析のためのポリシーの適用」を参照してください。
CodeQL は、セキュリティ チェックを自動化するために GitHub が開発した、コード分析エンジンです。 CodeQL を使用してコードを分析し、結果を code scanning アラートとして表示することができます。
code scanningに対して CodeQL 分析を使用する方法には、主に 2 通りあります。
-
既定の設定を使用して、リポジトリ上の code scanning の CodeQL 分析をすばやく構成します。 既定の設定では、分析する言語、実行するクエリ スイート、スキャンをトリガーするイベントが自動的に選択されます。 必要に応じて、実行するクエリ スイート CodeQL を有効にすると、GitHub Actions によってワークフロー実行が実行され、コードがスキャンされます。 詳しくは、「コード スキャンの既定セットアップの構成」を参照してください。
-
詳細設定を使用して、CodeQL ワークフローをご利用のリポジトリに追加します。 これにより、github/codeql-action を使用して CodeQL CLI を実行するカスタマイズ可能なワークフロー ファイルが生成されます。 詳しくは、「コード スキャンの高度なセットアップの構成」を参照してください。
-
外部 CI システムで CodeQL CLI CLI を直接実行し、その結果を GitHub にアップロードします。 詳しくは、「既存の CI システムでコード スキャンを使用する」を参照してください。
code scanning アラートについては、「Code scanningアラートについて」をご覧ください。
CodeQL について
CodeQL はコードをデータのように扱い、コードの潜在的な脆弱性を従来の静的分析よりも高い精度で見つけることができます。
- ご利用のコードベースを表現する CodeQL データベースを生成します。
- 次に、そのデータベースに対して CodeQL クエリを実行して、コードベース内の問題を特定します。
- CodeQL を code scanning で使用すると、クエリ結果は GitHub Enterprise Server に code scanning アラートとして表示されます。
CodeQL ではコンパイルおよびインタープリタ言語の両方がサポートされていて、サポートされている言語で記述されたコードの脆弱性とエラーを見つけることができます。
- C/C++
- C#
- Go
- Java/Kotlin
- JavaScript/TypeScript
- Python
- Ruby
注:
- Kotlin の CodeQL 分析は、現在ベータ版です。 ベータ版の間、Kotlin の分析は他の言語の CodeQL 分析ほど包括的ではありません。
java
を使用して、Java、Kotlin、またはその両方で記述されたコードを分析します。javascript
を使用して、JavaScript、TypeScript、またはその両方で記述されたコードを分析します。
詳細については、CodeQL Web サイトのドキュメント「サポートされている言語とフレームワーク」を参照してください。
CodeQL クエリについて
GitHub 専門家、セキュリティ研究者、およびコミュニティの貢献者は、code scanning に使用される既定の CodeQL クエリを作成して維持します。 クエリは、分析を改善し、誤検知の結果を減らすために定期的に更新されます。 既定のパック、および拡張されたパックで使用できるクエリの詳細については、「default および security-extended クエリ スイートに含まれるクエリ」を参照してください。
独自のクエリを記述する
クエリはオープンソースであるため、github/codeql リポジトリ内のクエリを表示したり投稿したりできます。 詳細については、CodeQL ドキュメントにある CodeQL クエリに関するページを参照してください。
追加のクエリを実行する
詳細設定または外部 CI システムを使用してコードをスキャンする場合は、分析の一部として追加のクエリを実行できます。
これらのクエリは、公開された CodeQL クエリ パック、またはリポジトリ内の CodeQL パックに属している必要があります。
-
CodeQL クエリ パックが GitHub Container registry に公開されると、クエリとコンパイル キャッシュに必要なすべての推移的な依存関係がパッケージに含められます。 これにより、パフォーマンスが向上します。そして、パックまたは CLI の新しいバージョンにアップグレードするまでは、パックでクエリを実行するたびに確実に同じ結果が得られます。
-
CodeQL クエリ パックは、複数の GitHub コンテナ レジストリからダウンロードできます。 詳しくは、「コード スキャン用の高度なセットアップのカスタマイズ」を参照してください。
詳しくは、「CodeQL パックを使った分析のカスタマイズ」を参照してください。