大規模データ安全性レビュー は何をしますか?
本番環境でのバウンデッドな動作について、完全なデータパスをレビューします。エビデンスに基づいた発見事項、確認済みの安全なパス、欠落しているエビデンス、テスト済みまたは未テストの制限値を報告します。
運用ルール
- デフォルトで読み取り専用。コード、依存関係、データベース、本番設定、外部システムを変更しないでください。
- 依存関係をインストールしないでください。
- エビデンスの欠如を安全性の証明として扱わないでください。該当するレイヤーを「未確認 (Unverified)」とマークしてください。
- ランタイム、ロードテスト、クエリプラン、または同等のエビデンスなしに、サポートされるスケールを主張しないでください。
- パターンマッチは発見候補 (candidate) として扱い、発見事項 (finding) として報告しないでください。報告する前に、関連するデータフローを読んでください。
- ユーザースコープまたは現在の差分 (diff) を優先してください。探索、読み取り、コマンド、出力は範囲を制限してください。
ワークフロー
1. スコープの確立
リクエスト、リポジトリの指示、指定されたファイル、現在の差分、および直接のプロデューサーとコンシューマーを読み取ります。レビュー済み、除外済み、欠落しているレイヤーを明記します。
2. スケールプロファイルの構築
現在のボリューム、設計上の制限値、リクエスト頻度、並行性、成長率、アイテムサイズ、インタラクションターゲット、リソース制限を記録します。値がない場合は、診断上の仮定を確認済みの値とは別にラベル付けします。
ユーザーからのエビデンスがない場合にのみ、以下の診断プローブを使用してください:
- 格納行数 10,000,000
- 一致行数 100,000
- 同時インタラクティブリクエスト数 100
- ページサイズ 100、ハード上限 200
- 論理テーブル行数 100,000、DOM行数は制限内
- エクスポートまたはバッチ行数 1,000,000
- 成長率 10倍
3. データパスのトレース
以下をトレースします:
データソース -> クエリ/データアクセス -> サービス/ジョブ -> API/シリアライゼーション -> 状態管理 -> ページ/テーブル/エクスポート
どのレイヤーがエビデンスによってサポートされているかを明記します。
4. 各レイヤーのレビュー
クロススタックレビューには references/review-checklist.md を使用します。
パスに Vue、axios、vxe-table、ブラウザ状態、またはデータ量の多いテーブルレンダリングが含まれる場合にのみ、references/vue2-axios-vxe-table.md をロードします。
パスに ASP.NET WebAPI、EF Core、LINQ、コントローラー、サービス、リポジトリ、エクスポート、またはバックグラウンドジョブが含まれる場合にのみ、references/dotnet-webapi-efcore.md をロードします。
デフォルトですべてのリファレンスをロードしないでください。
ストレージ/クエリスコープ、マテリアライゼーション、プロジェクション、インデックス、安定したページネーション、ペイロードサイズ、キャンセレーション、タイムアウト、バウンデッドな並行性、バックプレッシャー、冪等性、リトライ、状態のコピー、計算処理、DOMサイズ、ローディング状態、およびデグレーションを確認します。
5. 発見候補の検証
すべての候補について:
- 増大する入力または並行性の次元を特定します。
- フィルタリング、プロジェクション、ページング、バッファリング、またはレンダリングが発生する場所を確認します。
- 既存のハード制限と、それがテストされているかどうかを確認します。
- キャンセレーション、タイムアウト、リトライ、エラー伝播をトレースします。
- コードが利用可能な場合は、正確なファイルと行のエビデンスを記録します。
- コンテキストがパスがバウンデッドであることを証明している場合、その候補を却下します。
6. エビデンスと重大度の分類
エビデンスの状態:
- 確認済み (Confirmed):直接のコード、SQL、設定、テスト、ランタイム、または設計のエビデンス。
- 可能性が高い (Probable):上流または下流の1つのアーティファクトが欠落しているが、強いパスエビデンスがある。
- 未確認 (Unverified):必要な資料が利用できない。
重大度:
- P0:到達可能なパス上での、確認されたデータ破損、本番環境の利用不能、または無制御のリソース枯渇。
- P1:既知または診断スケールでの、タイムアウト、OOM、データベース過負荷、深刻なインタラクション障害、または不正確な結果の可能性が高い。
- P2:ボリュームまたは並行性の増加に伴う有意なデグレーション。ただし、現在のヘッドルームまたは代替パスが存在する。
- P3:実証された深刻な障害なしに、制限値、監視可能性、テスト、または保守性のエビデンスが欠落している。
診断上の仮定のみからP0またはP1を割り当てないでください。深刻だがサポートされていないリスクは、優先度の高い検証として置いてください。
7. レポートの作成
references/output-contract.md をロードし、それに正確に従ってください。
各発見事項には以下を含める必要があります:
- 重大度とエビデンスの状態。
- レイヤーと安定した根本原因コード。
- エビデンスの場所。
- トリガースケール。
- 影響。
- 最小限の是正措置。
- 検証方法。
エビデンスによってサポートされている場合にのみ、確認済みの安全なパスをリストします。
リポジトリと出力の制限
- 最大10万パスをメタデータとして列挙します。それを超える場合は、ディレクトリと拡張子で絞り込みます。
- コンテンツパスあたり最大2万ソースファイルまたは500 MiBのテキストをスキャンします。いずれか先に達した方で停止します。
- 最大500の一致候補を保持します。残りは集約し、切り捨てられた数を記録します。
- パスあたり最大200の候補ファイルを深く読み取ります。
- デフォルトのコマンドタイムアウトは60秒とします。タイムアウト後はスコープを絞り込みます。
- 根本原因あたり最大50の発見事項と5つの代表的なエビデンス場所に展開します。
- 依存関係、生成された出力、アーカイブ、バイナリ、ビルドディレクトリ、および大規模な縮小ファイルをスキップします。
- すべての除外と切り捨てを、元の数、保持した数、および理由とともに報告します。
エビデンスの欠如と障害
- フロントエンドのみ:フロントエンドをレビューし、バックエンド/API/データベースのコントラクトを「未確認 (Unverified)」として生成します。
- バックエンドのみ:バックエンドをレビューし、コンシューマーのレンダリングとインタラクションを「未確認 (Unverified)」としてマークします。
- 過大なリポジトリ:差分、ルート、クライアント、クエリ、エクスポート、レンダリングエントリポイントからスコープを絞り込みます。
- コマンドタイムアウト:タイムアウトを繰り返し増やす代わりに、バッチまたはパスのスコープを減らします。
- ドキュメントとコードの競合:コード、テスト、クエリプラン、ランタイムのエビデンスを優先します。ドキュメントのずれを報告します。
- 機密資料:シークレットやレコードを繰り返さないでください。編集された場所の説明を使用します。