注: この機能を使うには、サイト管理者が お使いの GitHub Enterprise Server インスタンス の code scanning を有効にする必要があります。 詳しくは、「アプライアンス用コードスキャンの構成」を参照してください。
Enterprise の所有者が Enterprise レベルで GitHub Advanced Security (GHAS) ポリシーを設定している場合、code scanning を有効または無効にできない場合があります。 詳しくは、「エンタープライズのコード セキュリティと分析のためのポリシーの適用」を参照してください。
code scanning と CodeQL について
CodeQL は、セキュリティ チェックを自動化するために GitHub が開発した、コード分析エンジンです。 CodeQL を使用してコードを分析し、結果を code scanning アラートとして表示することができます。
code scanning に対して CodeQL 分析を使用する方法には、主に 2 通りあります。
-
CodeQL ワークフローをご利用のリポジトリに追加します。 これにより、github/codeql-action を使用して、CodeQL CLI が実行されます。 詳しくは、「About code scanning with CodeQL」を参照してください。
-
外部 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
- JavaScript/TypeScript
- Python
- Ruby
注:
javascript
を使用して、JavaScript、TypeScript、またはその両方で記述されたコードを分析します。
詳細については、CodeQL Web サイトのドキュメント「サポートされている言語とフレームワーク」を参照してください。
CodeQL クエリについて
GitHub 専門家、セキュリティ研究者、およびコミュニティの貢献者は、code scanning に使用される既定の CodeQL クエリを作成して維持します。 クエリは、分析を改善し、誤検知の結果を減らすために定期的に更新されます。 クエリはオープン ソースであるため、github/codeql
リポジトリ内のクエリを表示して投稿できます。 詳細については、CodeQL Web サイトの CodeQL に関するページを参照してください。 自分で独自のクエリを記述することもできます。 詳細については、CodeQL ドキュメントにある CodeQL クエリに関するページを参照してください。
詳細設定または外部 CI システムを使用してコードをスキャンする場合は、分析の一部として追加のクエリを実行できます。 これらのクエリは、公開された CodeQL クエリ パック (ベータ) またはリポジトリ内の CodeQL パックに属している必要があります。 CodeQL パック (ベータ) には、従来の QL パックと比べて次の利点があります。
- CodeQL クエリ パック (ベータ) が GitHub Container registry に公開されると、クエリとコンパイル キャッシュに必要なすべての推移的な依存関係がパッケージに含められます。 これにより、パフォーマンスが向上します。そして、パックまたは CLI の新しいバージョンにアップグレードするまでは、パックでクエリを実行するたびに確実に同じ結果が得られます。
- QL パックには推移的な依存関係は含まれていません。その結果、パック内のクエリを、標準ライブラリ (つまり、ご利用のクエリ内の
import LANGUAGE
ステートメントによって参照されるライブラリ)、またはクエリと同じ QL パック内のライブラリにのみ依存させることができます。 - CodeQL クエリ パック (ベータ) は、複数の GitHub コンテナー レジストリからダウンロードできます。 詳しくは、「コード スキャンの詳細設定を行う」を参照してください。
詳しくは、「CodeQL パックを使った分析のカスタマイズ」を参照してください。