Instiq
第4章 · Code Security(CodeQL)·v1.0.0·更新 2026/7/17·読了目安 約15分

変更要約: GH-500 第4章を新規作成(アプローチと設定=CodeQL[純正・データフロー SAST]・サードパーティと SARIF 取り込み・Actions デフォルト/外部 CI 有効化・ワークフローテンプレート・matrix ビルド・スキャン頻度、分析と最適化=データフロー source→sink レビュー・重大度/カテゴリ(CWE)・アラートライフサイクルと autofix[要検証]・高度な構成/クエリスイート・スキャン失敗(ビルド/言語/リソース)と性能トラブルシュート)

4.1Code Security のアプローチと設定

この節の要点

ネイティブ(CodeQL)とサードパーティのコードスキャン、CodeQL とサードパーティ解析の選択、SARIF ファイルの取り込みと相互運用、そして GitHub Actions や外部 CI での有効化・ワークフローテンプレート・マトリックスビルド・スキャン頻度を理解します。

Code Security(製品名。コード解析の機能は code scanning/CodeQL)は、ソースコードを 静的解析(SAST) して脆弱性を見つけます。中核エンジンが CodeQL で、コードを データベース化 し、クエリ で「危険なデータの流れ(dataflow)」を探します。GitHub 純正の CodeQL に加え、サードパーティの解析ツール の結果も取り込めます。

4.1.1CodeQL とサードパーティ・SARIF

CodeQL は GitHub 純正で、多言語に対応し、強力な データフロー解析 で脆弱性を検出します。一方、組織が既存の サードパーティ SAST を使っている場合や、CodeQL 非対応の言語/観点を補いたい場合は、サードパーティツールの結果を取り込めます。その共通フォーマットが SARIF(Static Analysis Results Interchange Format) です。サードパーティツールが出力した SARIF を GitHub に アップロード すると、Code Scanning アラートとして 同じ UI で一元管理 できます。「CodeQL を使うか、サードパーティを SARIF で取り込むか」を要件で選びます。

4.1.2有効化 — Actions と外部 CI

Code Scanning は主に 2 通りで動かします。
GitHub Actions のワークフロー(CodeQL のスターター/ワークフローテンプレート)で実行する方法——最も手軽で、デフォルトセットアップ なら数クリックで有効化できます。
外部 CI システム で CodeQL CLI(や他ツール)を走らせ、結果(SARIF)をアップロードする方法。多言語リポでは マトリックスビルド で言語ごとに並列スキャンします。スキャン頻度 は、push/PR ごと・定期(schedule)など、コストと鮮度のバランスで設定します。

試験ポイント

頻出:
Code Security = CodeQL(純正・データフロー解析の SAST)
②サードパーティ解析の結果は SARIF で取り込み、同じ UI で一元管理。
③有効化=GitHub Actions(デフォルトセットアップ/ワークフローテンプレート)外部 CI で CodeQL CLI→SARIF アップロード
④多言語は matrix ビルドで並列、スキャン頻度は push/PR・定期で調整。

注意

混同・注意:
①CodeQL(純正)とサードパーティ SAST は排他でなく、SARIF で共存できる。
②SARIF は「結果の交換フォーマット」であり解析エンジンそのものではない。
③デフォルトセットアップ(手軽)と高度セットアップ(ワークフロー YAML を編集)を取り違えない。
④多言語リポで言語指定を誤ると一部言語が未スキャンになる——matrix とビルド設定を確認。

CodeQL・SARIF・Actions/外部CI・matrix/頻度の図。
CodeQLとサードパーティは共存

4.1.3この節のまとめ

  • Code Security=CodeQL(純正・データフロー解析の SAST)。サードパーティ結果は SARIF で取り込み一元管理
  • 有効化:GitHub Actions(デフォルトセットアップ/テンプレート)か 外部 CI で CodeQL CLI→SARIF
  • 多言語は matrix ビルドで並列、スキャン頻度は push/PR・定期で調整
  • CodeQL とサードパーティは SARIF で共存可能、SARIF は交換フォーマット

進捗の記録にはログインが必要です。

理解度チェック

(軽い確認用)

Q1. GitHub 純正で、コードをデータベース化しデータフロー解析で脆弱性を検出する SAST エンジンはどれですか?

Q2. 組織が既存のサードパーティ SAST の結果を GitHub の Code Scanning アラートとして一元管理したいです。使う共通フォーマットは?

Q3. 最も手軽に Code Scanning(CodeQL)を有効化する方法はどれですか?

Q4. 多言語リポジトリで各言語を並列にスキャンしたいです。ワークフローで使うものは?

Q5. CodeQL とサードパーティ SAST の関係として正しいものはどれですか?

Q6. スキャン頻度の設定として適切な考え方はどれですか?

理解度を確認第4章「Code Security(CodeQL)」の問題を解く

学習の記録を残しませんか

参考書はすべて無料で読めます。無料登録すると、問題集での演習・既読と進捗の記録・間違えた問題の復習・ハイライトが使えます。