Here is the end state worth building toward: no agent in your fleet holds an AWS access key, every agent action against AWS-hosted infrastructure rides on access that expires in minutes, and the identity behind each action traces back to your OIDC/SSO identity provider. The agent never becomes an AWS principal. This post describes that target first, then the path to reach it.
The target end-state
In the finished setup the agent's identity comes from your OIDC/SSO provider, and a gateway in front of your AWS-hosted resources verifies that identity before granting a scoped, short-lived connection. The agent reaches a database on RDS, a cluster on EKS, or an instance through SSM, but it holds no AWS credentials and assumes no AWS role. The gateway authenticates itself to AWS with its own service identity. Nothing durable, and nothing AWS-shaped, lives in the agent. That is the picture to keep in mind while you wire it up.
Keep the two federations straight
The mistake that breaks an OIDC/SSO design for AWS is conflating two different federations:
- The agent to the gateway. The agent's identity is issued by your OIDC/SSO provider, for example Okta or Azure AD. hoop.dev is the relying party: it verifies the token, checks the issuer and audience, and reads group membership. This is the federation the agent participates in.
- The gateway to AWS. hoop.dev's gateway authenticates itself to AWS using its own IAM role. If the gateway runs in EKS, that role can be OIDC-federated through IRSA, so even the gateway holds no static AWS keys. This is hoop.dev acting as its own service identity, not the agent federating into AWS.
The agent never federates into an AWS IAM role and never runs an STS exchange. OIDC/SSO governs who the agent is into the gateway. The gateway, with its own identity, reaches the AWS-hosted resource.
How to reach it
- Make your OIDC/SSO provider the source of agent identity and register hoop.dev as the relying party, so every agent connection carries a verifiable, provider-issued token.
- Front the AWS-hosted resources with hoop.dev and give the gateway a scoped IAM role. Federate that role via OIDC (IRSA) where the gateway runs in EKS, so the gateway holds no static AWS keys either.
- Scope the gateway's role to the exact actions and resource ARNs it needs to reach the resources it fronts. The role decides what the gateway can touch in AWS.
- Write hoop.dev policy against the agent's verified identity. Map the OIDC group to specific connections, granted per session and expiring in minutes. This decides what the agent may reach through the gateway.
- Close direct paths. Make the gateway the only route from the agent to AWS so the verification cannot be bypassed.
The reason this end-state is worth the setup is architectural. Federation moves trust from a stored secret to a verifiable, short-lived token, but only if the verification happens where the agent cannot tamper with it. If the agent holds AWS credentials and runs its own exchange, it can issue itself access on demand and the OIDC/SSO boundary stops meaning anything. Verification has to run at a point outside the agent. hoop.dev is built to be that point: a Layer 7 access gateway that consumes your OIDC/SSO provider as the relying party and reaches AWS-hosted infrastructure with its own service identity. The getting-started docs cover fronting an AWS-hosted resource, and the learn pages go deeper on the access model.
