Intern Training
September 21, 2026
September 21, 2026
Over-privileged accounts are one of the most common IAM risks in Google Cloud. The fix is not simply removing permissions—it is identifying excessive access, understanding what each identity actually needs, and continuously enforcing least privilege.
A user who only needs to deploy an application may not need project-wide administrative permissions. A service account created for one workload may not need access to every resource in a project.
Yet permissions often accumulate over time.
People change roles. Projects expand. Temporary access becomes permanent. Service accounts get reused. Broad roles are granted because they are faster than creating precise permissions.
Eventually, the question becomes difficult to answer:
Who can access what in our Google Cloud environment, and do they actually need that access?
That is where a proper GCP IAM cleanup should begin.
IAM permissions rarely become excessive overnight.
A typical environment evolves like this:
The result is privilege accumulation.
This creates two problems.
First, there is a larger security impact if an account is compromised.
Second, it becomes increasingly difficult for security and cloud teams to understand the actual access model.
The goal of IAM cleanup is therefore not to make permissions as restrictive as possible. It is to make them appropriate for the identity’s actual responsibilities.
Do not begin by manually reviewing every permission in a large GCP organization.
Prioritize identities that could cause the greatest impact if compromised.
Start with:
This gives security teams a risk-based starting point.
A user with access to a single development resource is very different from an identity capable of modifying production infrastructure across multiple projects.
One reason GCP IAM cleanup can become complicated is that permissions can be inherited.
Google Cloud resources are organized hierarchically:
Organization → Folders → Projects → Resources
IAM policies can be applied at different levels, and permissions granted at a higher level can flow down to resources beneath it.
This means a user might appear to have access to a resource without having been directly granted a role on that resource.
For example, a role granted at the folder level may provide permissions across multiple projects underneath that folder.
Looking only at project-level assignments can produce an incomplete picture.
When reviewing access, determine:
Always review effective access, not just direct role assignments.
One of the most important IAM cleanup activities is identifying broad roles that provide more permissions than an identity actually needs.
Google Cloud provides predefined roles designed for specific services and responsibilities.
For example, someone managing Compute Engine resources does not necessarily need broad project-level permissions across unrelated services.
Where appropriate, replace broad access with roles that match the person’s actual responsibilities.
The progression should generally be:
Broad role → service-specific role → resource-level access where practical
This reduces unnecessary privilege without preventing legitimate work.
Google Cloud IAM includes basic roles such as:
These roles can provide broad permissions across a project.
They may be convenient, but broad permissions make access harder to control precisely.
If an employee only needs to manage a particular service, granting a broad project-level role can create unnecessary exposure.
Identify users and groups with:
Then determine whether their responsibilities can be covered by more specific predefined or custom roles.
Do not remove access blindly.
First understand what the identity actually does.
Service accounts require special attention because they represent applications and workloads rather than people.
A service account may have been created for one application but later reused by multiple workloads.
Over time, its permissions can expand significantly.
This creates a potentially serious problem.
If the service account credentials are compromised, the attacker may inherit all of the permissions assigned to that account.
A better architecture is usually to give workloads dedicated service accounts with only the permissions they require.
One workload should not automatically inherit the permissions of another workload.
Unused identities create unnecessary attack paths.
An employee may leave the organization while their access remains active. A contractor may finish a project but retain permissions. A service account may remain enabled after the application it supported has been retired.
Regularly identify:
Then remove or disable access according to your organization’s identity lifecycle process.
The most secure permission for an identity that no longer needs access is no permission at all.
IAM cleanup should not focus only on individual users.
Groups can provide access to large numbers of resources.
A user may appear to have minimal direct permissions while receiving significant access through multiple groups.
Review:
This is especially important in larger organizations where access is managed centrally through groups.
The question should be:
What can this identity access after all direct and inherited group memberships are considered?
Google Cloud provides IAM Recommender to help identify permissions that may not have been used and recommend more appropriate roles.
This can be useful during an IAM cleanup because manually determining unused permissions across a large environment can be difficult.
However, recommendations should be treated as input to an access review—not as automatic permission-removal instructions.
An unused permission does not necessarily mean an unnecessary permission.
For example, an administrator may legitimately use a permission only during rare operational incidents.
Before removing access, validate:
Custom IAM roles can provide highly precise access.
They can be useful when predefined roles are too broad for a particular responsibility.
However, custom roles introduce another management responsibility.
Someone must maintain them as Google Cloud services and organizational requirements evolve.
Use custom roles when they provide a clear security or operational benefit.
Do not create hundreds of highly fragmented roles that become impossible to maintain.
A manageable IAM model is usually better than an extremely granular one that nobody understands.
Third-party users and external identities deserve additional attention.
Review identities belonging to:
Ask:
Temporary access should have a defined lifecycle rather than becoming permanent by default.
A common IAM mistake is granting a role at a higher level than necessary.
For example, if an identity only needs access to one project, granting access at the organization or folder level can unnecessarily expand its permissions.
During cleanup, look for opportunities to move permissions downward:
Organization → Folder → Project → Resource
The closer access is granted to the actual resource requirement, the easier it is to limit unintended access.
That does not mean every permission must be granted at the resource level.
The appropriate scope depends on how the organization operates.
A structured cleanup can follow these steps.
Create an inventory of:
Prioritize:
Review direct, inherited, and group-based permissions.
Do not rely solely on direct IAM assignments.
For every high-risk identity, ask:
What does this identity actually need to do?
Then compare that requirement with its current permissions.
Reduce broad permissions where practical.
Replace them with more appropriate predefined or custom roles.
Disable stale accounts and remove unnecessary group memberships.
Before changing service account permissions, confirm that production workloads will continue to function.
IAM cleanup should not become an avoidable production incident.
IAM cleanup is not a one-time project.
New users, applications, projects, and permissions are continuously introduced.
Establish regular reviews and alerts for high-risk permission changes.
This is convenient during development but creates excessive permissions and a larger blast radius.
If the service account is compromised, every application using it may be affected.
Dedicated service identities provide better isolation.
A user may receive significant access from an organization, folder, or group-level policy.
Direct project assignments do not tell the whole story.
An apparently unused permission may support a rare but important operational task.
Validate before removing it.
Cloud environments change too quickly for annual reviews to provide sufficient visibility.
High-risk access should be monitored continuously and reviewed regularly.
Before considering an IAM cleanup complete, verify:
Excessive permissions are a major risk because a compromised user or service account can potentially access or modify more resources than required for its role.
Start by reviewing high-level IAM roles, service accounts, external identities, group memberships, and inherited permissions. IAM Recommender can also help identify permissions that may not be required based on observed usage.
Not automatically. First determine why each role exists and whether the responsibility requires it. Where possible, replace broad roles with more specific predefined or custom roles.
High-risk access should be monitored continuously and reviewed regularly. The appropriate review frequency depends on the organization’s size, risk profile, compliance requirements, and rate of change.
Yes. Service accounts should be treated as first-class identities during an IAM review. Their permissions can provide applications with significant access to cloud resources.
Cleaning up GCP IAM is not about creating the most restrictive environment possible.
It is about creating an access model where every identity has a clear reason for the permissions it holds.
Start with the identities that have the greatest potential impact. Review inherited and group-based access, reduce broad roles, isolate service accounts, remove stale identities, and continuously monitor changes.
Most importantly, measure effective access rather than simply counting IAM roles.
An identity with five carefully scoped permissions may be safer than an identity with one broad role.
The objective is simple:
Every user, group, and workload should have the access it needs—and no more.