Cloud IAM and least privilege for audits
Auditors test cloud access three ways: who can reach production today, how a new person got access, and how a departing one lost it. Federated identity answers all three with one system.
Cloud IAM that passes an audit has four properties. People sign in through one identity provider with MFA, never with cloud-native users or long-lived keys. Roles map to job functions, not individuals. Standing administrator access is rare and logged. And someone reviews the list every quarter and signs it. Everything else is detail on those four.
Why federate cloud access to one identity provider?
Federation means people exist only in your identity provider, such as Okta, Microsoft Entra ID or Google Workspace, and the cloud trusts it. Removing someone there removes their cloud access at the same moment. That turns offboarding, the most commonly failed access control, into a single step with a single record. It also puts MFA enforcement in one policy instead of one per account.
| Provider | Federation service | What to remove |
|---|---|---|
| AWS | IAM Identity Center with permission sets | IAM users for people, access keys for people |
| Azure | Microsoft Entra ID, natively | Standing Owner assignments, stale guests |
| Google Cloud | Cloud Identity or Workspace, optionally federated from another IdP | Basic roles on people, service account keys |
Designing roles an auditor will accept
Least privilege does not mean every engineer gets a bespoke policy. It means access follows a small set of roles that each match a job, and nobody holds a role they do not need. A workable set for a 20 to 100 person SaaS company:
- Read-only production. Most engineers. Enough to debug, not enough to change.
- Production operator. On-call and platform engineers. Scoped write access to the services they operate.
- Administrator. Two or three people, activated when needed rather than held permanently.
- Break glass. Emergency access, stored offline, alerting on every use.
- Non-production write. Everyone who ships code, confined to development and staging accounts or subscriptions.
Production changes should come from the deployment pipeline's identity, not from people. That single decision makes both CC6 and CC8 of SOC 2 simpler, because human write access to production becomes the exception you log.
Privileged access
Standing administrator access is the finding auditors raise most often after missing MFA. The fix is just-in-time elevation: an engineer requests a role for a period, often with an approval or a ticket number, and the activation is logged.
- AWS
- Temporary elevated access with IAM Identity Center, or a separate admin permission set that only a small group can assume, with CloudTrail alerts on its use.
- Azure
- Privileged Identity Management with eligible assignments, activation justification and optional approval.
- Google Cloud
- Privileged Access Manager for time-bound grants, or IAM conditions with expiry on role bindings.
Service and workload identities
Machines need access too, and their credentials are where secrets leak. Prefer identities the platform manages and rotates: IAM roles for EC2, ECS and Lambda; managed identities on Azure; attached service accounts on Google Cloud. For CI/CD, use OIDC federation from GitHub Actions or GitLab to the cloud instead of stored keys. Keep an inventory of any static key that remains, with an owner and a rotation date. Secrets management covers the rest.
The access review
This is the control auditors sample every time. Each quarter, export who has which role in every production account, subscription or project, have the owner of each system confirm or revoke each line, record the date and the reviewer, and keep proof that revocations happened.
- Export assignments from the cloud and from the identity provider groups that grant them.
- Send each system owner their list. Ask for keep or remove on every line.
- Remove what was flagged within a stated number of days.
- Save the export, the decisions, the reviewer name, the date and the removal evidence together.
Microsoft Entra ID access reviews do this natively. On AWS and Google Cloud, a spreadsheet signed off by email or ticket is acceptable evidence, and it is what most first audits use.
Evidence summary
| Control | Evidence |
|---|---|
| MFA for all human access | Identity provider MFA policy, list of exemptions with reasons |
| No shared or root credentials in use | Root or global admin sign-in history, credential report |
| Role-based access | Role definitions and group-to-role mapping |
| Provisioning by request | Sampled access requests with approval |
| Timely deprovisioning | Sampled leavers with removal date against termination date |
| Periodic review | Quarterly review packages as above |
What does least privilege mean in AWS, Azure or GCP?
Each person and workload holds only the permissions its job needs, through roles rather than individual grants, with elevated access time-bound and logged. In practice it means read-only access for most people, pipeline identities for production changes, and a small group who can request elevated access.
How often should cloud access be reviewed for SOC 2?
Quarterly is the norm for production access and privileged roles. Some companies review lower-risk access semi-annually. Whatever you pick, write it in the access control policy and do it on that schedule, because the auditor tests against your stated frequency.
Are IAM users with MFA acceptable to an auditor?
They can pass, but they make offboarding a manual step per account and leave long-lived keys in circulation. Federation is the cleaner answer and the one most auditors expect to see at a company that uses an identity provider for everything else.
Want your cloud access cleaned up before the audit?
Firms in the network restructure IAM and set up the review cycle.
Get matched