Communityライティング&編集github.com

getedgehq/security-audit-checklist

アプリケーションコード、クラウドインフラ、コンテナ、CI/CDパイプライン、Infrastructure as Codeにわたる包括的なセキュリティ監査を実行します。プライバシーコンプライアンス、OWASPの基本、シークレット漏洩、APIセキュリティ、IAM設定ミス、ストレージ露出、Kubernetesの強化、ネットワークセキュリティをカバーします。ユーザーがアプリやクラウドのセキュリティ監査、レビュー、強化を依頼したり、シークレットの確認、XSS/SQLiのスキャン、セキュリティヘッダーの検証、Terraform/CloudFormationのレビュー、AWS/GCP/Azureの設定監査、またはセキュリティに焦点を当てたレビューを依頼した場合に使用します。

security-audit-checklist とは?

このスキルは、アプリケーションコード、クラウドインフラストラクチャ、コンテナ、CI/CDパイプライン、Infrastructure as Code(IaC)にわたる包括的なセキュリティ監査チェックリストを提供します。主な目的は、プライバシーコンプライアンス、OWASP Top 10の基本、シークレットとキーの衛生状態、APIセキュリティ、IAMの設定ミス、ストレージの露出、Kubernetesの強化、ネットワークセキュリティなど、幅広いセキュリティ領域をカバーすることです。このスキルは、プロダクションリリース前や大規模な変更後など、あらゆるシステムに対して実行できるように設計されています。 このスキルは、手動チェックリストと自動スキャンスクリプトを組み合わせたハイブリッドなアプローチを採用しています。Pythonスクリプトは、シークレットスキャン、セキュリティヘッダーチェック、IaCスキャン(Terraform/CloudFormation)の3つがバンドルされており、Python3が実行環境に必要です。Pythonがなくても、チェックリストを手動で進めることは可能です。 サポートされるプラットフォームは、AWS、GCP、Azureを含む主要なクラウドプロバイダー、DockerやKubernetesなどのコンテナ環境、GitHub ActionsやGitLab CIなどのCI/CDプラットフォーム、TerraformやCloudFormationなどのIaCツールです。チェックリストは12の主要セクションで構成され、各セクションには具体的な確認項目と推奨されるアクションが含まれています。 このスキルを使用すると、ユーザーは「アプリケーションのセキュリティを監査して」「クラウド設定を確認して」「シークレットが漏洩していないかスキャンして」などのリクエストに対して、構造化された包括的なセキュリティレビューを実行できます。出力は、カテゴリごとの合格/不合格/要レビューのサマリー、重大な問題、推奨修正、リスクマトリックス、および改善タイムラインを含む詳細な監査レポートとなります。

対応~Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/getedgehq/skills/tree/main/security-audit-checklist

Installed? Explore more ライティング&編集 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

セキュリティ監査チェックリスト

これらのチェックは、システムをプロダクションにリリースする前、または大きな変更を行った後に実行してください。

始める前に

チェックリスト自体は散文であり、特別なものは必要ありません。scripts/ 下の3つのスキャナーはPythonなので、実行するにはマシンに Python 3 が必要です (python3 --version)。Pythonがなくても、チェックリストを手動で進めることは可能です。自動のシークレットスキャン、ヘッダーチェック、IaC読み取りは利用できません。

1. プライバシーとデータガバナンス

  • プライバシーポリシーが存在する アプリがユーザーデータを収集、保存、または処理する場合。フッターとサインアップフローにリンクしてください。
  • ユーザーデータの保存場所を把握する: プライマリデータベース、キャッシュ、ログ、バックアップ、サードパーティサービスを文書化します。データ保存要件(GDPR、CCPA)を確認します。
  • データ最小化: 必要なものだけを収集します。使用しないデータは削除または匿名化します。

