|
| 1 | +# Recorded Demo Script |
| 2 | + |
| 3 | +Target length: 7-10 minutes. |
| 4 | + |
| 5 | +## 0:00-0:45 — Problem |
| 6 | + |
| 7 | +IAM trust is messy. A reviewer does not only need a scary graph edge or an exploit module; they need to know what is supported by evidence, what is blocked, what is uncertain, and what should be reviewed first. |
| 8 | + |
| 9 | +Say: |
| 10 | + |
| 11 | +> “IAMScope is built for evidence-grade IAM review. It does not try to prove the account is safe, and it does not claim exploitability.” |
| 12 | +
|
| 13 | +## 0:45-1:45 — Positioning: Pacu vs PMapper vs IAMScope |
| 14 | + |
| 15 | +Show [`iamscope-vs-pacu-pmapper.md`](iamscope-vs-pacu-pmapper.md). |
| 16 | + |
| 17 | +Talk track: |
| 18 | + |
| 19 | +- Pacu is useful as an offensive AWS exploitation and attack-module framework. |
| 20 | +- PMapper is useful for IAM graph/query work, local authorization simulation, and privilege-escalation path mapping. |
| 21 | +- IAMScope is narrower: it turns collection or replay into findings with verdicts, required checks, blockers, `collection_context`, capability honesty, human labels, and owner-confirmation trail. |
| 22 | + |
| 23 | +Do not disparage Pacu or PMapper. They solve different jobs. |
| 24 | + |
| 25 | +## 1:45-3:00 — Capability-Honesty Matrix |
| 26 | + |
| 27 | +Open [`../reference/capability-honesty-matrix.md`](../reference/capability-honesty-matrix.md). |
| 28 | + |
| 29 | +Call out: |
| 30 | + |
| 31 | +- modeled areas; |
| 32 | +- unsupported or static-only areas; |
| 33 | +- places where IAMScope refuses to turn missing evidence into a stronger claim; |
| 34 | +- why no composite score and no pass/fail benchmark label are used. |
| 35 | + |
| 36 | +Say: |
| 37 | + |
| 38 | +> “The matrix is part of the product. It tells reviewers what not to believe.” |
| 39 | +
|
| 40 | +## 3:00-4:30 — Real-Pilot Case Study And Final Calibrated Replay |
| 41 | + |
| 42 | +Open [`../case-studies/real-pilot-dev-001-human-review-summary.md`](../case-studies/real-pilot-dev-001-human-review-summary.md). |
| 43 | + |
| 44 | +Show the final calibrated replay: |
| 45 | + |
| 46 | +- 18 findings. |
| 47 | +- 18 validated. |
| 48 | +- 15 `cross_account_trust`. |
| 49 | +- 3 `admin_reachability`. |
| 50 | +- 18 labeled. |
| 51 | +- 14 `valid_path`. |
| 52 | +- 3 `expected_benign`. |
| 53 | +- 1 `needs_more_evidence`. |
| 54 | +- 5 `owner_confirmed`. |
| 55 | +- complete `collection_context`. |
| 56 | + |
| 57 | +Say: |
| 58 | + |
| 59 | +> “This is bounded real-pilot evidence. It is not production readiness, exploitability proof, or full IAM safety.” |
| 60 | +
|
| 61 | +## 4:30-6:00 — Cross-Account Trust Finding |
| 62 | + |
| 63 | +Walk through one `cross_account_trust` row from the sanitized local review material if it is present locally. If the raw or sanitized table is not available, use the case-study summary instead. |
| 64 | + |
| 65 | +Explain: |
| 66 | + |
| 67 | +- the finding is a trust-structure review row; |
| 68 | +- wildcard-principal trust findings were repeatedly classified as `valid_path`; |
| 69 | +- expected-benign rows are still useful because they represent real structures owners may need to confirm; |
| 70 | +- owner-confirmed rows strengthen reviewability but do not create a full owner-confirmed truth set. |
| 71 | + |
| 72 | +Avoid showing raw account IDs or raw IAM/STS ARNs unless the demo owner explicitly authorizes it. |
| 73 | + |
| 74 | +## 6:00-7:30 — Admin Reachability Finding |
| 75 | + |
| 76 | +Walk through one `admin_reachability` row from the sanitized local review material if present. |
| 77 | + |
| 78 | +Explain the calibrated evidence chain: |
| 79 | + |
| 80 | +- source role has `sts:AssumeRole` to `ProdDBAdminRole`; |
| 81 | +- the target trust is conditioned account-root trust narrowed by `aws:PrincipalArn`; |
| 82 | +- the admin witness is AWS-managed `AdministratorAccess`; |
| 83 | +- `clean_witness_check` is pass; |
| 84 | +- `source_has_assume_role`, `reaches_at_least_one_admin`, and `walk_terminated_within_depth_limit` are pass. |
| 85 | + |
| 86 | +Say: |
| 87 | + |
| 88 | +> “Validated does not mean exploited. It means IAMScope’s modeled checks for this finding passed under the current bounded evidence.” |
| 89 | +
|
| 90 | +## 7:30-8:30 — Collection Context And Non-Claims |
| 91 | + |
| 92 | +Show that `collection_context` is complete: |
| 93 | + |
| 94 | +- `graph_collection_complete`: true. |
| 95 | +- `has_collection_failures`: false. |
| 96 | +- `has_policy_parse_failures`: false. |
| 97 | + |
| 98 | +Then read the non-claims: |
| 99 | + |
| 100 | +- no production readiness. |
| 101 | +- no exploitability proof. |
| 102 | +- no full IAM safety. |
| 103 | +- no full AWS authorization semantics. |
| 104 | +- no complete IAM privilege-escalation coverage. |
| 105 | +- no composite score. |
| 106 | +- no pass/fail benchmark label. |
| 107 | + |
| 108 | +## 8:30-9:30 — Owner-Confirmation Layer |
| 109 | + |
| 110 | +Explain why owner-confirmation matters: |
| 111 | + |
| 112 | +- labels are human review, not an automatic truth oracle; |
| 113 | +- five priority trust findings were owner-confirmed; |
| 114 | +- owner confirmation is bounded to those findings only; |
| 115 | +- this creates a review trail without claiming broad IAMScope correctness. |
| 116 | + |
| 117 | +## 9:30-10:00 — Close |
| 118 | + |
| 119 | +Close with: |
| 120 | + |
| 121 | +> “IAMScope does not prove the account is safe. It gives a reviewer evidence they can act on.” |
| 122 | +
|
| 123 | +Then repeat: |
| 124 | + |
| 125 | +> “No findings does not mean safe. Validated does not mean exploited. The demo evidence is bounded.” |
0 commit comments