<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Gary Austin</title>
    <description>The latest articles on DEV Community by Gary Austin (@biggthecreator).</description>
    <link>https://dev.to/biggthecreator</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4026638%2Fcca25cda-68c5-450b-a07b-dd50e72d8f0e.png</url>
      <title>DEV Community: Gary Austin</title>
      <link>https://dev.to/biggthecreator</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/biggthecreator"/>
    <language>en</language>
    <item>
      <title>They Didn't Break In. They Logged In: The Two-Hour Management-Plane Review</title>
      <dc:creator>Gary Austin</dc:creator>
      <pubDate>Wed, 19 Aug 2026 14:07:00 +0000</pubDate>
      <link>https://dev.to/biggthecreator/they-didnt-break-in-they-logged-in-the-two-hour-management-plane-review-50f0</link>
      <guid>https://dev.to/biggthecreator/they-didnt-break-in-they-logged-in-the-two-hour-management-plane-review-50f0</guid>
      <description>&lt;h1&gt;
  
  
  They Didn't Break In. They Logged In: The Two-Hour Management-Plane Review
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;One console in your stack can reach every machine you manage. This month an attacker demonstrated exactly what that means — without deploying a single piece of malware. Here's the two-hour review that turns that lesson into a signed record.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fb2d0yd1qn2eic5ka6aul.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fb2d0yd1qn2eic5ka6aul.png" alt="The intrusion with no malware in it" width="800" height="144"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The intrusion with no malware in it
&lt;/h2&gt;

&lt;p&gt;The most instructive incident reporting of the month describes an attack with no phishing email, no dropper, no encrypted payload. An authentication bypass in a widely deployed remote monitoring and management (RMM) platform gave the attacker administrative access to the management console — and from that point they never needed an exploit again. They used the product's own remote-control feature, the same one technicians use every day, to reach managed endpoints and leave persistence behind. In at least one confirmed case, the session ran under a default support account that ships with the product.&lt;/p&gt;

&lt;p&gt;Read that chain again from your tooling's point of view. The endpoint agent saw a legitimate remote-support session. The firewall saw a signed, widely used tunneling utility connecting to a well-known service. The audit log saw a support account supporting. Every control was working correctly. They were answering questions nobody had asked.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6psq7gfhqdtibcx4ewid.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6psq7gfhqdtibcx4ewid.png" alt="Why the management plane is a different asset class" width="800" height="144"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the management plane is a different asset class
&lt;/h2&gt;

&lt;p&gt;Compromise an endpoint and an attacker owns an endpoint. Compromise the management plane and they own every endpoint it manages — and if you're an MSP, that's not one company, that's your entire book, through one console that lives on the internet because it has to.&lt;/p&gt;

&lt;p&gt;A workstation is a room. Your RMM is the master key cabinet. That asymmetry is why the console deserves harder questions than any other server you run — questions that outrank every feature comparison on the next renewal call:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Does the console share an identity system with your domain?&lt;/strong&gt; Shared identity means one takeover becomes two.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Is MFA enforced on the console itself&lt;/strong&gt; — not just on the technician's email account?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Can any technician open remote control on any endpoint at any hour&lt;/strong&gt;, or is that scoped and scheduled?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Does the management server have unrestricted outbound access?&lt;/strong&gt; A server that can tunnel anywhere can beacon anywhere.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Is there one session record an administrator of that same server cannot quietly edit?&lt;/strong&gt; If the intruder is admin on the console, the console's log belongs to them too.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3s6cdgo0v2vj641nd8hs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3s6cdgo0v2vj641nd8hs.png" alt="Patched is not fixed" width="800" height="144"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Patched is not fixed
&lt;/h2&gt;

&lt;p&gt;Here's the detail worth tattooing on the inside of the ticket queue: the flaw being actively exploited exists because the patch for an earlier vulnerability was incomplete. The first fix shipped; the underlying path stayed open; a second CVE was issued for the same way in — and the second one is what attackers are using. A population of teams did everything right, applied the update, closed the ticket, and remained exposed.&lt;/p&gt;

