無料テンプレート

無料​コード監査​チェックリスト、証拠がなければ​指摘ではない

ローンチ、資金調達、引き継ぎの前にコードベースを監査するためのチェックリストです。まず作ったものが合意した内容と一致しているかを確認し、アクセス制御、シークレット、依存関係、入力処理、決済、信頼性へと進みます。指摘にはすべて重大度、場所、証拠を付けます。Markdownでコピーまたはダウンロードできます。

無料 · Markdown · 登録不要

使うタイミング

監査が答える問いは2つ。合意したものを作ったか、そして顧客に出して安全か。その答えが最も重要になる時点で実施します。

  • 一般公開やストア申請の前に

  • 外部の開発者、スタジオ、コーディングエージェントから成果物を受け取ったときに

  • デューデリジェンスの前、または他人のコードベースを引き継ぐときに

  • 認証、決済、データアクセスに大きな変更を加えたあとに

テンプレート

テンプレート全文

以下の内容はすべて、コピーやダウンロードに含まれます。[角括弧]の空欄を書き換え、ガイド文は書きながら削除してください。

コード監査:[プロジェクト名]

[角括弧]内をすべて書き換えてください。証拠を自分の目で確認したときだけチェックを入れます。不合格の項目は最後のログに番号付きの指摘として記録し、重大度が致命的・高の未解決指摘がなく、プロダクトが公開されている場合にのみ監査は合格です。

01対象範囲

何を監査するのかを正確に固定します。特定のコミットを決めずに「アプリ」を監査しても、再現できません。

  • リポジトリ: [URL]
  • コミットまたはタグ: [SHAまたはリリースタグ]
  • 合意したスコープ: [照合するPRDの版、またはベースライン番号]
  • 環境: [本番URL、ストアのビルド、またはステージング]
  • 監査者と日付: [氏名]、[日付]

02要件カバレッジ

作ったものは合意した内容と一致しているか。凍結したスコープに照らして、要件を一つずつ確認します。

  • Mustの要件すべてに受け入れ基準がある
  • Mustの要件すべてに、それを指す完了済みの作業がある
  • 受け入れ基準の確認が、稼働中のプロダクトですべて通る
  • 承認後に変更された要件が、旧文言と新文言とともに明示されている
  • 承認後に取り下げた要件は、削除ではなく判断として記録されている
  • コミットとプルリクエストが要件キーを参照している

03アクセス制御

小さなプロダクトの重大な指摘の多くはここにあります。画面を眺めるのではなく、IDを書き換えたりセッションを外したりして試します。

  • 非公開データを読み書きするルートはすべてセッションを確認している
  • 管理操作はログインの有無だけでなく、ロールや権限を確認している
  • URLやリクエストのIDを変えても、他のアカウントのデータに届かない
  • APIトークンは権限が絞られ、失効させると即座に反映される
  • パスワード再設定、招待、ログイン用リンクは期限付きで一度しか使えない

04シークレットと設定

現在の状態だけでなく履歴も確認します。後のコミットで消したキーも、公開済みであることに変わりはありません。

  • リポジトリにも履歴にも、キー、トークン、パスワードが含まれていない
  • 環境変数ファイルはバージョン管理から除外されている
  • 公開用の環境変数を通じて、サーバーのシークレットがブラウザに渡っていない
  • 本番と開発で異なる認証情報を使っている
  • 漏えい・共有された認証情報はローテーション済み

05依存関係

npm auditやOSVなどの脆弱性データベースを使い、アドバイザリIDを記録します。記憶に頼らないでください。

  • 既知のアドバイザリを確認し、見つかったもののIDを記録した
  • ロックファイルがコミットされ、ビルドで使われている
  • メンテナンスされていないパッケージを記録した
  • 新しい依存関係のインストールスクリプトを確認した

06入力処理

ユーザーが送れるものはすべて信頼できないものとして扱います。ヘッダー、ファイル名、Webhookの本文も含みます。

  • データベースクエリはパラメータ化され、文字列連結で組み立てていない
  • ユーザー入力に対してevalや動的なコード実行をしていない
  • ユーザーのコンテンツは表示前にエスケープしている
  • アップロードは種類とサイズを検証し、Webルートの外に保存している
  • ユーザーが指定したURLへのサーバー側リクエストは制限されている
  • 公開フォームにレート制限や不正対策がある

