<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Non-Human Identity Archives - Linuxcent</title>
	<atom:link href="https://linuxcent.com/tag/non-human-identity/feed/" rel="self" type="application/rss+xml" />
	<link>https://linuxcent.com/tag/non-human-identity/</link>
	<description>Infrastructure security, from the kernel up.</description>
	<lastBuildDate>Tue, 07 Jul 2026 03:03:24 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.4</generator>

<image>
	<url>https://linuxcent.com/wp-content/uploads/2026/04/favicon-512x512-1-150x150.png</url>
	<title>Non-Human Identity Archives - Linuxcent</title>
	<link>https://linuxcent.com/tag/non-human-identity/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">211632295</site>	<item>
		<title>The Non-Human Identity Problem Is Back</title>
		<link>https://linuxcent.com/non-human-identity-ai-agents/</link>
					<comments>https://linuxcent.com/non-human-identity-ai-agents/#respond</comments>
		
		<dc:creator><![CDATA[Vamshi Krishna Santhapuri]]></dc:creator>
		<pubDate>Thu, 09 Jul 2026 02:00:00 +0000</pubDate>
				<category><![CDATA[AI Security]]></category>
		<category><![CDATA[AI Agents]]></category>
		<category><![CDATA[Cloud Security]]></category>
		<category><![CDATA[DevSecOps]]></category>
		<category><![CDATA[IAM]]></category>
		<category><![CDATA[Identity Management]]></category>
		<category><![CDATA[LLM Security]]></category>
		<category><![CDATA[Non-Human Identity]]></category>
		<guid isPermaLink="false">https://linuxcent.com/?p=1905</guid>

					<description><![CDATA[<p><span class="span-reading-time rt-reading-time" style="display: block;"><span class="rt-label rt-prefix">Reading Time: </span> <span class="rt-time"> 6</span> <span class="rt-label rt-postfix">minutes</span></span>AI agents are non-human identities — and we are repeating every IAM anti-pattern from the cloud-native era, faster, with actors that are autonomous and manipulable.</p>
<p>The post <a href="https://linuxcent.com/non-human-identity-ai-agents/">The Non-Human Identity Problem Is Back</a> appeared first on <a href="https://linuxcent.com">Linuxcent</a>.</p>
]]></description>
										<content:encoded><![CDATA[<span class="span-reading-time rt-reading-time" style="display: block;"><span class="rt-label rt-prefix">Reading Time: </span> <span class="rt-time"> 6</span> <span class="rt-label rt-postfix">minutes</span></span><style>
pre{position:relative;background:#1e1e1e;color:#d4d4d4;
    padding:16px 16px 16px 20px;border-radius:6px;overflow-x:auto;
    font-family:'JetBrains Mono','Fira Code','Cascadia Code',Consolas,'Courier New',monospace;
    font-size:.88em;line-height:1.6;border-left:4px solid #555}
code{background:#f4f4f4;padding:2px 5px;border-radius:3px;font-size:.9em}
pre code{background:transparent;padding:0;color:inherit}
pre[data-lang="bash"],pre[data-lang="sh"],
pre[data-lang="shell"],pre[data-lang="zsh"]{border-left-color:#4ec9b0}
pre[data-lang="yaml"],pre[data-lang="json"],
pre[data-lang="toml"],pre[data-lang="xml"]{border-left-color:#569cd6}
pre[data-lang="python"],pre[data-lang="go"],pre[data-lang="rust"],
pre[data-lang="java"],pre[data-lang="c"],pre[data-lang="cpp"]{border-left-color:#c586c0}
pre[data-lang="text"],pre[data-lang="output"],
pre[data-lang="console"]{border-left-color:#888}
.lc-copy-btn{position:absolute;top:8px;right:8px;background:#2d2d2d;color:#ccc;
    border:1px solid #444;border-radius:4px;padding:3px 9px;font-size:.75em;
    font-family:system-ui,sans-serif;cursor:pointer;opacity:0;
    transition:opacity .15s,background .15s;line-height:1.6}
pre:hover .lc-copy-btn{opacity:1}
.lc-copy-btn:hover{background:#3a3a3a;color:#fff}
.lc-copy-btn.copied{color:#4ec9b0;border-color:#4ec9b0}
.lc-lang-badge{position:absolute;top:8px;left:20px;font-family:system-ui,sans-serif;
    font-size:.7em;color:#666;text-transform:uppercase;letter-spacing:.04em;
    line-height:1;pointer-events:none;opacity:0;transition:opacity .15s}
pre:hover .lc-lang-badge{opacity:1}
table{border-collapse:collapse;width:100%;margin:16px 0}
th,td{border:1px solid #ddd;padding:10px 14px;text-align:left}
th{background:#f0f0f0;font-weight:600}
tr:nth-child(even){background:#fafafa}
</style>
<p><script>
(function(){
  if(window.__lcCodeEnhanced)return;
  window.__lcCodeEnhanced=true;
  function enhance(){
    document.querySelectorAll('pre').forEach(function(pre){
      var code=pre.querySelector('code');
      var lang='';
      if(code){var m=(code.className||'').match(/language-(\S+)/);if(m)lang=m[1].toLowerCase();}
      if(lang)pre.setAttribute('data-lang',lang);
      if(lang){var badge=document.createElement('span');badge.className='lc-lang-badge';badge.textContent=lang;pre.insertBefore(badge,pre.firstChild);}
      var btn=document.createElement('button');
      btn.className='lc-copy-btn';btn.textContent='Copy';btn.setAttribute('aria-label','Copy code to clipboard');
      pre.appendChild(btn);
      btn.addEventListener('click',function(){
        var text=code?code.innerText:pre.innerText;
        if(navigator.clipboard&&window.isSecureContext){
          navigator.clipboard.writeText(text).then(function(){ok(btn);}).catch(function(){fb(text,btn);});
        }else{fb(text,btn);}
      });
    });
  }
  function ok(btn){btn.textContent='Copied!';btn.classList.add('copied');setTimeout(function(){btn.textContent='Copy';btn.classList.remove('copied');},2000);}
  function fb(text,btn){
    try{var ta=document.createElement('textarea');ta.value=text;ta.style.cssText='position:fixed;left:-9999px;top:-9999px;opacity:0';document.body.appendChild(ta);ta.select();document.execCommand('copy');document.body.removeChild(ta);ok(btn);}
    catch(e){btn.textContent='✗ Failed';setTimeout(function(){btn.textContent='Copy';},2000);}
  }
  if(document.readyState==='loading'){document.addEventListener('DOMContentLoaded',enhance);}else{enhance();}
})();
</script></p>
<p><em>Identity in the Agentic Era, Episode 1</em><br />
<em>Medium | ~2,000 words | 8-minute read</em></p>
<hr />
<p>I was reviewing an AI-powered internal tool a team had shipped to production. It summarized documents, answered questions about internal policy, and could update records in a few internal systems based on what it found.</p>
<p>When I asked what credentials it ran under, the engineer pulled up the service account configuration.</p>
<p><code class="" data-line="">AdministratorAccess</code>.</p>
<p>&#8220;It needed to read from S3, query DynamoDB, call a few internal APIs,&#8221; he said. &#8220;We weren&#8217;t sure exactly what it needed, so we gave it everything and planned to tighten it later.&#8221;</p>
<p>I had heard that sentence before. Almost word for word. In 2017, auditing an AWS account where six Lambda functions each carried three full-access managed policies because someone needed them to work quickly and planned to tighten them later. In 2019, reviewing a GCP project where a service account had <code class="" data-line="">roles/editor</code> at the folder level for the same reason.</p>
<p>We are re-running the same IAM mistakes from the last decade, at speed, with a new class of actors that are harder to audit, harder to predict, and capable of taking autonomous action at a scale no human operator could match.</p>
<p>The non-human identity problem is back. And it brought reinforcements.</p>
<hr />
<h2 id="the-last-time-we-had-this-problem">The Last Time We Had This Problem</h2>
<p>In the early cloud era, the explosion of non-human identities was Lambda functions, EC2 instance profiles, container service accounts, CI/CD pipeline roles. Engineers needed these workloads to access cloud resources. The fastest path was broad permissions. And because nobody was accountable for &#8220;the Lambda&#8217;s IAM role&#8221; specifically, nobody came back to tighten it.</p>
<p>The IAM practices that emerged over the following years — least privilege policies, generated from actual usage rather than estimated requirements; workload identity federation instead of static credentials; OIDC short-lived tokens instead of long-lived access keys — were direct responses to the mess that accumulates when you grant first and audit never.</p>
<p>That took about a decade to normalize. Many environments still aren&#8217;t there.</p>
<p>Now we have AI agents. And we are starting the cycle again from scratch.</p>
<hr />
<h2 id="what-makes-ai-agents-different-as-identities">What Makes AI Agents Different as Identities</h2>
<p>The workload identity problem from 2015 was hard because of scale — hundreds of Lambda functions, thousands of EC2 instances, each needing its own carefully scoped permissions.</p>
<p>AI agents introduce three properties that make the identity problem qualitatively harder.</p>
<p><strong>Autonomy.</strong> A Lambda function does exactly what its code says. An AI agent decides what to do based on a prompt, context, and model behavior. The set of actions it might take is not fully enumerable at deployment time. This means you cannot reason about &#8220;what does this agent need access to&#8221; the same way you reason about a deterministic workload.</p>
<p><strong>Manipulability.</strong> A Lambda function cannot be convinced to do something outside its code by a malicious user prompt. An AI agent can. If the agent has access to customer data and an attacker can inject a prompt that instructs it to exfiltrate that data, the agent&#8217;s valid credentials become the attack vector. This is prompt injection — and it turns IAM from a defense into a liability if permissions are too broad.</p>
<p><strong>Opacity.</strong> When a Lambda function with <code class="" data-line="">s3:GetObject</code> reads a file, you know exactly why: the code called that API. When an AI agent reads a file, the reason is a chain of model decisions that may not be logged, may not be auditable, and may not be consistent across runs. The audit trail that IAM depends on — who accessed what and why — becomes significantly harder to maintain.</p>
<hr />
<h2 id="the-same-mistakes-same-causes">The Same Mistakes, Same Causes</h2>
<p>Walk through an AI agent deployment today and the anti-patterns are familiar:</p>
<p><strong>Over-provisioned service accounts.</strong> The agent needs to read documents, call an API, maybe update a record. Rather than enumerate exactly which documents, which API endpoints, which records — all of which requires upfront work — the team grants broad access and ships. The access never gets tightened because the agent works and nobody is specifically accountable for its permissions.</p>
<p><strong>Static long-lived credentials.</strong> The agent&#8217;s API keys are in environment variables. They were created six months ago. They&#8217;ve never been rotated. If the agent is compromised or its runtime environment is accessed, those credentials are available — and they&#8217;re broad.</p>
<p><strong>No audit trail.</strong> The agent runs under a shared service account used by other services too. When CloudTrail shows an unexpected S3 read from that account, there is no way to know whether it came from the agent, the other service, or something else entirely.</p>
<p><strong>&#8220;We&#8217;ll tighten it later.&#8221;</strong> The phrase that has followed every IAM explosion since 2012. Later rarely comes while the system is working.</p>
<p>These are not AI-specific failures. They are IAM failures that AI deployments are inheriting because the teams building agents are not always the same teams who spent the last decade cleaning up cloud IAM.</p>
<hr />
<h2 id="what-least-privilege-looks-like-for-an-ai-agent">What Least Privilege Looks Like for an AI Agent</h2>
<p>Applying least privilege to an AI agent requires working backwards from what the agent is actually allowed to do, not what it might conceivably need.</p>
<p><strong>Enumerate the agent&#8217;s actions, not its access.</strong> A document summarization agent needs to read specific document stores, nothing else. An agent that updates records needs write access to specific tables with specific conditions — not the whole database. Define the scope from the action, not from the model&#8217;s capability.</p>
<p><strong>Scope by data sensitivity.</strong> Not all data the agent could access is data the agent should access. An agent answering internal HR policy questions does not need read access to financial records. Separate the data stores. Separate the service accounts. The blast radius of a prompt injection attack is bounded by the permissions of the compromised service account.</p>
<p><strong>Use short-lived credentials.</strong> If your AI agent runtime supports OIDC or workload identity federation — and most production platforms now do — use it. The agent gets a short-lived token scoped to its task. No long-lived key to rotate, no orphaned credential to discover later.</p>
<p><strong>One service account per agent, per environment.</strong> Not a shared service account. Not the same account in staging and production. Each agent identity should be independently auditable, independently revocable.</p>
<pre><code class="" data-line=""># What you want to see in CloudTrail
eventSource: s3.amazonaws.com
eventName: GetObject
userIdentity:
  type: AssumedRole
  arn: arn:aws:sts::123456789:assumed-role/agent-doc-summarizer-prod/session

# What you don&#039;t want to see
userIdentity:
  arn: arn:aws:iam::123456789:user/ai-service-shared
</code></pre>
<p>The first entry tells you which agent, which role, which session. The second tells you nothing useful.</p>
<hr />
<h2 id="the-audit-gap">The Audit Gap</h2>
<p>Here is the problem that doesn&#8217;t have a clean solution yet: even with a properly scoped service account, you know <em>that</em> the agent accessed a resource. You do not know <em>why</em> — what prompt triggered it, what reasoning led to it, what the agent was trying to accomplish.</p>
<p>This is the provenance gap in AI systems. Traditional IAM audit logs capture the action and the identity. For AI agents, you need a third dimension: the reasoning chain that produced the action.</p>
<p>Without that, your audit trail for compliance purposes is incomplete. You can prove that <code class="" data-line="">agent-doc-summarizer-prod</code> read a file. You cannot prove whether it did so because a user asked a legitimate question or because an attacker injected a prompt that caused it to retrieve and expose that file.</p>
<p>Solving this requires logging not just the API call, but the context that produced it — the prompt, the model&#8217;s decision path, the tool call sequence. That logging infrastructure doesn&#8217;t exist out of the box in most AI frameworks today. Building it is one of the open problems in AI security, and it is an IAM problem at its core.</p>
<hr />
<h2 id="framework-alignment">Framework Alignment</h2>
<table>
<thead>
<tr>
<th>Framework</th>
<th>Reference</th>
<th>What It Covers Here</th>
</tr>
</thead>
<tbody>
<tr>
<td>CISSP</td>
<td>Domain 5 — Identity and Access Management</td>
<td>Non-human identity lifecycle for AI agents</td>
</tr>
<tr>
<td>CISSP</td>
<td>Domain 3 — Security Architecture</td>
<td>Scoping agent permissions from action definitions</td>
</tr>
<tr>
<td>ISO 27001:2022</td>
<td>5.15 Access control</td>
<td>Least privilege applied to AI workload identities</td>
</tr>
<tr>
<td>ISO 27001:2022</td>
<td>5.18 Access rights</td>
<td>One service account per agent; revocability requirements</td>
</tr>
<tr>
<td>ISO 42001:2023</td>
<td>6.1 AI risk assessment</td>
<td>Identity and access risks specific to AI systems</td>
</tr>
<tr>
<td>NIST AI RMF</td>
<td>GOVERN 1.2</td>
<td>Accountability structures for AI agent actions</td>
</tr>
<tr>
<td>SOC 2</td>
<td>CC6.1 Logical access controls</td>
<td>Service account scoping for AI workloads</td>
</tr>
<tr>
<td>SOC 2</td>
<td>CC7.2 Anomaly detection</td>
<td>Auditing unexpected access patterns from AI identities</td>
</tr>
</tbody>
</table>
<hr />
<h2 id="key-takeaways">Key Takeaways</h2>
<ul>
<li>AI agents are non-human identities. They inherit every IAM anti-pattern we spent a decade fixing for Lambda functions and EC2 instances — and introduce new ones unique to autonomous, manipulable systems</li>
<li>Least privilege for AI agents works backwards from the agent&#8217;s defined actions, not from what it might conceivably need</li>
<li>Prompt injection turns over-permissioned credentials into an attack vector — the agent&#8217;s valid access becomes the attacker&#8217;s access</li>
<li>One service account per agent, per environment. Short-lived credentials where possible. No shared accounts that obscure audit trails</li>
<li>The provenance gap — knowing why an AI agent took an action, not just that it did — is an open problem that traditional IAM logging doesn&#8217;t solve</li>
</ul>
<h2 id="whats-next">What&#8217;s Next</h2>
<p>In EP02, I&#8217;ll cover the specific IAM boundary that most AI pipelines are missing entirely: the data access layer for RAG systems. When your LLM retrieves context from a vector database, what controls what it can retrieve? The answer — for most teams right now — is nothing. And that&#8217;s a problem that has a concrete fix.</p>
<p><a class="a2a_button_mastodon" href="https://www.addtoany.com/add_to/mastodon?linkurl=https%3A%2F%2Flinuxcent.com%2Fnon-human-identity-ai-agents%2F&amp;linkname=The%20Non-Human%20Identity%20Problem%20Is%20Back" title="Mastodon" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_email" href="https://www.addtoany.com/add_to/email?linkurl=https%3A%2F%2Flinuxcent.com%2Fnon-human-identity-ai-agents%2F&amp;linkname=The%20Non-Human%20Identity%20Problem%20Is%20Back" title="Email" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_whatsapp" href="https://www.addtoany.com/add_to/whatsapp?linkurl=https%3A%2F%2Flinuxcent.com%2Fnon-human-identity-ai-agents%2F&amp;linkname=The%20Non-Human%20Identity%20Problem%20Is%20Back" title="WhatsApp" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_reddit" href="https://www.addtoany.com/add_to/reddit?linkurl=https%3A%2F%2Flinuxcent.com%2Fnon-human-identity-ai-agents%2F&amp;linkname=The%20Non-Human%20Identity%20Problem%20Is%20Back" title="Reddit" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_x" href="https://www.addtoany.com/add_to/x?linkurl=https%3A%2F%2Flinuxcent.com%2Fnon-human-identity-ai-agents%2F&amp;linkname=The%20Non-Human%20Identity%20Problem%20Is%20Back" title="X" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=https%3A%2F%2Flinuxcent.com%2Fnon-human-identity-ai-agents%2F&amp;linkname=The%20Non-Human%20Identity%20Problem%20Is%20Back" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_copy_link" href="https://www.addtoany.com/add_to/copy_link?linkurl=https%3A%2F%2Flinuxcent.com%2Fnon-human-identity-ai-agents%2F&amp;linkname=The%20Non-Human%20Identity%20Problem%20Is%20Back" title="Copy Link" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Flinuxcent.com%2Fnon-human-identity-ai-agents%2F&#038;title=The%20Non-Human%20Identity%20Problem%20Is%20Back" data-a2a-url="https://linuxcent.com/non-human-identity-ai-agents/" data-a2a-title="The Non-Human Identity Problem Is Back"></a></p><p>The post <a href="https://linuxcent.com/non-human-identity-ai-agents/">The Non-Human Identity Problem Is Back</a> appeared first on <a href="https://linuxcent.com">Linuxcent</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://linuxcent.com/non-human-identity-ai-agents/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1905</post-id>	</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Page Caching using Disk: Enhanced 

Served from: linuxcent.com @ 2026-08-25 11:07:50 by W3 Total Cache
-->