We let our cloud agents query prod (with OIDC, not secrets)
j / k
|
Down or up a comment |
h / l
|
Previous or next link |
?
|
This help |
OIDC is good when the end user needs short-term access validation and authorization. The claim and responsibilities of what they do are on that user. Now that you have agents involved, the user can just shrug it off, saying 'oh the AI went rogue'. You probably need a separate role for agent specific tasks that severely limits the access specific to your workload, but that is a work of its own.
They're mapping the identity back to "agent" instead of "person". With the optional ability for the agent to present an "agent:person" combo in cases where it was triggered by a person.
Some quotes that imply but don't actually technically clarify what I mean:
> we now had a way to treat each cloud agent session as its own identity
> Once the human approves, access is scoped to the cloud agent session ID and the specific database that was requested.
> Using OIDC, cloud agents can request and be approved for short-lived access as they would with databases above. Requests are always logged in Formal and attributed to both the cloud agent and the engineer that launched it.
It sounds like they're not just attesting that the agent is the person, they're always scoping to a new combined identity.
So there's no confusion over whether it was a person, an agent, or an agent started by a person. (however where you go from there for culpability is a different question...)
But it doesn't seem like there's a case where a person did a thing (with their own credentials) and can then point a finger at an agent as say "oh it went rogue".
We then have the ability to enforce (extremely fine grained) policies based on that combined identity, plus any of the claims in the OIDC token (e.g., the repo URL), plus any of the data on the protocol itself (e.g., block non-read-only queries; redact anything sensitive).
https://docs.formal.ai/docs/guides/policies/introduction
I am saying it’s a slippery slope and OIDC was not necessarily designed for it.
So sure - it wasn't designed with agents directly in mind, but it's supported workload identity federation for a while (and is used in this manner for lots of big players - github, GCP, AWS, Azure, etc...)
This just seems to extend that concept slightly to allowing the workload identity to be generated on the fly based on user/agent combinations, with a HITL addition to approve the identity being generated and grant it a subset of permissions.
---
What you're saying here is different than what you implied in the first comment.
There is a real and meaningful difference between
1. A user can blame a rogue agent for actions they [the user] performed
2. An agent itself went rogue
So sure - #2 is still a risk, and one they'd have to mitigate with the security controls they talked about (minimal access, temporary grants, HITL, etc). Frankly - #2 is always a risk. That's what "agents" are (both the bot and the fleshy kind). It's also why we have logging and visibility tools that should be recording what was done, by whom, and for what reason, along with robust backups. You can't really close this hole, you accept it, monitor it, and hold the agent to account (and again - I'm with you on discussing culpability for bots and what that means in the legal sense. Ex - do we charge the person who introduced the bot, the company running it, the party that injected bad context, etc...?)
But #1 is not a thing a person can do - they can't take malicious actions and then blame a rogue agent.
Pedantry alert: Private keys are secrets.
For us, most of our MCPs have non-undoable actions disabled. This is to stop agents writing a tool that recursively doing something silly.
We then have the ability to enforce (extremely fine grained) policies based on that combined identity, plus any of the claims in the OIDC token (e.g., the repo URL), plus any of the data on the protocol itself (e.g., block non-read-only queries; redact anything sensitive).
https://docs.formal.ai/docs/guides/policies/introduction