07お金の流れ

ここにあるものは何より優先します。二重請求や二重付与のバグは、公開されている間ずっとお金を失い続けます。

  • 決済・注文処理は冪等で、再試行しても二重に請求されない
  • Webhookの署名を検証してから内容を信頼している
  • 価格と金額はサーバー側で計算し、クライアントの値を使っていない
  • 返金、クレジット、クーポンは同時リクエストでも二重に使えない

08信頼性と運用

悪い日に何が起きるか、そして誰かがそれに気づけるか。

  • エラーは、誰かが実際に見ている監視ツールに送られている
  • バックアップがあり、実際に復元を試したことがある
  • マイグレーションは、それに依存するコードのリリース前に適用している
  • 定期ジョブは二重に実行されても問題ない

09公開されている

チーム外の誰も触れられないものの監査は、まだ終わっていません。

  • デプロイ済みで、社外の人がアクセスできる
  • 本番URLまたはストアの掲載ページを記録した
  • 登録と主要な流れが、ローカルだけでなく本番で動く

10指摘事項ログ

不合格のチェック1つにつき1行。お金やデータに関わるものから順に並べます。証拠のない指摘は意見にすぎません。外すか、証拠を取りに行きましょう。

重大度: 致命的、高、中、低、情報

ID重大度場所証拠再現手順修正案状態
F-001[致命的][path/file.ts:42][問題を示すもの][手順][行う変更]未対応
F-002[高][ルートまたはファイル][問題を示すもの][手順][行う変更]未対応

11判定

合格か、もう一度イテレーションか。部分合格はありません。

  • 結果: [合格 / 再イテレーション]
  • 未解決の指摘: [重大度別の件数]
  • フォローアップ: [修正を管理する場所]
  • 次回の監査: [日付またはきっかけ]

Atrix AI

Atrix AIならこうなる

Atrix AIがコードをスキャンすることはありません。答えるのは、このチェックリストの最初のセクション、つまり多くのチームが飛ばしがちな「作ったものは合意したものか」です。残りの監査はあなたが行い、その指摘は追跡できる作業になります。

  • 合意した内容を凍結

    要件を承認し、番号付きのベースラインとして凍結します。ベースラインは正確な文言と当時の文書を保存するので、後からの編集で承認済みの内容がこっそり書き換わることはありません。

  • カバレッジを確認

    ベースラインの各要件について、作業があるか、進行中か、完了しているかを表示し、凍結後に変更・取り下げ・削除された要件を明示します。どの状態も、モデルの意見ではなく記録から計算されます。

  • 指摘を作業として追跡

    このチェックリストの指摘は、優先度付きのIssueとしてプロジェクトボードに記録できます。作業のない要件もIssueに分解できます。コーディングエージェントは引き渡しバンドルで要件キーを受け取るので、コミットを後から追跡できます。

FAQ

よくある質問

コード監査では何を確認しますか?

2つです。1つ目は、作ったものが合意した要件と一致しているか。2つ目は、安全に運用できるか。アクセス制御、シークレット、既知の脆弱性がある依存関係、入力処理、決済の流れ、そして監視やバックアップといった運用の基本です。

コードレビューとの違いは?

コードレビューはマージ前の変更を見ます。監査は特定のコミット時点のシステム全体を、決まったスコープに照らして確認し、証拠付きの指摘と合否の判定を出します。

コード監査はいつ必要ですか?

ローンチやストア申請の前、外部の開発者やコーディングエージェントから成果物を受け取ったとき、デューデリジェンスの前、そして認証・決済・データアクセスに大きな変更を加えたあとです。

役に立つ指摘の条件は?

重大度、正確な場所、問題を示す証拠、再現手順、修正案がそろっていることです。証拠がなければ意見にすぎず、ログに載せるべきではありません。

チェックリストは無料ですか?

はい。登録なしでMarkdownとしてコピーやダウンロードができます。

会社のすべてを、ひとつの場所で。

まずは無料プランから。準備ができたら、チーム・カレンダー・コードをつなぎましょう。