Ingestion Configuration
Perform the following setup for each AWS account for which Serval will ingest roles and facilitate access.AWS Account Ingestion Role configuration
AWS Account Ingestion Role configuration
- Follow the guide to add give Serval access to an AWS role in your account.
-
Once the role is created, navigate to permissions and select “Create inline policy”
.png?fit=max&auto=format&n=muF_YomC37fBCG6k&q=85&s=0b4f8b68af4cfe18bb1b30bd4dc5be9a)
-
Add the following permission policy. These permissions are required to be able to properly ingest all the data we require:
Facilitating Access to Specific AWS Roles
Create a new OIDC application
Create a new OIDC application
Any OIDC-compliant identity provider can be used. Select your provider below for specific instructions.
- Okta
- Google
- Visit the Okta Admin portal and navigate to Applications → Create App Integration.
- Select OIDC - OpenID Connect as the sign-in method and Web Application as the application type.
- Configure the sign-in redirect URI to point to
https://svflow-oidc.api.serval.com/oidc/auth/callback. - Configure assignment to control which users can authenticate.
- Once the application is saved, note the Client ID and Client Secret.
- In Serval, navigate to the AWS application instance and open the Settings tab.
- Under OIDC Provider, click Configure.
- Enter the Client ID, Client Secret, and OIDC Issuer URL.
For Okta, the OIDC issuer URL should be
https://<your-okta-domain>.okta.com (e.g. https://acme.okta.com).Add the OIDC application as an identity provider in AWS
Add the OIDC application as an identity provider in AWS
Perform this step for each AWS account that has roles you want accessible via Serval.
- In the AWS Console, navigate to IAM → Identity Providers → Add Provider.
- Select OpenID Connect as the provider type.
- For Provider URL, enter your OIDC issuer URL:
- Okta:
https://<your-okta-domain>.okta.com - Google:
https://accounts.google.com
- Okta:
- For Audience, enter the Client ID of the OIDC application you created in the previous step.
- Click Add provider.
Configure AWS roles so that Serval can grant temporary access to them
Configure AWS roles so that Serval can grant temporary access to them
For each IAM role you want users to be able to request access to through Serval:Replace the placeholder values:
- Tag the role — Add a tag with the key
serval(the value can be empty). Serval only ingests roles with this tag during resource sync. - Attach permission policies — Add any AWS policies that define what the role can do when assumed by a user.
- Update the trust policy — Replace or add the following statement to allow Serval to assume the role via OIDC:
ACCOUNT_ID— The ID of the AWS account the role belongs to.IDP_ISSUER_URL— The provider URL configured in the previous step (e.g.acme.okta.comoraccounts.google.com). Do not includehttps://.SERVAL_OIDC_APP_CLIENT_ID— The Client ID of the OIDC application.
- Okta example
- Google example
How AWS role sessions work
When a user is granted access to an AWS role through Serval, temporary credentials are issued via AWS STS (AssumeRoleWithWebIdentity). These credentials have a fixed expiration set at the time they are issued — AWS does not support revoking STS credentials once they have been created.
Session duration is determined by the shorter of:
- The role’s Maximum session duration setting in AWS (defaults to 1 hour, configurable up to 12 hours)
- The remaining time on the user’s access request in Serval