2. シークレットとキーの衛生状態

  • .envの値が漏洩していない: リポジトリ全体をハードコードされたシークレットがないかスキャンします。
  • フロントエンドコードでAPIキーを公開しない: JSバンドルにキーを含めず、パブリックな環境変数プレフィックス (REACT_APP_、NEXT_PUBLIC_、VITE_) に機密値を入れないでください。
  • キーをサーバーサイドまたはプロキシの背後に移動する: シークレットを必要とするすべてのサードパーティAPI呼び出しは、バックエンドエンドポイントを経由する必要があります。
  • ログからシークレットを削除する: ログとエラーレポーターからキー、トークン、パスワードをgrepします。出力前にマスキングまたは編集します。
  • 漏洩した認証情報は直ちにローテーションする 何か見つかった場合。

クイックスキャンコマンド:

# バンドルされたシークレットスキャナーを実行
python3 scripts/scan_secrets.py .

# 手動ripgrepパターン
grep -rE '(api[_-]?key|secret|token|password)\s*[:=]\s*["\047][a-zA-Z0-9_\-]{16,}' --include='*.{js,ts,py,go,rb,php,java,json,yaml,yml,env,sh,tf,hcl}' .
grep -rE 'AKIA[0-9A-Z]{16}' .  # AWSキー
grep -rE 'ghp_[a-zA-Z0-9]{36}' .  # GitHubトークン
grep -rE 'sk-[a-zA-Z0-9]{48}' .   # OpenAIキー

3. セキュリティヘッダー

  • Content-Security-Policy がスクリプトソースを制限し、可能な場合はインライン実行をブロックしている。
  • X-Frame-Options または frame-ancestors がクリックジャッキングを防いでいる。
  • Strict-Transport-Security がHTTPSを強制している。
  • X-Content-Type-Options: nosniff が存在する。
  • Referrer-Policy がリファラー漏洩を制限している。

ライブURLのヘッダーを確認:

python3 scripts/check_headers.py https://your-app.com

4. OWASP Top 10の基本

#リスク確認事項
A01破損したアクセス制御すべてのエンドポイントが認証と認可をチェックしている。IDORバグがないこと。
A02暗号化の失敗パスワードはbcrypt/Argon2でハッシュ化されている。TLS 1.2+が強制されている。URLに機密データがないこと。
A03インジェクションSQLはパラメータ化されたステートメントを使用している。クエリへの生の文字列連結がないこと。
A04安全でない設計認証と機密アクションにレート制限がある。ビジネスロジックに悪用防止策があること。
A05セキュリティ設定ミスデフォルトの認証情報が削除されている。本番環境でデバッグモードがオフになっている。エラーメッセージがスタックトレースを漏洩しないこと。
A06脆弱なコンポーネント依存関係監査: npm audit、pip-audit、cargo audit、snyk test。
A07認証の失敗セッショントークンはランダムで、権限変更時にローテーションされる。機密アカウントにはMFA。
A08データ整合性ロックファイルが存在し、可能な場合はコミットに署名されている。
A09ロギングの失敗セキュリティイベントはシークレットなしで記録される。
A10SSRFサーバーサイドリクエストは許可リストを使用する。内部サービスに到達するユーザー制御のURLがないこと。

5. 入力検証とインジェクション

  • SQLインジェクション: すべてのクエリがORMパラメータまたはプリペアドステートメントを使用している。
  • XSS: ユーザー出力はHTMLエスケープされている。dangerouslySetInnerHTML および同様のバイパスは監査されている。
  • コマンドインジェクション: ユーザー入力による exec()、system()、または eval() がないこと。
  • パストラバーサル: ファイルパスはサニタイズされ、許可リストディレクトリに制限されている。
  • NoSQLインジェクション: MongoDBクエリはパラメータ化されたオブジェクトを使用している。

