AWS Identity Center (formerly known as AWS SSO): A Guide to Privilege Escalation and Identity and Access Management
Overview
AWS Identity Center (formerly known as AWS SSO) is one method of providing and managing cloud access to Amazon Web Services accounts within an Organization, resources in AWS accounts, and applications hosted in AWS. As with other methods of access to AWS accounts including IAM Roles and Users, there is the potential for misconfiguration and paths to privilege escalation and other security issues within AWS environments.
In this blog, we will cover methods for privilege escalation with AWS Identity Center, access disruption, and other events that could indicate security issues within an AWS environment. We’ll cover our research and observations on AWS Identity Center from our deep dive and experimentation with AWS Identity Center, with a specific focus on AWS Identity Center and attack vectors introduced by the usage of AWS Identity Center. There are existing methods of privilege escalation that have been covered and researched by the security community such as iam:PassRole , sts:AssumeRole , and iam:SetDefaultPolicyVersion. One such example community post is by Rhino Security Labs.
Part of our research uncovered separate API actions for Console and API which we have disclosed to the AWS Security team as of April 27th, 2023. These separate actions are similar to the changes to AWS Billing, Cost Management, and Account Console permissions with the aws-portal prefix that are to be retired. The console permission is sso-directory:AddMemberToGroup and the API permission is identitystore:CreateGroupMembership.

We will also cover how to find these events with CloudQuery’s new support for AWS CloudTrail Events, which allows for syncing CloudTrail events into a central destination such as PostgreSQL, Snowflake, or other data destinations of your choice. Stay tuned for future updates and improvements on CloudQuery as we continue to iterate on CloudTrail Events support and other related features.
Introduction to AWS Identity Center
AWS Identity Center has requirements for use including using AWS Organizations for managing AWS Accounts.
Identity Center must be run from either the Organizational management account or a delegated administrator account. For more information about delegated administrator accounts, see our blog post and research on delegated administrator. If you're setting up Identity Center for the first time with Google Workspace as your identity provider, see our step-by-step Google Workspace IdP setup guide.
Since usage of AWS Identity Center requires usage of AWS Organizations and can only be managed from either the organizational management account or delegated administrator account, privilege escalation with AWS Identity Center requires access to whichever account is used for management of AWS Identity Center: either the organizational management account or the delegated administrator account used for AWS Identity Center.
Note: it is still possible to escalate privilege in member accounts without AWS Identity Center using direct modification of the IAM Roles and Policies tied to AWS Identity Center such as iam:AttachRolePolicy.
An example Role Trust Policy for an Identity Center created IAM Role arn:aws:iam::123412341234:role/aws-reserved/sso.amazonaws.com/eu-central-1/AWSReservedSSO_AWSReadOnlyAccess_1111111111111111 in a target account looks as follows.
Dual Authorization
For IAM Identity Center, certain APIs support dual authorization. AWS released newer API operations after October 15th, 2020. For any IAM Identity Center instances created before October 15th, 2020, both API actions can be used. Instances created after October 15th, 2020 use the newer API actions.
For example, to add an inline policy, both PutPermissionPolicy and PutInlinePolicyToPermissionSet could work.

Dual Authorization Table Provided by AWS
Privilege Escalation with AWS Identity Center (SSO)
To modify and change access and permissions in AWS Identity Center, there are multiple methods including modifying permission sets by adding or removing IAM policies, modifying a user's group membership, and linking permission sets to AWS accounts within the organization with account assignments. These methods of modifying and changing access and permissions can be used to escalate privilege within an AWS Organization and the accounts within the organization. In some cases, malicious or unintentional actors can either escalate their own permissions and access or change other permissions and access that can lead to security vulnerabilities and misconfigurations with access via AWS Identity Center.
Identity Center has multiple service prefixes including:
ssoservice prefix for Identity Center actions.identity-storeservice prefix for Identity Store actions.sso-directoryservice prefix for IAM Identity Center Directory actions.identitystore-authservice prefix for Identity Store Auth actions.identity-syncservice prefix for Identity Sync actions.
In this research, we focused on sso and identity-store actions. Note: these will look different in CLI as sso-admin and sso are both service prefixes.
1. Permission Set Modification
2. Adding Permissions
Observations
3. Scope Change via Account Assignment
4. Membership Modification (User to Group Association)
Permission Modification and Access Disruption
Security of an AWS environment can also be disrupted with loss of access or improper loss of privileges. Along with earlier Privilege Escalation actions, the following actions can be used to revoke and remove access and privilege.
sso:DeletePermissionSetsso:PutPermissionsBoundaryToPermissionSetsso:DeleteAccountAssignment
Examples of permission modification and access disruption include:
- Attaching a Managed Policy with Deny Statements that override allowed permissions already allowed by other IAM Policies.
- Associating a Permission Boundary with an effective boundary that limits the allowed permissions from IAM policies.
- Removing access to an account by deleting an account assignment.
- Disrupting access by deleting a permission set.
Security Detection: Identifying Identity Center Actions in CloudTrail Logs and How CloudQuery can help
AWS CloudTrail offers 90 days of logging to identify API calls made in AWS accounts. While it’s possible to search directly in CloudTrail for the last 90 days of activity, we’ll show how to identify Identity Center Actions in CloudTrail logs synced with CloudQuery.
We recently added support for CloudTrail Events and Incremental Tables with CloudQuery as we saw useful use cases for syncing CloudTrail events to the destination of your choice.
CloudQuery Setup and Configuration
To get setup, I have CloudQuery configured to sync from AWS to PostgreSQL.
For more detailed instructions on how to configure CloudQuery to sync from AWS to PostgreSQL, please follow our guide here.
An example configuration file for AWS as a source is as follows:
Once the configuration files are set, we can run the command cloudquery sync aws.yml postgres.yml. Keep in mind that this sync could take some time given the amount of data in CloudTrail Events. The account we sync is the delegated administrator account for AWS Identity Center in our example organization.
Exploring CloudTrail Events
Now that CloudQuery is set and CloudTrail events are synced, we can run queries on our event logs.
Let’s look for scope change via account assignment or any permission set provisioning with the following query.
We can also look for membership modification with the below query:
With AWS data synced to our data destination, we can now write advanced queries and enrich tables with information from other tables such as IAM information, resource information, or other relevant information.
Conclusion
AWS Identity Center can be instrumental in managing access to multiple AWS accounts within an AWS Organization. With AWS Identity Center, there are multiple methods of privilege escalation and access disruption. We’ve now covered the complexity around AWS Identity Center, various observations, and the different models of privilege escalation.
Stay tuned for more updates in CloudQuery including our coverage of CloudTrail Events as we continue working on our product and solving for customer use cases.
Want to see CloudQuery in action? Schedule a demo with our team or check out the platform documentation to learn more.
Want help getting started? Join the CloudQuery community to connect with other users and experts, or message our team directly here if you have any questions.
References and Useful Links
Try CloudQuery yourself
Self-hosted, open source, and free to start. Or schedule a demo to see the managed version.


