mcpField
S
security-checklist

security-checklist

github.com/loxosceles-devセキュリティ137 回インストール
リポジトリ

security-checklist について

security-checklistは、AIコーディングアシスタントや開発作業向けのコードセキュリティガイドです。認証情報の保管、環境変数の検証、フロントエンドのトークン処理、コミット前の確認を扱います。

主な機能

  1. 01除外すべき環境ファイルとignore設定を提示
  2. 02コードへのシークレットの直書きを禁止
  3. 03AWS Secrets ManagerとSSMによる機密値の保管を案内
  4. 04フロントエンドのトークン利用と環境変数検証を規定
  5. 05コミット前のセキュリティ確認項目を提供

活用シーン

  1. 01認証情報を扱うコードを作成・変更
  2. 02コミット前にシークレットや環境ファイルを確認
  3. 03起動時に必須環境変数を検証
  4. 04フロントエンドでの機密トークン露出を点検

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/loxosceles-dev/dev-skills --skill security-checklist

インストール後、Claude Code で/security-checklistを入力して読み込まれたか確認します。

詳細

AI コーディングアシスタント向けセキュリティチェックリスト

これは厳格なガイドラインです。 これらのルールに厳密に従ってください。

コードの生成や変更時に従うべき、重要なセキュリティルールです。

これらのファイルはコミットしないでください

実際の値が含まれる環境ファイル:

.env
.env.local
.env.development
.env.production
.env.test
.env.*

テンプレート(実際の値なし)は必ずコミットしてください:

.env_TEMPLATE
.env.example

必須の gitignore パターン:

# Environment files
.env
.env.*
!.env_TEMPLATE
!.env.example

# AWS credentials
.aws/credentials
.aws/config

# SSH keys
*.pem
id_rsa
id_ed25519

シークレットをハードコードしないでください

❌ 絶対に次のようにしないでください:

const apiKey = 'sk-1234567890abcdef';
const dbPassword = 'mypassword123';
const awsAccessKey = 'AKIAIOSFODNN7EXAMPLE';

✅ 必ず次のようにしてください:

// Runtime: Load from environment
const apiKey = process.env.API_KEY;
if (!apiKey) throw new Error('API_KEY not set');

// Infrastructure: Reference from Secrets Manager/SSM
const secret = secretsmanager.Secret.fromSecretNameV2(
  this, 'ApiKey', 
  '/project/prod/api-key'
);

シークレットの保存

適切な AWS サービスを使用してください:

  • Secrets Manager:パスワード、API キー、データベース認証情報、トークン
  • SSM Parameter Store (SecureString):機密性の高い設定値
  • SSM Parameter Store (String):機密性のない設定

禁止事項:

  • コード内にシークレットをハードコードする
  • シークレットを git にコミットする
  • シークレットをコンソール/CloudWatch に記録する
  • URL やクエリパラメーターでシークレットを渡す

フロントエンドでのトークンの取り扱い

❌ 機密性の高いトークンを公開しないでください:

// Don't put backend API keys in frontend code
const token = 'secret-backend-token';

✅ 適切な認証方法を使用してください:

// Use public API keys or user-specific tokens
const publicKey = process.env.NEXT_PUBLIC_API_KEY; // Public, safe to expose
const userToken = cookies.get('auth-token'); // User-specific, from auth flow

環境変数の検証

必須のシークレットが存在することを必ず検証してください:

// At application startup
const required = ['DATABASE_URL', 'API_KEY', 'JWT_SECRET'];
const missing = required.filter(key => !process.env[key]);

if (missing.length > 0) {
  throw new Error(`Missing required secrets: ${missing.join(', ')}`);
}

コードレビューのチェックリスト

コミットする前に、次の点を確認してください:

  • パスワード、API キー、トークンがハードコードされていない
  • 実際の値を含む .env ファイルがない
  • Gitignore にすべてのシークレットファイルのパターンが含まれている
  • 起動時に環境変数が検証される
  • インフラストラクチャでは Secrets Manager/SSM からシークレットが読み込まれる
  • console.log やエラーメッセージにシークレットが含まれていない
  • フロントエンドでは公開 API キーまたはユーザー固有のトークンのみを使用している

判断に迷った場合

次の場合は作業を止めて確認してください:

  • 内容に「key」、「secret」、「password」、「token」を含むファイルをコミットしようとしている
  • 認証情報や機密性の高い値をハードコードしようとしている
  • 値を git に含めるべきか、環境変数にすべきか判断できない

安全性を優先してください:機密情報かどうか確信が持てない場合は、シークレットとして扱ってください。


関連項目:


継続的な改善

開発者が、このスキルで防止できるはずだった動作を修正した場合は、同じ修正を今後防ぐため、このスキルに加える具体的な変更を提案してください。

コメント