6. APIセキュリティ

  • APIレスポンスに機密データがないか確認: 内部ID、パスワードハッシュ、トークン、不要なPIIがないこと。
  • すべての非公開エンドポイントで認証: オープンな管理画面やデバッグルートがないこと。
  • 誰かがAPIの課金を燃やす前にレート制限: 高コストまたは認証エンドポイントにIP単位およびユーザー単位のレート制限。429 と Retry-After を返す。
  • CORSは厳格に: Access-Control-Allow-Origin が * ではないこと。状態変更メソッドにはプリフライトが必要。

7. 認証とセッション

  • パスワードポリシー: 最低8文字、パスフレーズを妨げる最大長なし。
  • ブルートフォース対策: ログイン失敗後の指数バックオフまたはCAPTCHA。
  • セッション管理: secure、httpOnly、SameSiteクッキー。JWTは短い有効期限とリフレッシュローテーション。
  • パスワードリセット: トークンは1回限り使用、ランダム、迅速に期限切れ。

8. クラウドプロバイダーのセキュリティ

AWS、GCP、Azure、その他のクラウドプラットフォームに適用されます。

8.1 アイデンティティとアクセス管理 (IAM)

  • ルートアカウントのアクセスキーが存在しない。ルートMFAが有効になっている。
  • 最小権限の原則: すべてのロール、ユーザー、サービスアカウントが必要最小限の権限を持っている。絶対に必要な場合を除き、ワイルドカード (*) アクションまたはリソースがないこと。
  • ユーザーに長期有効なアクセスキーがない。一時的な認証情報(STS、インスタンスプロファイル、ワークロードID)を持つIAMロールを優先する。
  • すべての人間のユーザー、特に管理者と請求アクセスにMFAが強制されている。
  • 非アクティブなIDを削除: 90日以上使用されていないユーザー、ロール、サービスアカウントを無効化または削除する。
  • クロスアカウントアクセス は、該当する場合は外部IDを使用した明示的なロール引き受けを使用する。Principal: * を持つ信頼ポリシーがないこと。

8.2 ストレージ (S3 / GCS / Azure Blob)

  • パブリックなバケット/コンテナがない 意図的にパブリックな静的アセットをホストしている場合を除く。アカウントレベルでパブリックアクセスをブロックする。
  • 保存時の暗号化 が有効 (AES-256またはKMS)。暗号化されていないストレージボリュームやスナップショットがないこと。
  • 転送中の暗号化 が強制 (HTTPS/TLSのみ)。http は許可されていない。
  • ライフサイクルポリシー が古いデータを削除または移行する。重要なバケットではバージョニングが有効。
  • バケットポリシー は Principal: * または AllUsers を許可していない。アクセスはIAMロールを介して行われ、ハードコードされたキーではない。
  • ログ記録が有効 アクセスログとオブジェクトレベルのイベント (S3 Server Access Logs、CloudTrail data events)。

8.3 コンピュート (EC2 / GCE / Azure VM / Lambda / Cloud Run)

  • デフォルトのセキュリティグループ が機密ポート (22、3389、3306、5432、6379、27017) で 0.0.0.0/0 を許可していない。
  • SSM / Session Manager が可能な場合は直接SSHの代わりに使用されている。ポート22がインターネットに公開されていない。
  • AWS EC2ではIMDSv2が必要 (IMDSv1を無効にする)。
  • インスタンスメタデータ がコンテナや信頼できないコードに公開されていない。
  • 関数のランタイム は最小限の権限を使用する。Lambda/GCP Cloud Functionsは管理者ロールで実行されていない。
  • 関数の環境変数 に平文のシークレットが含まれていない。シークレットマネージャー (AWS Secrets Manager、GCP Secret Manager、Azure Key Vault) を使用する。

8.4 データベースとキャッシュ

  • パブリックアクセスなし: データベースはプライベートサブネットまたはVPC内にある。セキュリティグループに 0.0.0.0/0 がないこと。
  • 保存時および転送中の暗号化 が有効。
  • ポイントインタイムリカバリによる自動バックアップ。
  • 強力な認証: デフォルトのパスワードがないこと。サポートされている場合はIAMデータベース認証またはTLSクライアント証明書を使用する。
  • 接続とスキーマ変更の監査ログ が有効。

