DEV Community

Cover image for The 403 that started Zero-Access: read-only by architecture, not trust
Ketan Kamble
Ketan Kamble

Posted on Originally published at ketankamble.com

The 403 that started Zero-Access: read-only by architecture, not trust

A 403 I fully expected to be a 200 — in a lab, not a bug — turned into the design rule for a whole project: let an AI answer questions about thousands of endpoints without ever giving it a way to change one.

Everything else on my site — the ten read-only collectors, the Power BI reports, the AI agent that answers questions about a fleet without touching it — points back to one moment in a lab tenant: a 403 I fully expected to be a 200. Not a bug. The system working exactly as designed. That 403 is the reason the whole project is built the way it is, and this is the artifact that came out of it.

The proof, in one screen:

PS> . .\read-only-gate.ps1
Zero-Access read-only gate  identity: aa-collectors  [<guid>]
[read ] DeviceManagementManagedDevices.Read.All
[read ] Directory.Read.All
[WRITE] DeviceManagementManagedDevices.ReadWrite.All
READ-ONLY GATE FAILED  write-capable Graph roles granted:
DeviceManagementManagedDevices.ReadWrite.All. Refusing to