Skip to main content
設定とセキュリティ

セキュリティスキャン

Qoder CLI のセキュリティスキャンを、対話型開発および CI/CD で使用する方法を説明します。

Qoder CLI には、コード生成やコード変更の過程で高リスクなセキュリティ問題の発見を支援するセキュリティスキャン機能が組み込まれています。日常的な開発に継続的なチェックを追加し、危険な関数呼び出し、インジェクションリスク、機密情報漏えい、データフロー上の問題を早期に見つけるのに役立ちます。 セキュリティスキャンは、セキュリティチームによる完全な監査を置き換えるものではありません。対話型スキャンは現在のタスクで生成されたコードと増分変更を主な対象にします。リポジトリスキャンは、リポジトリ全体または指定したパスを確認し、CI/CD で決定的なセキュリティゲートとして使用できます。

入口

インタラクティブ TUI で次のコマンドを入力します:
/security-settings
このコマンドはセキュリティスキャン設定パネルを開きます。パネルでは、各スキャンレベルの状態を確認し、オン/オフを切り替えることができます。 セキュリティスキャンはデフォルトで有効です。設定はユーザー設定に保存され、各スキャンレベルの有効/無効を制御します。L1 Static Check は無料です。L2 Lightweight Scan と L3 Deep Scan は、製品内の表示および現在のアカウントの課金ルールに応じて Credits を消費する場合があります。

スキャンレベル

Qoder CLI のセキュリティスキャンは 3 つのレベルに分かれています。各レベルは個別に有効化または無効化できます。

L1 Static Check

L1 は現在のタスクで生成されたコードを対象にします。高リスクなパターンマッチングにより、危険な関数呼び出し、明らかな機密情報漏えいパターン、生成コードで発生しやすいその他のリスクを素早く検出します。 L1 Static Check は無料の基本チェックです。現在のタスク中に高リスクなコードパターンを素早く検出するため、デフォルトで有効にしておくことをおすすめします。

L2 Lightweight Scan

L2 は増分のコード変更を対象にします。コードの意味をより深く理解し、SQL インジェクション、リモートコマンド実行、機密データ漏えいなどのリスクを識別します。 日常的なコーディング中により深いセキュリティフィードバックが必要な場合は、L2 を有効にしてください。

L3 Deep Scan

L3 は増分のコード変更に対して、より深い分析を行います。ファイルや関数をまたいでデータフローを追跡し、単一ファイルの視点では見つけにくい隠れた脆弱性の発見を支援します。 L3 は、コミットの準備ができた後、レビュー、push、PR、リリース、デプロイなどの引き渡し前に使うのに適しています。作業ツリーの変更だけがある場合は、L2 にフォールバックすることがあります。

スキャンレベルの設定

/security-settings を開いた後、矢印キーでスキャンレベル間を移動し、Enter または Space でオン/オフを切り替えます。q または Esc でパネルを閉じます。 パネル内の各項目には現在の状態が表示されます:
  • on はそのレベルが有効であることを示します。
  • off はそのレベルが無効であることを示します。
  • default はデフォルト値が使用されていることを示します。
  • saved は値がユーザー設定に保存されていることを示します。
設定パネルはユーザー設定のみを書き込みます。プロジェクト設定は変更しません。

設定ファイルを使用する

ユーザーレベルの settings.json でもセキュリティスキャンを設定できます。設定項目は securityScan の下にあります:
{
  "securityScan": {
    "l1StaticCheck": true,
    "l2LightweightScan": true,
    "l3DeepScan": true
  }
}
3 つの設定項目はいずれもデフォルトで true です。特定のレベルを無効にするには、対応するフィールドを false に設定します:
{
  "securityScan": {
    "l1StaticCheck": true,
    "l2LightweightScan": false,
    "l3DeepScan": false
  }
}

自動スキャンの仕組み

セキュリティスキャンが有効な場合、Qoder CLI は設定に応じて組み込みのセキュリティ機能を読み込み、どのチェックを有効にするかを決定します。 L1 が有効な場合、Qoder CLI は関連するツール呼び出しの後に静的チェックを実行します。L1 が無効な場合、この自動チェックは読み込まれません。 L1、L2、L3 のいずれか 1 つでも有効な場合、Qoder CLI は統合されたセキュリティスキャン機能を保持します。3 つすべてが無効な場合、セキュリティスキャン関連の機能は読み込まれません。

手動セキュリティスキャン

自動スキャン設定に加えて、Qoder CLI は手動セキュリティスキャン用の Skill も提供します:
/security-scan
このコマンドは、意図に応じて次の 3 つのワークフローのいずれかにルーティングします:
  • プロジェクト/ファイルスキャン:リポジトリ全体、または明示的に指定したファイルやディレクトリをスキャンします。
  • L2 軽量レビュー:現在の作業ツリーの変更をレビューします。
  • L3 深層レビュー:push、PR、リリース、デプロイ、その他の引き渡し前に、まだレビューされていないコミット済み変更をレビューします。