8.5 ネットワーキング

  • VPC / ネットワークセグメンテーション: 本番、ステージング、開発は別々のネットワーク、または少なくとも別々のサブネットにある。
  • セキュリティグループ / ファイアウォール はデフォルトで拒否。必要なポートのみが開いている。
  • 過度に寛容なCIDRなし: 0.0.0.0/0 は、パブリック向けロードバランサーのHTTPS (443) を除いて避ける。
  • データベース、キャッシュ、内部サービス用のプライベートサブネット。アウトバウンドインターネット用のNAT GatewayまたはVPCエンドポイント。
  • DDoS対策 が該当する場合に有効 (AWS Shield、Cloud Armor、Azure DDoS Protection)。
  • DNS / ドメイン: レジストラがサポートしていればDNSSEC有効。期限切れのIPや削除されたリソースを指す宙ぶらりんのDNSレコードがないこと (サブドメイン乗っ取りリスク)。

8.6 ロギング、モニタリング、アラート

  • CloudTrail / Audit Logs / Activity Logs がすべてのリージョンとサービスで有効。
  • ログの整合性: ログは不変であるか、書き込み1回権限を持つ別のアカウントに保存されている。
  • 機密データはログに記録されない: クラウドログにパスワード、トークン、PIIが含まれていない。
  • アラートが設定されている ルートログイン、IAMポリシー変更、パブリックバケット作成、セキュリティグループ変更、認証失敗の急増に対して。
  • ログの保存期間 はコンプライアンス要件を満たす (通常1年)。

9. コンテナとオーケストレーションのセキュリティ

9.1 Docker / コンテナイメージ

  • イメージにシークレットがない: Dockerfileとレイヤーを .env、config.json、またはハードコードされた認証情報がないかスキャンする。
  • 最小限のベースイメージ: 可能な場合は、フルUbuntu/Debianの代わりにdistroless、Alpine、scratchを使用する。
  • rootで実行しない: Dockerfileで USER を非rootのUID/GIDに設定する。
  • イメージスキャン: レジストリ (ECR、GCR、ACR、Docker Hub) で脆弱性スキャンを有効にし、CIで重大なCVEをブロックする。
  • イミュータブルなタグ: 本番環境で latest を使用しない。ダイジェストまたは特定のセマンティックバージョニングに固定する。
  • マルチステージビルド: ビルドアーティファクトと開発依存関係が最終イメージに含まれないようにする。

9.2 Kubernetes

  • RBAC: 最小権限のロールとロールバインディング。サービスアカウントにcluster-adminがないこと。
  • デフォルトのサービスアカウントトークン は、それらを必要としないポッドにマウントされない (automountServiceAccountToken: false)。
  • ネットワークポリシー: デフォルトでイングレス/エグレスを拒否し、必要なトラフィックのみを明示的に許可する。
  • ポッドセキュリティ標準: restricted または baseline プロファイルを強制する。特権コンテナ、hostPath、hostNetworkがないこと。
  • シークレットの暗号化: etcdの保存時暗号化が有効。Gitに平文のシークレットがないこと。
  • コンテナランタイムセキュリティ: seccomp、AppArmor、またはSELinuxプロファイルが適用されている。
  • アドミッションコントローラー: OPA/GatekeeperまたはKyvernoを使用してポリシーを強制する (latestタグなし、必須ラベル、リソース制限)。
  • リソース制限: すべてのポッドにCPUとメモリの制限があり、リソース枯渇によるDoSを防ぐ。

