{"id":4637,"date":"2026-07-23T14:15:49","date_gmt":"2026-07-23T14:15:49","guid":{"rendered":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/2026\/07\/23\/the-trust-graph-why-infrastructure-diagrams-no-longer-describe-modern-systems\/"},"modified":"2026-07-23T14:15:49","modified_gmt":"2026-07-23T14:15:49","slug":"the-trust-graph-why-infrastructure-diagrams-no-longer-describe-modern-systems","status":"publish","type":"post","link":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/2026\/07\/23\/the-trust-graph-why-infrastructure-diagrams-no-longer-describe-modern-systems\/","title":{"rendered":"The Trust Graph: Why Infrastructure Diagrams No Longer Describe Modern Systems"},"content":{"rendered":"<div><img data-opt-id=1513016384  fetchpriority=\"high\" decoding=\"async\" width=\"770\" height=\"335\" src=\"https:\/\/devops.com\/wp-content\/uploads\/2014\/05\/trusted.jpg\" class=\"attachment-large size-large wp-post-image\" alt=\"trust multi-cloud zero-trust\" \/><\/div>\n<p><img data-opt-id=823315276  fetchpriority=\"high\" decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/devops.com\/wp-content\/uploads\/2014\/05\/trusted-150x150.jpg\" class=\"attachment-thumbnail size-thumbnail wp-post-image\" alt=\"trust multi-cloud zero-trust\" \/><\/p>\n<p>There is a ritual I\u2019ve watched play out in more incident retros than I can count. Someone pulls up the architecture diagram \u2014 the one in Confluence, the one that hasn\u2019t been touched since the last audit \u2014 and starts tracing boxes. Load balancer. VPC. RDS instance. EKS cluster. Everyone nods because the diagram is comforting. It\u2019s also increasingly a lie of omission.<\/p>\n<p>It doesn\u2019t show the GitHub Action that has write access to three cloud accounts. It doesn\u2019t show the OIDC federation between your CI runner and your production IAM role. It doesn\u2019t show the third-party SaaS chatbot holding a long-lived OAuth token that your sales team connected to Salesforce 18 months ago and forgot about. It doesn\u2019t show any of the things that actually decide whether an attacker gets from \u201cfound a bug in a support ticket\u201d to \u201cexfiltrated your customer database.\u201d<\/p>\n<p>That\u2019s because the diagram was never wrong, exactly. It was just answering a question nobody asks anymore. Modern systems don\u2019t fail \u2014 or get breached \u2014 because a box in a topology diagram went down. They fail because a \u2018relationship\u2019 between two identities was more powerful, more persistent or less scrutinized than anyone realized. Call it what it is: A trust graph. Most engineering organizations are troubleshooting the wrong picture entirely.<\/p>\n<p>Put the two pictures side by side and the gap is obvious:<\/p>\n<h3>Traditional Diagram Trust Graph<\/h3>\n<p><img data-opt-id=1456090375  data-opt-src=\"https:\/\/devops.com\/wp-content\/uploads\/2026\/07\/ChatGPT-Image-23-jul-2026-14_37_43.png\"  decoding=\"async\" class=\"alignnone wp-image-186735 size-full\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20100%%20100%%22%20width%3D%22100%%22%20height%3D%22100%%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%22100%%22%20height%3D%22100%%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E\" alt=\"\" width=\"1093\" height=\"1438\" \/><\/p>\n<p>The left-hand diagram tells you where packets travel. The right-hand one tells you where an attacker travels \u2014 and increasingly, where a normal Tuesday-afternoon outage travels too. Networks determine where packets go. Trust determines where attackers go. Those used to be roughly the same map. They aren\u2019t anymore, and the distance between them is where every incident in this piece actually happened.<\/p>\n<h3>The Diagram Problem<\/h3>\n<p>Infrastructure diagrams describe \u2018what exists\u2019. They don\u2019t describe \u2018what can act on what\u2019. A Kubernetes service account, a Terraform state file with an assumed role, a GitHub Actions workflow with an <code>OIDC<\/code> trust policy to AWS, an AI agent with a standing API key to your CRM \u2014 none of these show up as nodes on a topology map; yet, each one is a live, exploitable edge in the actual system that runs your business.<\/p>\n<p>I\u2019d argue this gap is now the single biggest blind spot in platform engineering, and the numbers back it up. Palo Alto Networks\u2019 2026 Identity Security Landscape report \u2014 the successor to CyberArk\u2019s long-running survey, following the acquisition \u2014 puts the ratio of machine identities to human identities at 109 to 1, up from 82 to 1 just a year earlier. Of every 109 machine identities for each human, 79 are AI agents. Other vendors land on different numbers \u2014 Veza says 17:1, Entro Labs says 144:1 in cloud-native environments \u2014 and the spread itself is the point. Nobody can agree on the ratio, but every measurement agrees on the direction.<\/p>\n<p>None of that would matter much if these identities sat still. They don\u2019t. They authenticate constantly; they hold standing permissions and \u2014 this is the part that should keep platform teams up at night \u2014 roughly 80% of organizations report having no formal, documented policy for creating or retiring them. We spent a decade building governance around human accounts: Onboarding, offboarding, access reviews, MFA. Then we quietly built a second workforce, 10 to over a 100 times larger, with almost none of that discipline attached.<\/p>\n<h3>A Vocabulary for the Thing We\u2019re Actually Looking At<\/h3>\n<p>If the trust graph is real, it needs its own language, because \u2018IAM\u2019 and \u2018network topology\u2019 don\u2019t capture the dynamics that matter operationally.<\/p>\n<p>\u2018Trust nodes\u2019 are any identity capable of independent action \u2014 a service account, a workload identity, a CI job, an AI agent, a webhook integration. Not every node is equally dangerous; what matters is what it\u2019s trusted to do.<\/p>\n<p>\u2018Trust edges\u2019 are the relationships that let one node act as, or on behalf of, another \u2014 an OIDC federation, an assumed IAM role, an OAuth grant, a shared secret baked into a pipeline. An edge is a promise: \u2018If you present this credential, I will treat you as authorized\u2019.<\/p>\n<p>\u2018Trust amplification\u2019 happens when a low-privilege node sits upstream of a high-privilege one. A GitHub Action that seems trivial \u2014 say, a file-diffing utility \u2014 becomes catastrophic the moment it\u2019s allowed to print CI runner memory into a public log, because that memory contains the actual secrets used downstream. The action itself was never the target. It was the amplifier.<\/p>\n<p>\u2018Trust bottlenecks\u2019 are the single edges that, once compromised, unlock disproportionate reach \u2014 a shared CI bot token used across an entire GitHub organization, or a single SaaS integration connected into every business unit\u2019s Salesforce instance.<\/p>\n<p>\u2018Trust cascades\u2019 are what happens when an amplifier meets a bottleneck: One compromised edge propagates outward across systems that were never architecturally related, only \u2018trust-related\u2019.<\/p>\n<p>These aren\u2019t abstractions. 2025 gave us two textbook cases, back to back.<\/p>\n<h3>Case One: The Amplifier<\/h3>\n<p>On March 14, 2025, at roughly 9 a.m. Pacific, a popular open-source GitHub Action called <code>tj-actions\/changed-files<\/code> \u2014 used in over 23,000 repositories \u2014 started quietly printing CI\/CD secrets into public build logs. Attackers had retroactively modified multiple version tags to point at a malicious commit, meaning even organizations pinned to a specific release were affected. The compromise ran for roughly 15 hours before GitHub pulled the repository. The vulnerability was assigned CVE-2025-30066.<\/p>\n<p>The forensic trail, pieced together by StepSecurity, Wiz and Palo Alto\u2019s Unit 42, is a near-perfect illustration of trust amplification. Investigators found that the attacker likely first compromised a separate, less-visible action, <code>reviewdog\/action-setup<\/code>, and used a leaked token from that dependency to reach the higher-value <code>tj-actions<\/code> repository. Unit 42\u2019s later analysis suggested the campaign actually began as a targeted operation against Coinbase\u2019s repositories before the attacker apparently lost that focus and widened the blast radius indiscriminately.<\/p>\n<p>Look at what that means in trust-graph terms. <code>reviewdog\/action-setup<\/code> was a low-privilege trust node \u2014 a setup utility, the kind of dependency nobody reviews twice. However, it sat upstream of <code>tj-actions\/eslint-changed-files<\/code>, which sat upstream of <code>tj-actions\/changed-files<\/code> itself, which was a trust edge running inside 23,000 separate CI pipelines. That\u2019s a trust amplifier by definition: A small, boring node whose downstream reach was enormous. Also, because every one of those 23,000 pipelines trusted the same tagged reference, the compromised action functioned as a trust bottleneck \u2014 one credential, one repository, one retagged commit \u2014 and the blast radius touched every organization that depended on it. No topology diagram would ever have flagged <code>reviewdog\/action-setup<\/code> as load-bearing. On the trust graph, it was one of the most connected nodes in the software supply chain.<\/p>\n<h3>Case Two: The Cascade<\/h3>\n<p>Five months later, the pattern repeated at a different scale, through a different kind of node: An AI agent.<\/p>\n<p>Between August 8 and 18, 2025, a threat cluster tracked as UNC6395 used stolen OAuth tokens belonging to Salesloft\u2019s Drift \u2014 an AI chatbot widely embedded into corporate Salesforce instances for live chat and lead generation \u2014 to walk into hundreds of enterprise environments without triggering a single password prompt. Over roughly 10 days, the group ran systematic queries against more than 700 organizations, including Cloudflare, Google, PagerDuty, Palo Alto Networks, Proofpoint and Zscaler, exporting support-case data at scale. Since Drift\u2019s OAuth tokens had been granted broad reach, investigators later found the same stolen credentials also opened doors into Slack, Google Workspace, AWS, Azure and OpenAI accounts connected through the same integration.<\/p>\n<p>The attackers weren\u2019t after Salesforce itself. They were combing exported case text for plaintext AWS keys, Snowflake tokens and VPN credentials that customers had pasted into support tickets \u2014 using one trust edge to go fishing for the credentials needed to open the next one. Google put the confirmed toll at over 700 organizations impacted. Fastly, Workday and Toast each independently confirmed exposure and moved to sever the integration and rotate tokens once notified.<\/p>\n<p>Nothing about this incident involved a firewall misconfiguration, an unpatched server or a phished employee clicking a bad link in the conventional sense. It involved one AI agent\u2019s OAuth grant sitting at the center of an enormous number of downstream trust edges \u2014 a single node whose blast radius nobody had mapped, because nobody draws a diagram of \u2018what a chatbot integration is allowed to touch\u2019.<\/p>\n<h3>The Reliability Angle Nobody\u2019s Pricing in Yet<\/h3>\n<p>Security teams are (slowly) absorbing this. Reliability and platform teams mostly aren\u2019t, and that\u2019s the second half of the argument. About 10 years ago, an outage was usually a resource problem \u2014 CPU, memory, disk, a bad deploy. Increasingly, it has become an authorization problem: An expired workload identity token, a revoked service account nobody flagged as load-bearing, an OIDC trust relationship that silently broke after a provider-side change.<\/p>\n<p>This is the automation paradox in one sentence: The more you remove humans from a deployment pipeline, the more that pipeline\u2019s reliability depends on identity, not infrastructure. A human on-call engineer can route around a broken dependency. An automated pipeline authenticating via a dead workload identity just fails, silently, at 2 a.m. and the postmortem reads like a security incident even though nothing was \u2018hacked\u2019. The OWASP Foundation formalized this shift in its 2025 Non-Human Identities Top 10, codifying failure modes \u2014 improper offboarding of retired service accounts, secret leakage into logs and repos, insecure machine-to-machine authentication \u2014 that read like an SRE runbook as much as a security framework, because at this point, they\u2019re the same document.<\/p>\n<p>The scale of what\u2019s now ungoverned is the part that should reframe how platform teams prioritize. GitGuardian\u2019s 2026 State of Secrets Sprawl report found 28.65 million hardcoded secrets added to public GitHub repositories in 2025 alone \u2014 a 34% jump year over year, the largest single-year increase on record \u2014 with AI-service-related leaks specifically up 81.5%. Of the secrets confirmed live back in 2022, roughly 64% remain exploitable as of this January \u2014 meaning most organizations aren\u2019t just failing to prevent new exposure, they\u2019re failing to clean up exposure they already know about.<\/p>\n<h3>What This Actually Changes About the Job<\/h3>\n<p>If you accept that the trust graph is the real architecture, a few practical things follow and none of them are \u201cbuy another dashboard.\u201d<\/p>\n<p>First, threat modeling has to include CI\/CD dependencies as first-class production infrastructure, not developer tooling. <code>reviewdog\/action-setup<\/code> wasn\u2019t a footnote; it was the entry point. Every transitive action, every third-party GitHub App, every Terraform module pulled from a public registry is a trust edge with the same blast-radius potential as a misconfigured security group \u2014 arguably more, because almost nobody reviews it with the same rigor.<\/p>\n<p>Second, every SaaS integration and AI agent needs an owner and a documented scope, the same way a production database needs one. \u201cWe connected Drift to Salesforce for lead routing\u201d is a perfectly reasonable business decision. \u201cNobody remembers what data Drift can touch, or that its OAuth token never expires\u201d is the actual vulnerability, and it\u2019s a governance failure, not a technical one.<\/p>\n<p>Third \u2014 and this is the harder cultural shift \u2014 reliability engineering and identity security need to stop being separate disciplines with separate tooling and separate on-call rotations. An expired workload identity that breaks a deployment pipeline and a stolen OAuth token that exfiltrates customer data are the same category of failure: A trust edge that behaved in a way nobody had modeled. Treating one as an SRE problem and the other as a SOC problem guarantees blind spots exactly where the two disciplines don\u2019t talk to each other.<\/p>\n<p>The old diagram isn\u2019t wrong. It\u2019s just describing a system that stopped being the whole story around the time OIDC federation, service meshes and autonomous agents became normal. The graph that actually determines whether your organization has a good week or a very bad one is the one made of trust edges \u2014 and right now, almost nobody is drawing it, reviewing it or putting an owner\u2019s name on it. That\u2019s not a tooling gap. It\u2019s an architecture gap, and it\u2019s the one worth arguing about in 2026.<\/p>\n<p><a href=\"https:\/\/devops.com\/the-trust-graph-why-infrastructure-diagrams-no-longer-describe-modern-systems\/\" target=\"_blank\" class=\"feedzy-rss-link-icon\">Read More<\/a><\/p>\n<p>\u200b<\/p>","protected":false},"excerpt":{"rendered":"<p>There is a ritual I\u2019ve watched play out in more incident retros than I can count. Someone pulls up the [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":4638,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[5],"tags":[],"class_list":["post-4637","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-devops"],"_links":{"self":[{"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/posts\/4637","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/comments?post=4637"}],"version-history":[{"count":0,"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/posts\/4637\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/media\/4638"}],"wp:attachment":[{"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/media?parent=4637"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/categories?post=4637"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/tags?post=4637"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}