&lt;p&gt;So verify patches the way you'd verify a restore:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Check the version on the host itself.&lt;/strong&gt; The console reporting on itself is a claim; the host is the fact.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check every instance&lt;/strong&gt;, not the one you remember.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Where the vendor documents the closed path, re-test the path&lt;/strong&gt; rather than trusting the version string.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Re-read the advisory a week later.&lt;/strong&gt; Incomplete fixes are usually discovered after the first patching wave, not before.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then write it down: version confirmed, instances checked, date, who, what test. "We're patched" is a mood. That log is an artifact — the same artifact cyber-insurance applications and client security questionnaires keep asking for.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzfxjqggzldhjpvzrrwwp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzfxjqggzldhjpvzrrwwp.png" alt="The four tells (context, not tooling)" width="800" height="144"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The four tells (context, not tooling)
&lt;/h2&gt;

&lt;p&gt;What actually separates an attacker from a technician when the tool, the account, and the feature are all legitimate? Context. Four kinds of it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. HOUR    — a support session at 3 AM on a Sunday
2. SOURCE  — a consumer-VPN exit node, not your office or corporate VPN
3. IDENTITY— a default account name nobody on your team actually uses
4. SHAPE   — connect → enumerate → disconnect
             (reconnaissance looks nothing like support)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;None of these are alerts in most shops today. All four are answerable this week, from logs you already collect.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjt8zpmypmehqwuese8z9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjt8zpmypmehqwuese8z9.png" alt="Hunt backwards, then write it down" width="800" height="144"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Hunt backwards, then write it down
&lt;/h2&gt;