単に /security-scan と入力すると、L3 深層スキャン、L2 軽量スキャン、プロジェクト/ファイルスキャンを選ぶピッカーが開きます。プロジェクト/ファイルスキャンを選び、スコープを指定していない場合、Qoder CLI はリポジトリ全体をスキャンするか、特定のファイルやディレクトリをスキャンするかを確認します。 モードやスコープをコマンドに直接含めることもできます:
/security-scan L2 軽量レビュー
/security-scan L3 深層レビュー
/security-scan リポジトリ全体をスキャン
/security-scan src/auth と src/export をスキャン
いずれかのセキュリティスキャンレベルが有効であれば、プロジェクト/ファイルスキャンを使用できます。L2 と L3 はそれぞれ個別の設定スイッチに従います。明示的に要求した L2 または L3 が無効な場合、Qoder CLI は /security-settings で有効化するよう案内します。暗黙的な引き渡し時の L3 チェックは、L3 が無効な場合は何も表示しません。

CI/CD でリポジトリスキャンを実行する

security scan は L4 リポジトリスキャンを提供します。会話セッションを開始せず、Skill に依存しない決定的な非対話型コマンドであるため、CI/CD スクリプトから直接実行できます。 リポジトリ全体をスキャンする:
qoder --cwd /path/to/repository security scan --all
指定したファイルまたはディレクトリをスキャンする:
qoder --cwd /path/to/repository security scan src/auth src/payment
--cwd はリポジトリの作業ディレクトリを指定します。CI Job の実行ディレクトリがチェックアウト先とは限らないため、常に明示的に指定することをおすすめします。--all とパス引数は同時に使用できません。どちらも指定しない場合、スキャンは開始されず、ヘルプだけが表示されます。 この CI/CD コマンドで実行するリポジトリ全体または指定パスのスキャンには、10,000 行の上限は適用されません。追加のオプションは不要です。一般に、リポジトリが大きいほどスキャン時間は長くなります。 主なオプション:
オプション説明
--report <format[=path]>レポートを生成します。複数のレポートを生成する場合は繰り返し指定できます
--fail-on <severity>指定した重大度以上の問題がある場合に非ゼロで終了します。デフォルトは high です
--wait-timeout <seconds>スキャン結果を待つ最大時間です。デフォルトは 3600 秒です
--config <path>高度なスキャン設定ファイルを使用します
次の例では SARIF レポートを生成し、High または Critical の問題が見つかった場合にパイプラインを失敗させます:
qoder --cwd "$CI_PROJECT_DIR" security scan --all \
  --fail-on high \
  --report sarif=qoder-security.sarif
初回導入時に結果のベースラインだけを確認する場合は、--fail-on none を使用できます。これは認証、ネットワーク、スキャン実行、レポート書き込み、タイムアウトのエラーを無視するものではありません。これらのエラーでは引き続き非ゼロで終了します。 実行環境には、有効な Qoder CLI 認証とセキュリティスキャンサービスへのネットワーク接続が必要です。初回実行には追加の準備時間がかかる場合があります。サービス側の分析は複数の段階で行われ、小さな対象でも数分かかる場合があります。前半の分析は通常もっとも時間がかかり、中間結果には追加確認が必要なため、しばらく新しいログが出ず、完了に近づいてから結果とレポートが出力されることがあります。この無出力だけで処理が停止したとは判断しないでください。CI Job のタイムアウトは --wait-timeout より長く設定し、レポートのアップロード時間も確保してください。 すべてのオプションを表示する:
qoder security scan --help

利用に適した場面

セキュリティスキャンは、次のような場面で役立ちます:
  • Qoder CLI が認証、決済、データエクスポート、ファイルアップロード、コマンド実行など、セキュリティ上重要なコードを生成または変更した後。
  • コミット前またはコードの引き渡し前に、現在の変更が高リスクな問題を導入していないかを素早く確認したい場合。
  • コードレビュー前に、セキュリティ観点のフィードバックを得たい場合。
  • 自動化モードを使用しながら、継続的な安全チェックを有効にしておきたい場合。
  • CI/CD でリポジトリ全体または重要なディレクトリをスキャンし、重大度に応じてパイプラインを制御したい場合。

注意事項

セキュリティスキャンは、現在のタスクと増分変更に重点を置きます。プロジェクト/ファイルスキャンではリポジトリ全体または指定したパスをスキャンできますが、それでも完全なセキュリティ監査ではなく、すべての脆弱性を検出することを保証するものでもありません。 結果は、現在のコードコンテキスト、アクセス可能なファイル、有効なスキャンレベルに依存します。重要な業務コードでは、人によるセキュリティレビュー、テスト、依存関係スキャン、組織内のセキュリティプロセスと組み合わせて使用することをおすすめします。 セキュリティスキャンが期待どおりに動作しない場合は、次を確認してください:
  • /security-settings で対象のスキャンレベルが on になっているか。
  • ユーザーレベルの settings.jsonsecurityScan の項目が明示的に無効化されていないか。
  • 設定ファイルを手動で編集した場合、JSON が正しく、ユーザー設定に保存されているか。
  • 現在のタスクでスキャン対象となる新規または変更コードが生成されているか。

関連ドキュメント

  • 権限:ツール承認、権限モード、allow/deny ルールについて説明します。
  • Hooks:Qoder CLI がツール呼び出しやセッションライフサイクル中に自動化ロジックを実行する仕組みを説明します。
  • Skills:Skill によって Qoder CLI に専門的な能力を追加する方法を説明します。
Qoder CLI を使用する