🛡️threat-modeling-with-aws-security-agent
- ソース
- GitHub で見る ↗
説明
AWSセキュリティAgentを使用して、仕様書や設計書に対する脅威モデルレビューを実行します。 次のような場合に使用: ユーザーがセキュリティの観点から仕様書のレビューを依頼する、脅威モデルの実行を求める、設計がセキュリティリスクをもたらすかどうかを確認する、`requirements.md` や `design.md` のセキュリティポスチャの変化をレビューする、またはSTRIDE分析を行う。
原文を表示
Run an AWS Security Agent threat model review on spec/design documents. Use when the user asks to review a spec for security, run a threat model, check if a design introduces security risks, review requirements.md or design.md for security posture changes, or STRIDE analysis.
ユースケース
- ✓仕様書のセキュリティレビューを依頼するとき
- ✓脅威モデルの実行を求めるとき
- ✓設計がセキュリティリスクをもたらすか確認するとき
- ✓要件書や設計書のセキュリティポスチャの変化をレビューするとき
- ✓STRIDE分析を行うとき
本文(日本語訳)
AWS Security Agent — 脅威モデルレビュー
仕様ドキュメント(requirements.md、design.md)をソースコードと照合し、STRIDEメソドロジーを用いてセキュリティ体制の変化を特定します。
事前スキャンは不要です。
ローカル状態
.security-agent/config.json から agent_space_id と region を読み込みます。
ファイルが存在しない場合は、まず setup-security-agent ワークフローをインラインで実行してください。
必要な値の解決方法
| プレースホルダー | 解決方法 |
|---|---|
<id>(agent space) |
config.agent_space_id |
<region> |
config.region(デフォルト: us-east-1) |
<account> |
aws sts get-caller-identity --query Account --output text |
<role-arn> |
arn:aws:iam::<account>:role/SecurityAgentScanRole |
<bucket> |
security-agent-scans-<account>-<region> |
ワークフロー
-
事前チェック。 設定を読み込み、agent spaceを確認し、各値を解決します。
-
仕様ファイルの収集。 ユーザーが対象としている
requirements.mdおよび/またはdesign.mdを特定します。絶対パスを使用してください。レビュー対象のファイルが不明な場合はユーザーに確認します。 -
ワークスペースをZip圧縮(コードスキャンと同じ除外設定):
cd <absolute-workspace-path> zip -r /tmp/source.zip . \ -x ".git/*" -x ".security-agent/*" -x "node_modules/*" \ -x "__pycache__/*" -x ".venv/*" -x "venv/*" \ -x "dist/*" -x "build/*" -x "target/*" \ -x ".mypy_cache/*" -x ".pytest_cache/*" -x ".tox/*" \ -x ".next/*" -x "cdk.out/*" -x ".DS_Store" -x "*.pyc" -
ソースZipをアップロード:
SCAN_ID="tm-$(date +%s)-$(openssl rand -hex 3)" WORKSPACE_ID=$(printf '%s' "$(pwd)" | md5sum | cut -c1-12) aws s3 cp /tmp/source.zip s3://<bucket>/security-scans/source/${WORKSPACE_ID}/source.zip -
仕様ファイルをアップロード:
aws s3 cp /path/to/requirements.md s3://<bucket>/security-scans/threat-models/${SCAN_ID}/specs/requirements.md aws s3 cp /path/to/design.md s3://<bucket>/security-scans/threat-models/${SCAN_ID}/specs/design.md -
脅威モデルを作成:
aws securityagent create-threat-model --agent-space-id <id> --title <title> \ --service-role <role-arn> \ --assets sourceCode=[{s3Location=s3://<bucket>/security-scans/source/${WORKSPACE_ID}/source.zip}] \ --scope-docs '[{"s3Location":"s3://<bucket>/security-scans/threat-models/'${SCAN_ID}'/specs/requirements.md"},{"s3Location":"s3://<bucket>/security-scans/threat-models/'${SCAN_ID}'/specs/design.md"}]'threatModelIdを取得・保存します。 -
脅威モデルジョブを開始:
aws securityagent start-threat-model-job --agent-space-id <id> --threat-model-id <tm-id>threatJobIdを取得・保存します。 -
scan_type: "THREAT_MODEL"としてscans.jsonに保存します。 -
ユーザーへ通知: 「脅威モデルレビューを開始しました。完了までの時間はワークスペースのサイズによって異なります。2分ごとに状態を確認します — ポーリングを停止する場合は「stop polling」と入力してください。」
-
2分ごとにポーリング:
aws securityagent batch-get-threat-model-jobs --agent-space-id <id> --threat-model-job-ids <tj-id>ステータスが変化した場合のみ応答します。
-
COMPLETED 時 → 脅威一覧を取得:
aws securityagent list-threats --agent-space-id <id> --threat-job-id <tj-id>nextTokenが存在する場合は--next-tokenを付与してページネーションを行います。
検出結果の表示形式
各脅威には以下が含まれます: statement(脅威の説明)、severity(深刻度)、stride カテゴリ、threatImpact(影響)、recommendation(推奨対応)、impactedAssets(影響を受けるアセット)。
🟣 CRITICAL: {statement}
STRIDE: {stride}
Impact: {threatImpact}
Assets: {impactedAssets}
Recommendation: {recommendation}
🔴 HIGH: {statement}
...
完全なレポートを .security-agent/findings-{scan_id}.md に書き出します。
以前の設計からの後退(リグレッション)に相当する脅威は特に明示してください。
ルール
- 脅威モデルレビューはスタンドアロンで実行可能 — 事前スキャンは不要
- ポーリングは2分ごと、それより短い間隔は不可
- 仕様ファイルは最低1つ必要
- ワークスペースおよび仕様ファイルには絶対パスを使用すること
- タイトル形式:
threat-model-<機能名>(スペース不可)
原文(English)を表示
AWS Security Agent — Threat Model Review
Analyze spec documents (requirements.md, design.md) against the source code to identify security-posture changes using STRIDE methodology. No prior scan needed.
Local state
Read .security-agent/config.json for agent_space_id and region. If missing, run the setup-security-agent workflow inline first.
Resolving the values you need
| Placeholder | How to resolve |
|---|---|
<id> (agent space) |
config.agent_space_id |
<region> |
config.region (default us-east-1) |
<account> |
aws sts get-caller-identity --query Account --output text |
<role-arn> |
arn:aws:iam::<account>:role/SecurityAgentScanRole |
<bucket> |
security-agent-scans-<account>-<region> |
Workflow
-
Pre-checks. Read config, verify agent space, resolve values.
-
Collect spec files. Identify the
requirements.mdand/ordesign.mdthe user is working on. Use absolute paths. Ask if unclear which files to review. -
Zip the workspace (same exclusions as code scan):
cd <absolute-workspace-path> zip -r /tmp/source.zip . \ -x ".git/*" -x ".security-agent/*" -x "node_modules/*" \ -x "__pycache__/*" -x ".venv/*" -x "venv/*" \ -x "dist/*" -x "build/*" -x "target/*" \ -x ".mypy_cache/*" -x ".pytest_cache/*" -x ".tox/*" \ -x ".next/*" -x "cdk.out/*" -x ".DS_Store" -x "*.pyc" -
Upload source zip:
SCAN_ID="tm-$(date +%s)-$(openssl rand -hex 3)" WORKSPACE_ID=$(printf '%s' "$(pwd)" | md5sum | cut -c1-12) aws s3 cp /tmp/source.zip s3://<bucket>/security-scans/source/${WORKSPACE_ID}/source.zip -
Upload spec files:
aws s3 cp /path/to/requirements.md s3://<bucket>/security-scans/threat-models/${SCAN_ID}/specs/requirements.md aws s3 cp /path/to/design.md s3://<bucket>/security-scans/threat-models/${SCAN_ID}/specs/design.md -
Create threat model:
aws securityagent create-threat-model --agent-space-id <id> --title <title> \ --service-role <role-arn> \ --assets sourceCode=[{s3Location=s3://<bucket>/security-scans/source/${WORKSPACE_ID}/source.zip}] \ --scope-docs '[{"s3Location":"s3://<bucket>/security-scans/threat-models/'${SCAN_ID}'/specs/requirements.md"},{"s3Location":"s3://<bucket>/security-scans/threat-models/'${SCAN_ID}'/specs/design.md"}]'Capture
threatModelId. -
Start threat model job:
aws securityagent start-threat-model-job --agent-space-id <id> --threat-model-id <tm-id>Capture
threatJobId. -
Persist to
scans.jsonwithscan_type: "THREAT_MODEL". -
Tell user: "Threat model review started. Runtime varies with workspace size. I'll check every 2 minutes — say 'stop polling' to opt out."
-
Poll every 2 minutes:
aws securityagent batch-get-threat-model-jobs --agent-space-id <id> --threat-model-job-ids <tj-id>Only respond when status changes.
-
On COMPLETED → fetch threats:
aws securityagent list-threats --agent-space-id <id> --threat-job-id <tj-id>If
nextToken, paginate with--next-token.
Findings presentation
Each threat includes: statement, severity, stride category, threatImpact, recommendation, impactedAssets.
🟣 CRITICAL: {statement}
STRIDE: {stride}
Impact: {threatImpact}
Assets: {impactedAssets}
Recommendation: {recommendation}
🔴 HIGH: {statement}
...
Write full report to .security-agent/findings-{scan_id}.md. Call out any threat that represents a regression from the prior design.
Rules
- Threat model reviews are standalone — no prior scan needed
- Poll every 2 minutes, not faster
- At least one spec file is required
- Use absolute paths for workspace and spec files
- Title:
threat-model-<feature-name>(no spaces)
原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。