&lt;p&gt;Because this class of flaw tends to be exploited before it's catalogued, forward-looking controls are half the job. The other half is a 90-day retro-hunt: pull remote-session history and read it against the four tells; look for tunneling utilities registered as services on machines with no business running them; look for executables in user document folders wearing system file names; search for persistence no ticket explains. You're not looking for a hit — you're building the ability to say you looked, and what you found. A clean hunt, dated and signed, is still a deliverable.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftyhk9tj9ykv2n3z7fayk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftyhk9tj9ykv2n3z7fayk.png" alt="The whole thing, packaged free" width="800" height="144"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The whole thing, packaged free
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;Management Plane Kit&lt;/strong&gt; (Gatorbyte #009) bundles the review: the five-question hardening checklist, the patch verification log template, the four tells as a starting detection list, and the 90-day retro-hunt worksheet — free, in Notion, duplicate and run: &lt;strong&gt;&lt;a href="https://thesecuritygator.com" rel="noopener noreferrer"&gt;thesecuritygator.com&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Two hours. Five questions. One signed page either way it lands. Because a control you can't evidence is a control you're only assuming you have.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This is an exercise and review format, not managed security services — and not legal, compliance, or audit advice. Vendor advisories change; verify version guidance against the current advisory before acting. If you find evidence of compromise, follow your incident-response plan.&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Your Backups Are a Hypothesis: The 45-Minute Restore Test</title>
      <dc:creator>Gary Austin</dc:creator>
      <pubDate>Sun, 16 Aug 2026 09:15:00 +0000</pubDate>
      <link>https://dev.to/biggthecreator/your-backups-are-a-hypothesis-the-45-minute-restore-test-34o9</link>
      <guid>https://dev.to/biggthecreator/your-backups-are-a-hypothesis-the-45-minute-restore-test-34o9</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fn6sg8uye1ijjpi2yzv66.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fn6sg8uye1ijjpi2yzv66.png" alt="The green checkmark problem" width="800" height="144"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The green checkmark problem
&lt;/h2&gt;

&lt;p&gt;Every MSP dashboard has one: the backup column, green for months. Green feels like safety. But a green job proves exactly one thing — the job ran. It does not prove the data comes back, how long that takes, whether the increment you'll need survived the retention policy, or whether anyone alive can find the decryption key at 2 AM.&lt;/p&gt;

&lt;p&gt;Two weeks ago this series argued that an incident response plan that's never been exercised is a hypothesis. Backups are the same species of hypothesis, with quieter failure modes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Rotated credentials.&lt;/strong&gt; The backup service account changed; jobs kept "succeeding" against a subset of targets.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Corrupt increments.&lt;/strong&gt; The chain is only as good as its weakest link, and nothing verifies links like a restore.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Retention surprises.&lt;/strong&gt; The copy you need is from 9 days ago; retention keeps 7.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Key-inside-the-vault.&lt;/strong&gt; The decryption key or console password is documented… inside a system that's now encrypted.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scope drift.&lt;/strong&gt; The new file share, the new VM, the migrated mailbox — added to production, never added to the job.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every one of these is invisible on a green dashboard, and every one of them is found in one of two moments: a scheduled drill on a Tuesday afternoon, or the worst hour of your year.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2q67n024868zcyprzbp2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2q67n024868zcyprzbp2.png" alt="The drill" width="800" height="144"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The drill
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;THE 45-MINUTE RESTORE TEST  (roles: an operator + a scribe. That's the team.)

0:00  Pick the target BEFORE you feel ready: one production system that
      would hurt Monday morning — file server, finance share, the PSA/RMM
      database. Not the easy one. The one that matters.

0:05  Restore last night's copy to an ISOLATED target: a spare VM, an empty
      VLAN, a cloud sandbox. NEVER over production. No internet egress
      required — isolation is the point.

0:35  Verify like a USER, not an admin: open three files, run one report,
      log in with a real non-admin account. "It boots" is not "it works."

0:40  Write four numbers: minutes to restore · GB restored · items verified
      · today's date. The scribe signs the page.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That signed page is the deliverable. Everything else — the war stories, the "huh, interesting" moments, the ticket you'll open about the service account — is bonus.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgac5szsgax2rs70f8y63.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgac5szsgax2rs70f8y63.png" alt="The one rule" width="800" height="144"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The one rule
&lt;/h2&gt;

&lt;p&gt;Borrowed from the tabletop drill and repointed: &lt;strong&gt;every claim gets a number and a date.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;"Restores work fine" is a mood. "47 minutes, 212 GB, three files opened and readable, August 11, signed by the scribe" is evidence — the kind cyber-insurance applications and enterprise security questionnaires are explicitly asking for when they say &lt;em&gt;tested recovery&lt;/em&gt; and &lt;em&gt;documented RTO&lt;/em&gt;. You're not doing extra work to satisfy the questionnaire; the drill's natural output &lt;em&gt;is&lt;/em&gt; the answer.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F79nqqzjepk3zncppvhr8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F79nqqzjepk3zncppvhr8.png" alt="The math you can finally do" width="800" height="144"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The math you can finally do
&lt;/h2&gt;

&lt;p&gt;Recovery time estimates usually divide a known number by a guess:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Real downtime ≈ (data that must come back) ÷ (restore throughput)&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Every team knows the first number. Almost nobody has &lt;em&gt;measured&lt;/em&gt; the second — and the difference between an assumed and a measured throughput is the difference between promising "a few hours" and delivering a long weekend. After one timed drill, your RTO conversations use a measurement. Guessing is over.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgo54m2g8kuh7iekk4odp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgo54m2g8kuh7iekk4odp.png" alt="The trap: your backups are the first target" width="800" height="144"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The trap: your backups are the first target
&lt;/h2&gt;

&lt;p&gt;Ransomware crews have told reporters for years that backup infrastructure is their first stop — delete or encrypt the recovery path, then detonate. Recent KEV traffic makes the architectural point for them: Veeam's advisory for CVE-2026-44963 describes a critical RCE on &lt;em&gt;domain-joined&lt;/em&gt; backup servers, reachable by any authenticated domain user. One stolen domain account, and the vault is another room on the sinking ship.&lt;/p&gt;

&lt;p&gt;So alongside the restore drill, three architecture questions worth an hour:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Credential separation.&lt;/strong&gt; Does the backup console share credentials (or auth domain) with production? It shouldn't.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;An undeletable copy.&lt;/strong&gt; Does at least one copy live where a domain admin &lt;em&gt;cannot&lt;/em&gt; delete it — immutable object storage or genuinely offline?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Console-loss drill.&lt;/strong&gt; If the console died tonight, who could still reach a copy, and by what path?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The commonly used rule of thumb is 3-2-1-1-0: three copies, two media, one offsite, one offline or immutable, zero errors on verification. The last digit is the one everyone skips — and it's the only one that involves actually restoring. Treat it as a starting point to adapt, not a certification to claim.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkfqqllrftaqbglhovjf1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkfqqllrftaqbglhovjf1.png" alt="When the test fails" width="800" height="144"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  When the test fails
&lt;/h2&gt;

&lt;p&gt;A restore test that fails is a &lt;em&gt;successful test&lt;/em&gt; — it located a real gap for the price of 45 minutes. Run the tabletop rule on it: the gap gets an owner and a date, and the failed log page stays in the file next to the eventual passing one. The paper trail from red to green is itself evidence of a functioning program. The only failed test is the one never run.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fic7vh8qn65io6peyrbhi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fic7vh8qn65io6peyrbhi.png" alt="Make it a rhythm" width="800" height="144"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Make it a rhythm
&lt;/h2&gt;

&lt;p&gt;One drill is a data point; a rhythm is a program. Rotate targets quarterly — file server this quarter, the PSA database next, a full VM the one after. Fifteen minutes of scheduling covers a year: four calendar invites, each with an operator, a scribe, and a target named in advance. Booked beats intended.&lt;/p&gt;

</description>
      <category>security</category>
      <category>cybersecurity</category>
      <category>backup</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Local-first GRC: why I'm building a compliance workbench that doesn't phone home</title>
      <dc:creator>Gary Austin</dc:creator>
      <pubDate>Tue, 28 Jul 2026 09:27:58 +0000</pubDate>
      <link>https://dev.to/biggthecreator/local-first-grc-why-im-building-a-compliance-workbench-that-doesnt-phone-home-2ec8</link>
      <guid>https://dev.to/biggthecreator/local-first-grc-why-im-building-a-compliance-workbench-that-doesnt-phone-home-2ec8</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftupc15fpraz9yrv71vyi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftupc15fpraz9yrv71vyi.png" alt=" " width="800" height="110"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'm Gary — The Security Gator. I build a GRC command deck for vCISOs, MSPs, and consultants who are tired of renting access to their own compliance data.&lt;/p&gt;

&lt;p&gt;The premise is simple: most compliance platforms are SaaS. Your control assessments, your risk scores, your client evidence — all of it lives on someone else's servers, behind a subscription that never ends. Stop paying, lose access.&lt;/p&gt;

&lt;h2&gt;
  
  
  The bet: own it, don't rent it
&lt;/h2&gt;

&lt;p&gt;AxiomLens is a NIST CSF 2.0 workbench that runs entirely on your machine — SQLite under the hood, a local GUI on top, one-time license. After activation it's strictly offline.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;CaaS / SaaS&lt;/th&gt;
&lt;th&gt;AxiomLens&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Your data lives&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;On their servers&lt;/td&gt;
&lt;td&gt;In a SQLite file you own&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Access model&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Log in to their cloud, every session&lt;/td&gt;
&lt;td&gt;Activate once, then fully offline&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Cost shape&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Subscription, forever&lt;/td&gt;
&lt;td&gt;One-time license&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;When you stop paying&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Locked out&lt;/td&gt;
&lt;td&gt;Nothing happens — it's yours&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;axiomlens status &lt;span class="nt"&gt;--json&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt;
  &lt;span class="s2"&gt;"controls_total"&lt;/span&gt;: 106,
  &lt;span class="s2"&gt;"in_scope"&lt;/span&gt;: 100,
  &lt;span class="s2"&gt;"coverage"&lt;/span&gt;: &lt;span class="s2"&gt;"computed locally"&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Coverage math, scored risk, board-ready reports, client hand-off docs — computed on your machine, owned outright. It supports compliance documentation and audit preparation; it's not a substitute for legal, compliance, or audit advice — and I'm careful to never claim otherwise. That honesty is part of the pitch.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I'll write about here
&lt;/h2&gt;

&lt;p&gt;The build, in public: SQLite schema decisions for framework crosswalks, packaging Python into a single exe with Nuitka, deterministic report generation instead of LLM roulette, and the general weirdness of shipping desktop software in a SaaS world.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbfyzgizob4bbykounq0o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbfyzgizob4bbykounq0o.png" alt=" " width="800" height="110"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The free stuff — field guides, a governance tool, starter kits — lives on &lt;a href="https://www.thesecuritygator.com/#gatorbytes" rel="noopener noreferrer"&gt;the Gatorbyte Free Shelf&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkh92c0wzjwt48lqj6js9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkh92c0wzjwt48lqj6js9.png" alt=" " width="800" height="110"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Everything else: &lt;a href="https://www.thesecuritygator.com" rel="noopener noreferrer"&gt;thesecuritygator.com&lt;/a&gt; · &lt;a href="https://thesecuritygator.beehiiv.com" rel="noopener noreferrer"&gt;Bayou Bytes newsletter&lt;/a&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>compliance</category>
      <category>buildinpublic</category>
      <category>indiehacker</category>
    </item>
  </channel>
</rss>