10. Infrastructure as Code (IaC)

  • Terraform / CloudFormation / Pulumi / CDK にシークレットがない: 状態ファイルに平文のパスワードやキーが含まれていない。リモート状態は暗号化され、アクセス制御されている。
  • Terraformの状態バックエンド は安全: SSE-KMSを使用したS3、DynamoDBロック、パブリック読み取りアクセスなし。
  • IaCスキャン: マージ前にTerraform/CloudFormationで checkov、tfsec、または terrascan を実行する。
  • ドリフト検出: スケジュールされたスキャンで、IaCから逸脱した手動コンソール変更を検出する。
  • モジュールはバージョン固定: ブランチやバージョン管理されていないソースからモジュールをプルしない。

クイックIaCスキャン:

python3 scripts/scan_iac.py .

# またはインストールされている専用ツールを使用:
checkov -d . --framework terraform,cloudformation,dockerfile
# tfsec .

11. CI/CD パイプラインのセキュリティ

  • パイプライン設定にシークレットがない: .github/workflows、.gitlab-ci.yml、Azure Pipelines、Jenkinsfile にハードコードされたトークンがないこと。
  • シークレットは注入される CIプラットフォームのネイティブシークレットマネージャー (GitHub Secrets、GitLab CI Variables、Azure DevOps Library) から。
  • パイプラインの権限は最小限: CIサービスアカウントはデプロイに必要な権限のみを持つ。
  • ブランチ保護: main/masterへの直接プッシュはブロックされる。すべての変更にはPR/MRとレビューが必要。
  • 署名付きコミットまたはマージ要件: 機密リポジトリには署名付きコミット、または少なくとも検証済みマージコミットを要求する。
  • 依存関係スキャン: SCAツール (Snyk、Dependabot、Renovate) がすべてのPRで実行される。
  • SAST: 静的解析 (Semgrep、CodeQL、SonarQube) がすべてのPRで実行される。
  • コンテナスキャン: デプロイ前にイメージのCVEがスキャンされる。
  • セルフホストランナー がVPNまたはIP許可リストなしでパブリックインターネットに公開されていない。
  • パイプラインはフォークからの信頼できないコード を手動承認なしで実行しない (pwnリクエストを防ぐ)。

12. ドメインとDNSのセキュリティ

  • DNSSEC がレジストラでサポートされていれば有効。
  • 期限切れのサービスを指す宙ぶらりんのCNAME / A / NSレコードがない (サブドメイン乗っ取りリスク)。
  • ワイルドカード証明書 または信頼できるCAからのサブジェクトごとの証明書。本番環境で自己署名証明書なし。
  • 証明書の有効期限監視: 期限切れの30日前と7日前にアラート。
  • CDN / WAF が適切なルール (SQLi、XSS、LFIブロック) で設定されている。エッジでレート制限が有効。

監査出力

チェックリストを実行した後、以下の内容を含む簡潔なMarkdownレポートを作成します:

  1. サマリー — カテゴリごとに合格/不合格/要レビュー。
  2. 重大な問題 — 本番環境の前に修正が必要なもの。
  3. 推奨修正 — 具体的なコード変更、設定更新、またはライブラリアップグレード。
  4. リスクマトリックス — 各問題に対する可能性 × 影響。
  5. 改善タイムライン — 優先順位と期限を提案。

Individual skills in this repo

This repo contains 18 individual skills — each has its own dedicated page.

getedgehq/agent-evals

Build evals for an AI agent that already does real work. Use when someone asks "how do I know my agent is right", wants to test an agent before trusting it, compare models on cost versus quality, or turn production failures into tests. Walks from first tasks and yes/no verifiers, to isolated environments, to a trace-driven improvement loop.

getedgehq/cli-ux-review

Audit a command-line tool for user-friendliness — clear situation / next-step / options in every output, colour-highlighted runnable commands, no raw jargon, no silent hangs. Invoke for "CLI UX audit", "review my CLI", "is this CLI intuitive", or before any CLI release.

getedgehq/generate-image

