You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add reversible migrations for resources, relationships, attack_paths, path steps, and evidence references. Every record is bound to tenant, subscription, snapshot/evidence version, and normalization version.
Collect only:
internet_exposes
identity_attached_to
can_read
can_write
can_manage
Every relationship stores source/target IDs, type, evidence source, collector version, observation time, expiry, confidence category, Azure evidence reference, and collection outcome.
Truth and completeness rules
An edge exists only from current authoritative Azure evidence.
Missing permissions, partial pagination, throttling exhaustion, malformed responses, or collector failure produce UNKNOWN; they never create or prove an edge.
Expired evidence cannot produce an actionable path. If retained for history, return it as stale/non-actionable.
Resource IDs must be canonical and match the authorised tenant/subscription boundary.
Cross-subscription traversal is denied unless every subscription is explicitly authorised and the reviewed template allows it; the MVP template does not.
Path engine
Use reviewed templates and bounded deterministic Python traversal over PostgreSQL-loaded data. Enforce maximum depth, maximum nodes visited, and query timeout. No graph database or LLM is required.
Objective
Build one evidence-backed Azure attack-path family using authoritative relationships. This is PR 2 of 5 and depends on #311.
Reviewed path
Internet exposure -> Azure workload -> managed identity -> RBAC permission -> critical Key Vault targetScope
Canonical evidence model
Add reversible migrations for
resources,relationships,attack_paths, path steps, and evidence references. Every record is bound to tenant, subscription, snapshot/evidence version, and normalization version.Collect only:
internet_exposesidentity_attached_tocan_readcan_writecan_manageEvery relationship stores source/target IDs, type, evidence source, collector version, observation time, expiry, confidence category, Azure evidence reference, and collection outcome.
Truth and completeness rules
UNKNOWN; they never create or prove an edge.Path engine
Use reviewed templates and bounded deterministic Python traversal over PostgreSQL-loaded data. Enforce maximum depth, maximum nodes visited, and query timeout. No graph database or LLM is required.
Return entry point, target, ordered steps, evidence references, supporting findings, choke points, path-breaking controls, transparent risk components, algorithm version, evidence freshness, and actionable status.
APIs
GET /api/v1/attack-pathsGET /api/v1/attack-paths/{attack_path_id}GET /api/v1/attack-paths/{attack_path_id}/remediation-optionsAll endpoints enforce server-controlled tenant/subscription authorization and bounded pagination.
Measurable acceptance criteria
Delivery evidence attached to PR
Deferred
General graph exploration, additional path families, LLM-generated edges, graph infrastructure, and full blast-radius analytics.
Dependencies and handoff
Requires #311. #313 begins only after paths are reproducible, tenant-isolated, evidence-linked, and deployed read-only.
Mandatory safety and automation checklist
Relationship truth
UNKNOWN.UNKNOWNand expired evidence cannot create an actionable attack path.Traversal safety
Authorization and disclosure
Tests and proof
Exit gate