Codex use case
CI でのセキュリティスキャンの自動化
pull requests や main へのコミットをスキャンできます。リポジトリの定期スキャンも可能です。
CI パイプラインに Codex Security CLI を追加します。スキャンのタイミングとレビュー対象のコードを選び、検出結果とスキャン範囲を記録します。スキャン結果をリリースの判断にどう反映するかも決められます。
Best for
- pull request やマージリクエストにセキュリティチェックを追加するチーム
- 変更が取り込まれた後にデフォルトブランチをスキャンするメンテナー
- リポジトリのセキュリティ評価を定期的に実施するセキュリティチーム
Contents
CI でのセキュリティスキャンの自動化
pull requests や main へのコミットをスキャンできます。リポジトリの定期スキャンも可能です。
CI パイプラインに Codex Security CLI を追加します。スキャンのタイミングとレビュー対象のコードを選び、検出結果とスキャン範囲を記録します。スキャン結果をリリースの判断にどう反映するかも決められます。
CI パイプラインに Codex Security CLI を追加します。スキャンのタイミングとレビュー対象のコードを選び、検出結果とスキャン範囲を記録します。スキャン結果をリリースの判断にどう反映するかも決められます。
Best for
- pull request やマージリクエストにセキュリティチェックを追加するチーム
- 変更が取り込まれた後にデフォルトブランチをスキャンするメンテナー
- リポジトリのセキュリティ評価を定期的に実施するセキュリティチーム
開発ワークフローにセキュリティスキャンを組み込みましょう。Codex Security は、Pull Request を対象に実行することも、デフォルトブランチに変更が反映された後や定期スケジュールに従って実行することもできます。トリガーに応じてスキャン範囲を選び、検出事項とカバレッジの記録を保存して、チームが毎回同じ手順で結果をレビューできるようにします。
スキャンの実行タイミング
まずはチームのワークフローに合うトリガーを 1 つ選びます。スキャンにかかる時間や費用、チームでの検出事項の活用方法がわかってきたら、トリガーを追加します。
| 実行タイミング | 推奨するスキャン範囲 | 確認できる内容 |
|---|---|---|
| 定期実行 | リポジトリ全体。必要に応じて詳細スキャンを使用 | コードベースを定期的に広く確認できます。 |
| main へのコミット時 | プッシュされたコミット時点のリポジトリ全体 | デフォルトブランチに変更を取り込んだ後のコードを確認できます。 |
| Pull Request またはマージリクエスト時 | マージベースと提案されたコミットとの差分 | セキュリティを損なう変更がないか、マージ前に確認できます。 |
デフォルトブランチの名前が main 以外の場合は、実際のブランチ名を使用します。トリガーとスキャン範囲の両方を設定してください。Pull Request の差分スキャンの対象は、その変更に限られます。リポジトリ全体は対象外です。変更が main に反映された後のスキャンでは、すでにマージされた Pull Request をブロックできません。
事前準備
セキュリティ評価を行う権限のあるリポジトリ、その CI パイプラインとシークレットを設定する権限、Codex Security にアクセスできる OpenAI API キーが必要です。CLI クイックスタートで、アクセスとセットアップの要件を確認してください。
CI の要件を満たす、信頼できるランナーを使用してください。スキャンはランナーのローカル権限で実行されます。スキャンに関係のない認証情報はスキャンジョブに含めないでください。フォークしたリポジトリからの Pull Request や、その他の信頼できないコードについては、利用するプラットフォームの制限に従ってください。
パイプラインの設定
-
パイプラインへの Codex Security の追加
利用する CI プラットフォームに合う設定例を選びます。その手順に従って Codex Security CLI をインストールし、CI プロバイダーのシークレットストア経由で API キーを渡します。
プラットフォーム別の設定例は次のとおりです。
- GitHub Actions: Pull Request 用ワークフローを使用して、提案された変更をスキャンし、結果を保存します。
- GitLab CI/CD: マージリクエスト、デフォルトブランチのスキャン、定期スキャンには、パイプラインガイドを参照してください。パイプラインをダウンロードでき、有効にするオプションも確認できます。
- その他の CI プラットフォーム: CI での Codex Security の実行に記載されているスキャンとエクスポートのコマンドを、利用するプロバイダーのトリガー、シークレットストア、チェックアウト手順、アーティファクトの扱いに合わせて調整します。
-
トリガーとスキャン範囲の設定
変更が
mainに反映されたら、プッシュされたコミット時点のリポジトリをスキャンします。定期スキャンでは、対象のブランチを選んで実行します。まずは週 1 回を目安に、リポジトリの更新状況、スキャンの所要時間、費用に応じて頻度を調整します。Pull Request やマージリクエストでは、ベースとヘッドの両方のコミット履歴を取得し、マージベースからヘッドまでのコミット済みの差分をスキャンします。
各ジョブで対象のコードを指定します。定期スキャンと
mainへのコミット時のスキャンではリポジトリ全体を、Pull Request では提案された変更を対象にします。利用するプラットフォームの設定例に従って、それぞれのスキャンを設定してください。スキャンの範囲と頻度に見合う予算を設定します。リポジトリ全体のスキャンは、差分スキャンよりも時間や費用がかかる場合があります。
--max-costは推定費用に基づく上限であり、実際の支出を厳密に制限するものではありません。この上限に達すると、対象のコードをすべてスキャンできない場合があります。 -
パイプラインの実行と結果のレビュー
通常の手順でパイプラインの変更をレビューに提出してから、スキャンを実行します。パイプラインの実行記録と
scan-manifest.jsonで、対象のリビジョンとスキャン範囲を確認します。保存したレポートで、検出事項とその根拠を確認します。検出事項が報告されなかった場合でも、
coverage.jsonを開き、スキャンが完了しなかった箇所や保留された箇所がないか確認してください。実行頻度を上げたり対象リポジトリを増やしたりする前に、実行時間と費用を確認します。レポートは CI アーティファクトとして保存します。アーティファクトに含まれるソースコードや検出の根拠に応じて、アクセス権と保存期間を設定してください。
必要に応じて、セキュリティの検出事項を記録する構造化形式 SARIF で結果をエクスポートし、プラットフォームのセキュリティ画面に表示できます。対応バージョン、必要な権限、ライセンス要件は、プラットフォームのガイドで確認してください。
-
検出事項に基づくマージの可否の判断
最初はマージをブロックせずに検出事項をレビューします。チームが結果の扱いに慣れたら、Pull Request のマージ条件としてセキュリティチェックの通過を必須にできます。たとえば、スキャンで重大度が「高」または「緊急」の脆弱性が見つかった場合に、マージをブロックできます。
スキャンが完了したか、どのコードが対象になったかを必ず確認してください。スキャンが失敗した場合や一部のコードがスキップされた場合は、検出事項が報告されていなくても確認が必要です。
設定の詳細は、重大度のしきい値の設定とスキャン結果の読み方を参照してください。
-
検出事項への対応
チームの通常の手順に従って、検出事項ごとに調査または修正の担当者を割り当てます。別の開発者が調査できるように、スキャンしたコミット、影響を受けるコード、検出の根拠を記載してください。
検出事項をクローズする前に修正を検証します。スキャンしきれなかった箇所は、追加のスキャンで確認してください。
Related use cases
CI/CD におけるサプライチェーンリスク管理
Codex Security CLI を使い、サードパーティの依存関係がアプリケーションのセキュリティに与える影響を評価します。Dependabot...
CLI からのセキュリティレビュー
Codex Security CLI を使って、未コミットの変更やブランチ上の変更をレビューします。
Codex Desktop でのコード変更のレビュー
Codex またはリポジトリの Codex プロジェクトからセキュリティレビューを開始できます。