Files
scrivas/findings/discovery_dashboard.html
T
Alvaro Del Valle 7e50d8083b Update proposal levers with Prowler benchmark findings
Expand the levers table from 5 to 8 workstreams, grounding each driver in
verified counts from the Prowler run:

- Add backup & resilience (0 of 9 EBS volumes have snapshots or a backup plan)
- Add secrets & key management (19 secrets without rotation or resource policy,
  2 KMS keys without auto-rotation, unencrypted log groups)
- Add compliance acceleration (363 failures; SOC 2 at 81% against existing
  Secureframe program)
- Note Config alongside GuardDuty and Security Hub in the delegated-admin gap
- Add the two criticals and hardware-MFA gaps to identity hardening
- Add internet-facing instances with instance profiles and IMDSv2 to exposure
- Order by priority and add a framing note
2026-08-19 15:04:26 -04:00

308 lines
23 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<title>Scrivas — AWS Discovery Findings</title>
<style>
:root {
--bg:#eef0f3; --panel:#ffffff; --panel-2:#f7f8fa; --ink:#171d27;
--ink-soft:#4a5563; --ink-faint:#79828f; --line:#dde1e7; --line-soft:#e8ebef;
--accent:#0d6e78; --accent-ink:#0a565e;
--good:#2f8657; --warn:#b5832a; --crit:#bd463b;
--crit-bg:#fbeceb; --good-bg:#eaf4ee; --warn-bg:#f8f1e2;
--mono: ui-monospace,"SF Mono","SFMono-Regular",Menlo,Consolas,monospace;
--sans: ui-sans-serif,system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
--shadow:0 1px 2px rgba(20,26,38,.04),0 6px 20px -12px rgba(20,26,38,.18);
}
@media (prefers-color-scheme:dark){:root{
--bg:#0d1117;--panel:#161c26;--panel-2:#1b222e;--ink:#e8ecf1;--ink-soft:#aab3c0;
--ink-faint:#7c8695;--line:#28303c;--line-soft:#212934;--accent:#3bb4bf;--accent-ink:#8fdfe6;
--good:#54b681;--warn:#d6a94a;--crit:#e26b60;--crit-bg:#2a1917;--good-bg:#132419;--warn-bg:#251d10;
--shadow:0 1px 2px rgba(0,0,0,.3),0 8px 24px -14px rgba(0,0,0,.6);}}
:root[data-theme="dark"]{
--bg:#0d1117;--panel:#161c26;--panel-2:#1b222e;--ink:#e8ecf1;--ink-soft:#aab3c0;
--ink-faint:#7c8695;--line:#28303c;--line-soft:#212934;--accent:#3bb4bf;--accent-ink:#8fdfe6;
--good:#54b681;--warn:#d6a94a;--crit:#e26b60;--crit-bg:#2a1917;--good-bg:#132419;--warn-bg:#251d10;
--shadow:0 1px 2px rgba(0,0,0,.3),0 8px 24px -14px rgba(0,0,0,.6);}
:root[data-theme="light"]{
--bg:#eef0f3;--panel:#ffffff;--panel-2:#f7f8fa;--ink:#171d27;--ink-soft:#4a5563;
--ink-faint:#79828f;--line:#dde1e7;--line-soft:#e8ebef;--accent:#0d6e78;--accent-ink:#0a565e;
--good:#2f8657;--warn:#b5832a;--crit:#bd463b;--crit-bg:#fbeceb;--good-bg:#eaf4ee;--warn-bg:#f8f1e2;
--shadow:0 1px 2px rgba(20,26,38,.04),0 6px 20px -12px rgba(20,26,38,.18);}
*{box-sizing:border-box;}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);line-height:1.5;-webkit-font-smoothing:antialiased;}
.wrap{max-width:1120px;margin:0 auto;padding:32px 24px 64px;}
header{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:16px;padding-bottom:20px;border-bottom:2px solid var(--ink);}
.eyebrow{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--accent);font-weight:700;}
h1{font-size:clamp(24px,4vw,34px);margin:6px 0 4px;letter-spacing:-.02em;text-wrap:balance;font-weight:750;}
.sub{color:var(--ink-soft);font-size:14px;}
.idcard{font-family:var(--mono);font-size:12px;color:var(--ink-soft);text-align:right;line-height:1.7;}
.idcard b{color:var(--ink);}
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:22px 0 12px;}
@media (max-width:760px){.kpis{grid-template-columns:repeat(2,1fr);}}
.kpi{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:16px;box-shadow:var(--shadow);position:relative;overflow:hidden;}
.kpi::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--accent);}
.kpi.crit::before{background:var(--crit);}.kpi.warn::before{background:var(--warn);}.kpi.good::before{background:var(--good);}
.kpi .n{font-size:28px;font-weight:750;letter-spacing:-.02em;font-variant-numeric:tabular-nums;}
.kpi.crit .n{color:var(--crit);}.kpi.warn .n{color:var(--warn);}
.kpi .lbl{font-size:12px;color:var(--ink-faint);margin-top:2px;}
.kpi .meta{font-size:11px;color:var(--ink-soft);margin-top:8px;}
section{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:22px 24px;margin-bottom:18px;box-shadow:var(--shadow);}
.grid2{display:grid;grid-template-columns:1.15fr .85fr;gap:18px;}
@media (max-width:820px){.grid2{grid-template-columns:1fr;}}
.sec-head{display:flex;align-items:baseline;gap:10px;margin-bottom:16px;}
.sec-head .tag{font-family:var(--mono);font-size:12px;color:var(--accent);font-weight:700;}
.sec-head h2{font-size:17px;margin:0;letter-spacing:-.01em;}
.sec-head .note{margin-left:auto;font-size:12px;color:var(--ink-faint);}
/* cost bar chart */
.chart{display:flex;align-items:flex-end;gap:10px;height:170px;padding:8px 4px 0;border-bottom:1px solid var(--line);}
.bar{flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:6px;height:100%;}
.bar .col{width:100%;max-width:46px;background:color-mix(in srgb,var(--accent) 30%,transparent);border-radius:5px 5px 0 0;transition:height .2s;}
.bar.last .col{background:var(--accent);}
.bar .v{font-family:var(--mono);font-size:10.5px;color:var(--ink-soft);font-variant-numeric:tabular-nums;}
.bar .m{font-size:10.5px;color:var(--ink-faint);}
.barscale{display:flex;justify-content:space-between;font-size:11px;color:var(--ink-faint);margin-top:6px;}
/* horizontal service breakdown */
.hb{display:flex;flex-direction:column;gap:9px;}
.hb .row{display:grid;grid-template-columns:130px 1fr auto;align-items:center;gap:10px;font-size:12.5px;}
.hb .svc{color:var(--ink-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.hb .track{height:9px;background:var(--panel-2);border-radius:5px;overflow:hidden;}
.hb .fill{height:100%;background:var(--accent);border-radius:5px;}
.hb .amt{font-family:var(--mono);font-variant-numeric:tabular-nums;color:var(--ink);font-size:12px;}
.stat-row{display:flex;flex-wrap:wrap;gap:22px;}
.stat{display:flex;flex-direction:column;}
.stat .n{font-size:22px;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.01em;}
.stat .l{font-size:11.5px;color:var(--ink-faint);}
.pill{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:700;padding:3px 9px;border-radius:999px;}
.pill.crit{background:var(--crit-bg);color:var(--crit);}.pill.good{background:var(--good-bg);color:var(--good);}.pill.warn{background:var(--warn-bg);color:var(--warn);}
.dot{width:7px;height:7px;border-radius:50%;background:currentColor;}
.tbl-wrap{overflow-x:auto;}
table{width:100%;border-collapse:collapse;font-size:13px;min-width:540px;}
th{text-align:left;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);font-weight:700;padding:0 12px 10px;border-bottom:1px solid var(--line);}
td{padding:12px;border-bottom:1px solid var(--line-soft);vertical-align:top;color:var(--ink-soft);}
td b{color:var(--ink);font-weight:600;}
td code{font-family:var(--mono);font-size:12px;}
tr:last-child td{border-bottom:none;}
.sev{white-space:nowrap;}
.acctgrid{display:grid;grid-template-columns:1fr 1fr;gap:14px;}
@media (max-width:720px){.acctgrid{grid-template-columns:1fr;}}
.acct{border:1px solid var(--line);border-radius:11px;padding:16px;background:var(--panel-2);}
.acct h3{margin:0 0 4px;font-size:14px;}
.acct .aid{font-family:var(--mono);font-size:11.5px;color:var(--ink-faint);}
.acct ul{margin:10px 0 0;padding-left:16px;font-size:12.5px;color:var(--ink-soft);line-height:1.7;}
footer{margin-top:24px;font-size:12px;color:var(--ink-faint);display:flex;flex-wrap:wrap;gap:6px 16px;}
footer code{font-family:var(--mono);color:var(--ink-soft);}
</style>
<div class="wrap">
<header>
<div>
<div class="eyebrow">Dasnuve · Cloud Discovery · Fast Track</div>
<h1>Scrivas — AWS Discovery Findings</h1>
<div class="sub">Resource footprint · security posture · cost — phases 25, read-only</div>
</div>
<div class="idcard">org&nbsp;<b>o-qfj0pvhhv7</b><br>2 accounts · us-east-2 primary<br>2026-08-19</div>
</header>
<div class="kpis">
<div class="kpi warn"><div class="n">$858<span style="font-size:14px">/mo</span></div><div class="lbl">Current run-rate (Jul)</div><div class="meta">up ~4× from $223 in January</div></div>
<div class="kpi crit"><div class="n">4</div><div class="lbl">GuardDuty high/critical findings</div><div class="meta">severity 89, both regions, open</div></div>
<div class="kpi crit"><div class="n">13</div><div class="lbl">Security groups open to 0.0.0.0/0</div><div class="meta">management account, us-east-2</div></div>
<div class="kpi warn"><div class="n">5</div><div class="lbl">Access keys &gt; 90 days old</div><div class="meta">incl. admin keys at 322 &amp; 319 days</div></div>
</div>
<!-- COST -->
<section>
<div class="sec-head"><span class="tag">05</span><h2>Cost baseline</h2><span class="note">Cost Explorer · unblended · payer account</span></div>
<div class="grid2">
<div>
<div class="chart" id="chart">
<div class="bar"><div class="col" style="height:26%"></div><div class="v">$223</div><div class="m">Jan</div></div>
<div class="bar"><div class="col" style="height:15%"></div><div class="v">$131</div><div class="m">Feb</div></div>
<div class="bar"><div class="col" style="height:61%"></div><div class="v">$522</div><div class="m">Mar</div></div>
<div class="bar"><div class="col" style="height:85%"></div><div class="v">$732</div><div class="m">Apr</div></div>
<div class="bar"><div class="col" style="height:87%"></div><div class="v">$746</div><div class="m">May</div></div>
<div class="bar"><div class="col" style="height:96%"></div><div class="v">$821</div><div class="m">Jun</div></div>
<div class="bar last"><div class="col" style="height:100%"></div><div class="v">$858</div><div class="m">Jul</div></div>
</div>
<div class="barscale"><span>Monthly spend, 2026</span><span>+284% Jan→Jul · 7-mo total ≈ $4,033</span></div>
</div>
<div>
<div style="font-size:12px;color:var(--ink-faint);margin-bottom:10px;">Top services · 6-month spend</div>
<div class="hb">
<div class="row"><span class="svc">EC2 Compute</span><span class="track"><span class="fill" style="width:100%"></span></span><span class="amt">$2,722</span></div>
<div class="row"><span class="svc">EC2 Other</span><span class="track"><span class="fill" style="width:14%"></span></span><span class="amt">$375</span></div>
<div class="row"><span class="svc">AWS WAF</span><span class="track"><span class="fill" style="width:13%"></span></span><span class="amt">$364</span></div>
<div class="row"><span class="svc">Security Hub</span><span class="track"><span class="fill" style="width:6%"></span></span><span class="amt">$153</span></div>
<div class="row"><span class="svc">VPC</span><span class="track"><span class="fill" style="width:4%"></span></span><span class="amt">$117</span></div>
<div class="row"><span class="svc">Config</span><span class="track"><span class="fill" style="width:3%"></span></span><span class="amt">$84</span></div>
<div class="row"><span class="svc">GuardDuty</span><span class="track"><span class="fill" style="width:2%"></span></span><span class="amt">$56</span></div>
<div class="row"><span class="svc">EKS</span><span class="track"><span class="fill" style="width:2%"></span></span><span class="amt">$47</span></div>
</div>
<p class="sub" style="margin:12px 0 0;font-size:12.5px;">EC2 compute is <b>67%</b> of spend — the primary optimization lever (rightsizing, Savings Plans, Graviton/spot). Security tooling (WAF, Security Hub, Config, GuardDuty) adds ~<b>$110/mo</b>.</p>
</div>
</div>
</section>
<!-- FOOTPRINT -->
<section>
<div class="sec-head"><span class="tag">03</span><h2>Resource footprint</h2><span class="note">active regions only · us-east-2 primary</span></div>
<div class="stat-row" style="margin-bottom:16px">
<div class="stat"><span class="n">7</span><span class="l">EC2 instances</span></div>
<div class="stat"><span class="n">9</span><span class="l">EBS volumes <span style="color:var(--warn)">(2 unattached)</span></span></div>
<div class="stat"><span class="n">7</span><span class="l">Elastic IPs</span></div>
<div class="stat"><span class="n">9</span><span class="l">S3 buckets</span></div>
<div class="stat"><span class="n">2</span><span class="l">Regions in use</span></div>
<div class="stat"><span class="n">15</span><span class="l">Idle regions</span></div>
</div>
<div class="acctgrid">
<div class="acct">
<h3>Scrivas Admin <span class="pill warn"><span class="dot"></span>management + workloads</span></h3>
<div class="aid">716468089330 · us-east-2</div>
<ul>
<li>7 EC2 · 9 EBS (2 unattached) · 7 EIPs · 9 S3 buckets</li>
<li>EKS IAM roles present (staging/gpu/infra/apps) — <b>no live clusters returned</b>; likely torn down, roles orphaned</li>
<li>RDS monitoring role present; VPC flow logs enabled</li>
<li><b>Anti-pattern:</b> production workloads run in the org management account</li>
</ul>
</div>
<div class="acct">
<h3>Lazka <span class="pill crit"><span class="dot"></span>bare &amp; unmonitored</span></h3>
<div class="aid">547868853286 · us-east-1</div>
<ul>
<li>0 EC2 · 0 S3 · 0 IAM users — effectively empty</li>
<li>Only default service-linked roles + OrganizationAccountAccessRole</li>
<li>Security Hub <b>not enabled</b>; no GuardDuty detector</li>
<li>Covered by the org CloudTrail, but otherwise dark</li>
</ul>
</div>
</div>
</section>
<!-- SECURITY + IAM -->
<section>
<div class="sec-head"><span class="tag">04</span><h2>Security posture &amp; IAM</h2><span class="note">prioritized risk register</span></div>
<div class="tbl-wrap">
<table>
<thead><tr><th>Severity</th><th>Finding</th><th>Evidence</th><th>Why it matters</th></tr></thead>
<tbody>
<tr>
<td class="sev"><span class="pill crit"><span class="dot"></span>High</span></td>
<td><b>Open GuardDuty high/critical findings</b></td>
<td><code>sev 89</code> in us-east-1 &amp; us-east-2</td>
<td>Active threat signals unremediated; no delegated security owner to triage</td>
</tr>
<tr>
<td class="sev"><span class="pill crit"><span class="dot"></span>High</span></td>
<td><b>13 security groups open to the internet</b></td>
<td><code>0.0.0.0/0</code> ingress, us-east-2</td>
<td>Direct attack surface on the workload account — needs port-level review</td>
</tr>
<tr>
<td class="sev"><span class="pill crit"><span class="dot"></span>High</span></td>
<td><b>Stale admin access keys</b></td>
<td><code>admin</code> keys 322 &amp; 319 days; +3 others &gt;90d</td>
<td>Long-lived static credentials for privileged users — top breach vector</td>
</tr>
<tr>
<td class="sev"><span class="pill warn"><span class="dot"></span>Medium</span></td>
<td><b>Console users without MFA</b></td>
<td>2 of 10 IAM users</td>
<td>Account-takeover risk; fails CIS AWS baseline</td>
</tr>
<tr>
<td class="sev"><span class="pill warn"><span class="dot"></span>Medium</span></td>
<td><b>Member account unmonitored</b></td>
<td>Lazka: no GuardDuty / Security Hub</td>
<td>Detection blind spot; org security services not delivered to members</td>
</tr>
<tr>
<td class="sev"><span class="pill good"><span class="dot"></span>Good</span></td>
<td><b>Org CloudTrail configured well</b></td>
<td>multi-region + org trail + log-file validation</td>
<td>Solid audit foundation to build on</td>
</tr>
<tr>
<td class="sev"><span class="pill good"><span class="dot"></span>Good</span></td>
<td><b>No public S3 buckets or public RDS</b></td>
<td>0 of 9 buckets public; 0 public DBs</td>
<td>Data-exposure basics are in order</td>
</tr>
</tbody>
</table>
</div>
</section>
<!-- PROWLER / COMPLIANCE -->
<section>
<div class="sec-head"><span class="tag">CIS</span><h2>Compliance benchmark</h2><span class="note">Prowler 5.39 · 632 checks · 1,230 findings · mgmt account</span></div>
<div class="grid2">
<div>
<div class="stat-row" style="margin-bottom:14px">
<div class="stat"><span class="n" style="color:var(--good)">70%</span><span class="l">Checks passing (861)</span></div>
<div class="stat"><span class="n" style="color:var(--crit)">2</span><span class="l">Critical failures</span></div>
<div class="stat"><span class="n" style="color:var(--crit)">111</span><span class="l">High failures</span></div>
<div class="stat"><span class="n" style="color:var(--warn)">189</span><span class="l">Medium failures</span></div>
</div>
<div style="font-size:12px;color:var(--ink-faint);margin:4px 0 8px;">Pass rate by framework</div>
<div class="hb">
<div class="row"><span class="svc">SOC 2</span><span class="track"><span class="fill" style="width:81%;background:var(--good)"></span></span><span class="amt">81%</span></div>
<div class="row"><span class="svc">ISO 27001:2022</span><span class="track"><span class="fill" style="width:77%;background:var(--good)"></span></span><span class="amt">77%</span></div>
<div class="row"><span class="svc">CIS 3.0</span><span class="track"><span class="fill" style="width:74%;background:var(--warn)"></span></span><span class="amt">74%</span></div>
<div class="row"><span class="svc">NIST CSF 2.0</span><span class="track"><span class="fill" style="width:71%;background:var(--warn)"></span></span><span class="amt">71%</span></div>
<div class="row"><span class="svc">PCI DSS 4.0</span><span class="track"><span class="fill" style="width:57%;background:var(--crit)"></span></span><span class="amt">57%</span></div>
</div>
<p class="sub" style="margin:12px 0 0;font-size:12.5px;">SOC 2 at <b>81%</b> aligns with their Secureframe program — a focused push closes the gap. PCI is lowest (not in scope unless they process cards).</p>
</div>
<div>
<div style="font-size:12px;color:var(--ink-faint);margin-bottom:10px;">Critical &amp; notable high failures</div>
<div class="trust">
<div class="trow" style="border-color:color-mix(in srgb,var(--crit) 40%,transparent)"><span class="pill crit"><span class="dot"></span>CRIT</span><span class="rn">Root account has no hardware MFA</span></div>
<div class="trow" style="border-color:color-mix(in srgb,var(--crit) 40%,transparent)"><span class="pill crit"><span class="dot"></span>CRIT</span><span class="rn">AWS-managed policy grants <code>*:*</code> admin</span></div>
<div class="trow"><span class="pill warn"><span class="dot"></span>HIGH</span><span class="rn">No delegated admin: Config / GuardDuty / Security Hub</span></div>
<div class="trow"><span class="pill warn"><span class="dot"></span>HIGH</span><span class="rn">IMDSv2 not enforced at account level</span></div>
<div class="trow"><span class="pill warn"><span class="dot"></span>HIGH</span><span class="rn">IAM users rely on long-lived credentials</span></div>
<div class="trow"><span class="pill warn"><span class="dot"></span>HIGH</span><span class="rn">Secrets Manager rotation disabled (19 secrets)</span></div>
<div class="trow"><span class="pill warn"><span class="dot"></span>HIGH</span><span class="rn">KMS key auto-rotation off · SCP region restriction absent</span></div>
</div>
<p class="sub" style="margin:12px 0 0;font-size:12px;">Full evidence: <code>findings/prowler/*.html</code> · <code>*.ocsf.json</code> · <code>compliance/</code></p>
</div>
</div>
</section>
<!-- ROADMAP -->
<section>
<div class="sec-head"><span class="tag">&rarr;</span><h2>Proposal levers</h2><span class="note">where we create value &middot; ordered by priority</span></div>
<div class="tbl-wrap">
<table>
<thead><tr><th>Workstream</th><th>Driver from discovery</th><th>Outcome</th></tr></thead>
<tbody>
<tr><td><b>Landing zone &amp; account separation</b></td><td>Workloads in mgmt acct; flat org, no OUs; empty Lazka; SCP region-deny absent</td><td>Dedicated workload account; OUs + SCP guardrails (region deny, root protection)</td></tr>
<tr><td><b>Delegated security account</b></td><td>Zero delegated admins &mdash; GuardDuty, Security Hub <i>and</i> Config all flagged high; 4 open GD high/critical findings; Lazka dark</td><td>Central security account admins all three org-wide; findings get a named owner and triage SLA</td></tr>
<tr><td><b>Backup &amp; resilience</b></td><td><b>0 of 9 EBS volumes</b> have snapshots or a backup plan (18 high/medium failures)</td><td>AWS Backup plans, tested restores, RPO/RTO defined &mdash; today a volume loss is unrecoverable</td></tr>
<tr><td><b>Identity hardening</b></td><td>Admin keys 322 &amp; 319 days; 5 keys &gt;90d; 6 users on static creds; 9 users + root without hardware MFA; <code>AdministratorAccess</code> attached (<code>*:*</code>)</td><td>IAM Identity Center + short-lived roles; retire static keys, scope admin, hardware MFA on root</td></tr>
<tr><td><b>Exposure reduction</b></td><td>13 internet-open SGs; 3 permissive NACLs; 7 public-IP instances; <b>6 internet-facing instances carrying instance profiles</b>; IMDSv2 not enforced account-wide</td><td>Least-privilege ingress, IMDSv2 enforced, ALB/WAF fronting &mdash; closes the credential-theft path</td></tr>
<tr><td><b>Secrets &amp; key management</b></td><td>19 secrets with no rotation and no restrictive resource policy; 2 KMS keys without auto-rotation; 19 log groups unencrypted; secrets detected in 7 log groups</td><td>Rotation on every secret, KMS/CMK coverage for logs and SNS, resource policies scoped to consumers</td></tr>
<tr><td><b>Cost optimization</b></td><td>$858/mo, +284% Jan&rarr;Jul; EC2 = 67% of spend; 2 unattached EBS + 7 EIPs; orphaned EKS roles from a torn-down cluster</td><td>Rightsizing + Savings Plans + Graviton/spot + cleanup &rarr; recurring savings and a growth-safe baseline</td></tr>
<tr><td><b>Compliance acceleration</b></td><td>Prowler: 363 failures (2 critical, 111 high); SOC 2 81%, ISO 27001 77%, CIS 3.0 74%; Secureframe + Intruder already engaged</td><td>Close the SOC 2 gap on evidence they already collect; Security Hub as the standing control monitor</td></tr>
</tbody>
</table>
</div>
<p class="sub" style="margin:12px 0 0;font-size:12.5px;">The first three are the fastest to land and the hardest to defend leaving open &mdash; no delegated security owner, no backups, and workloads in the management account are each a single-event risk. Cost optimization is the lever that funds the rest.</p>
</section>
<footer>
<span>Read-only · boto3 via <code>dasnuve-scrivas-louis-impersonation</code></span>
<span>Reproduce: <code>scripts/fast_discovery.py</code></span>
<span>Raw: <code>findings/fast_discovery.json</code></span>
<span>Benchmark: <code>prowler aws</code> 632 checks · <code>findings/prowler/</code></span>
<span>Phases 25 + CIS benchmark · phase 6 on ice</span>
</footer>
</div>