Generate images with OpenAI GPT Image 2 via the Codex CLI, billed through the user's ChatGPT Plus subscription (no OpenAI API key, no per-image API cost). Use when the user asks to create, generate, or make an image, picture, illustration, icon, hero graphic, or concept art from a text prompt.

getedgehq/harness-first

Diagnose and fix an unreliable, expensive, or unsafe LLM agent by auditing its harness (golden set, judge, cost caps, data layer, action approvals, tracing) before blaming or swapping the model. Use when someone says an agent is "burning tokens", "hallucinating", "brittle", gives inconsistent answers, asks whether to switch to a cheaper/better model, or wants to ship an agent or prompt change to customers.

getedgehq/http-error-triage

Run before concluding anything from an HTTP error on a third-party API. Separates a real credential/entitlement problem from a CDN or WAF block, a wrong endpoint, or a client-signature ban. Use whenever an API returns 401/403/402/429 and you are about to say "the key is dead", "credits are exhausted", "the plan lacks access", or "we are rate limited".

getedgehq/linkedin-media-prep

Convert, crop, resize, and compress images and videos for optimal LinkedIn upload quality and file size. Use when the user wants to prepare a photo, image, or video for LinkedIn (profile picture, cover photo, post image, article featured image, post video, or video ad), optimize file size for LinkedIn, crop and resize for LinkedIn dimensions, convert HEIC/RAW/PNG/MOV to LinkedIn-ready JPEG or MP4, or mentions LinkedIn media requirements, specs, or limits.

getedgehq/monid

>-

getedgehq/opendraft

An 18-agent pipeline that turns one topic line into a drafted

getedgehq/people-search

Find and rank professional people for recruiting, partnerships, sales, or research from user-provided data, public web sources, an authenticated search session, or a connected provider. Use for people discovery, LinkedIn or Sales Navigator search design, profile-list ranking, or provider filter translation.

getedgehq/rocketlist

Turn a CV into a shortlist of live startup roles from Rocketlist's public job board, including adjacent job titles the person would never have searched for, each with its published salary, the evidence for the fit, and a direct apply link. Use for "find roles I would be a strong fit for", career pivots, remote or VC-backed job hunts, and salary-visible role discovery.

getedgehq/shadcn-first

>-

getedgehq/skills

Develop or review a branded long-form YouTube channel using Simon Kaiser's public creator-led approach: audience fit, recurring formats, natural brand integration, Time with Brand, and an organic, paid, and Shorts strategy. Use for channel strategy, format briefs, and pilots.

getedgehq/skills

Build a YouTube strategy, evidence-backed idea slate, and title plus thumbnail package using Paddy Galloway's public method. Use when planning a channel, choosing concepts, or preparing a video before filming.

getedgehq/skills

Build or review a buyer-centered strategic narrative using Andy Raskin's public method. Use for sales or investor deck stories, homepage positioning, keynotes, launch narratives, and why-now messaging.

getedgehq/skills

Turn a product URL, launch brief, or approved script into a production-ready launch video. Use for product reveals, feature announcements, SaaS launches, and narrated product films; not for generic explainers or editing existing footage.

getedgehq/strip-image-ai-metadata

Strip C2PA and AI-generation metadata from images (PNG, JPEG, WebP) to remove "Generated by AI" / "ChatGPT" / "DALL-E" labels that platforms like LinkedIn, Instagram, and X display. Use when the user wants to clean AI-generated images before posting, remove AI attribution from photos, strip C2PA manifests, sanitize image metadata for professional use, or verify whether an image contains C2PA data.

getedgehq/top-down-comms

>-

getedgehq/workplan

Create, update, or close work plans for multi-step tasks. Use when starting refactors, bug lists, feature work, migrations, or any task with 2+ steps. Also use after auto-compaction to re-orient. Triggers: "workplan", "work plan", "create a plan", "what's the plan", "where was I", or when Claude detects

関連スキル