セキュリティ監査・スキャン
プロジェクトをクライアントに引き渡す前に、コードベースが完全にクリーンであることを確認する必要があります。ハードコードされた認証情報がないか、脆弱なパッケージがないか、明らかなインジェクションポイントがないかを確かめなければなりません。Sun Agent Kit のセキュリティスキャンエージェントはコンプライアンスチェック全体を自動化し、重大度別に分類された指摘事項を含む構造化レポートを生成します。そのレポートは、そのまま納品メールに添付できます。
概要
目的: クライアントへのリリースやコード引き渡し前に、署名済みのセキュリティレポートを作成する
所要時間: 5〜15分(手動レビューの場合は2〜4時間)
使用エージェント: scout、reviewer、debugger
コマンド: /sk:security-scan、/sk:security-scan --full、/sk:security-scan --secrets-only、/sk:security-scan --deps-only
前提条件
- Sun Agent Kit がインストール・認証済みであること(インストールガイド)
- コミット済みのソースコードを含む git リポジトリ(未ステージの変更もスキャン対象)
- 依存関係監査のために
package.json、requirements.txt、Gemfile、またはgo.modが存在すること - ネイティブ監査ランナー用に
PATH内に Node.js ≥ 18 または Python ≥ 3.10 があること
ステップ別ワークフロー
ステップ 1: シークレットのベースラインスキャンを実行する
最も速く、最もインパクトの大きいチェックから始めます。ソースファイルに漏洩したシークレットや認証情報の検出です。
/sk:security-scan --secrets-only
実行内容: エージェントが以下を実行します:
- 正規表現パターンを使用してソースツリーをスキャンし、ハードコードされた API キー、トークン、秘密鍵、データベース接続文字列を検出する
- コミットされて削除されたシークレットがないか、最近の git 履歴を確認する
- テストフィクスチャやサンプル値からの誤検知をフィルタリングする
- 重大度別に分類された指摘事項を報告する
ステップ 2: 依存関係の完全監査を実行する
すべてのパッケージを既知の脆弱性データベースと照合してチェックします。
/sk:security-scan --deps-only
実行内容: エージェントが以下を実行します:
- 間接依存関係を含む完全な依存関係ツリーを解決する
- パッケージマネージャーに応じて
npm audit、pip auditなどを実行する - ライセンスコンプライアンスの問題を確認する
- 重大度と推奨アップグレードパスとともに脆弱なパッケージを報告する
ステップ 3: アプリケーションコードの OWASP パターン分析を実行する
一般的な脆弱性パターン(SQL インジェクション、XSS ベクター、安全でないデシリアライゼーション、パストラバーサル)を検出します。
/sk:security-scan --full
実行内容: エージェントが以下を実行します:
- シークレットスキャン・依存関係監査・コードパターン分析を1回のパスで組み合わせる
- grep と Claude の推論を使用して OWASP Top 10 パターンについてコードを分析する
- 指摘事項をクロスリファレンスしてエクスプロイトチェーンを特定する
plans/reports/に保存される統合レポートを生成する
ステップ 4: 指摘事項を修正して再スキャンする
各指摘事項に対して、/sk:fix を使用してターゲットを絞った修正を適用します。
/sk:fix "fix the security findings from the scan report in plans/reports/"
実行内容: エージェントが以下を実行します:
- スキャンレポートを読み取り、CRITICAL および HIGH の指摘事項を優先順位付けする
- 修正を適用する(ハードコードされたキーを環境変数にローテーション、脆弱なパッケージをアップグレード、生のクエリをパラメーター化する)
- パッチ適用済みコードを再スキャンして修正を確認する
ステップ 5: 再スキャンしてクリーンな状態を確認する
修正後、納品物にレポートを添付する前に最終検証スキャンを実行します。
/sk:security-scan --full
実行内容: エージェントがフルスキャンを再実行して更新されたレポートを生成します。納品前に CRITICAL または HIGH の指摘事項が残っていないことを確認してください。
完全な例: リリース前のセキュリティ監査依頼
シナリオ
チームは6週間かけて日本のエンタープライズクライアント向けの SaaS ダッシュボードを構築してきました。PM から夜10時に Slack メッセージが届きます。「本番リリースの承認前に、明朝までにコンプライアンス担当者へのセキュリティレポートが必要です。」 コードベースはあります。専任のセキュリティエンジニアはいません。残り8時間です。
連鎖コマンド
# 1. 状況をトリアージするためのフルスキャン
/sk:security-scan --full
# 2. CRITICAL または HIGH を修正
/sk:fix "fix all CRITICAL and HIGH findings from the security scan report"
# 3. クリーンな状態を確認するための再スキャン
/sk:security-scan --full
# 4. クライアント向けドキュメントを生成
/sk:docs "generate security audit summary for client delivery"
結果
1時間以内に、クリーンなセキュリティ監査レポートが完成します。クリーンなマークダウン形式のエグゼクティブサマリー、重大度別の一覧表、指摘事項ごとの改善メモが揃っています。PM はそれをコンプライアンス提出書類に添付し、リリースは予定通りに実施されます。
時間比較
| タスク | 手動 | Sun Agent Kit 使用 |
|---|---|---|
| リポジトリ・git 履歴全体のシークレット grep | 45分 | 数分 |
| npm audit / pip-audit + CVE トリアージ | 60分 | 数分 |
| OWASP パターンレビュー(手動コード読み取り) | 90分 | 数分 |
| 統合クライアントレポートの作成 | 45分 | 数分 |
| 修正と再スキャン | 30分 | 数分 |
| 合計 | 約4.5時間 | 30分以内 |
ベストプラクティス
1. リリース時だけでなく、すべての PR マージ前にスキャンする ✅
/sk:security-scan --secrets-only をリリース時だけでなく、マージ前のゲートとして実行してください。PR でハードコードされたキーを発見すれば2分で修正できますが、本番デプロイ後に発見すれば2日間のインシデント対応になります。
2. 特定のカテゴリを素早く確認するには --secrets-only と --deps-only を使用する ✅
フルスキャンはすべてをカバーしますが時間がかかります。開発中は、特定のカテゴリを素早くチェックするためにターゲットフラグを使用してください。--full はリリース前のゲートに使用してください。
3. 書面による正当化なしに CRITICAL 指摘事項を抑制しない ❌
より早く出荷するために CRITICAL を「受け入れリスク」としてマークしたくなることがあります。補償コントロールを説明する書面でのメモなしにそれを行ってはなりません。クライアント、特に日本のエンタープライズクライアントは必ず確認します。「無視しました」は決して受け入れられる回答ではありません。
4. 開発者マシンでスキャンして完了とみなさない ❌
最終検証スキャンは必ず CI または実際にリリース成果物をビルドする環境で実行してください。開発者マシンには、実際にコミットされている内容を反映しないローカルの .gitignore ルールで除外された .env ファイルが存在する場合があります。
トラブルシューティング
問題: スキャナーが node_modules/ またはベンダーディレクトリ内の指摘事項を報告する
解決策: ディレクトリを指定してスキャンをアプリケーションソースに限定してください: /sk:security-scan src/。依存関係監査ツールは npm audit を通じてベンダーパッケージを別途処理します。
問題: CVE データベースクエリがタイムアウトする
解決策: ネットワーク接続を確認してください。企業プロキシ経由の場合は、HTTP_PROXY 環境変数を設定してください。また、npm audit または pip audit を手動で実行し、出力を /sk:ask に貼り付けて分析することもできます。
問題: ダミー API キーを含むテストフィクスチャでフォールスポジティブが発生する
解決策: レポート内の指摘事項を確認してフォールスポジティブをメモしてください。テストディレクトリを除外するより限定的なスコープで再実行できます: /sk:security-scan src/ --secrets-only。
問題: 依存関係監査で推移的依存関係の脆弱性が表示される
解決策: /sk:fix "upgrade transitive dependency [package-name] to resolve CVE-XXXX" を実行してください。直接解決できない推移的な競合については、エージェントがオーバーライドまたは代替パッケージを提案します。
次のステップ
- コードレビュー — 納品前にセキュリティスキャンと合わせて完全な品質ゲートを実施する
- ドキュメント自動生成 — セキュリティレポートと同じ納品パッケージにハンドオフドキュメントを添付する
- レガシーコードのリファクタリング — セキュリティ指摘事項を繰り返し生む構造的問題を解消する
重要なポイント: かつては半日を要したセキュリティ監査が、20分以内に無人で実行できるようになりました。これにより、タイトなクライアント納期でもコンプライアンスを省略することなく自信を持って出荷できます。