Check ID:
Provider: GCP
Service:
Severity: MEDIUM
Categories:
Resource type:
iam_role_sa_enforce_separation_of_dutiesProvider: GCP
Service:
iamSeverity: MEDIUM
Categories:
identity-accessResource type:
cloudresourcemanager.googleapis.com/ProjectWhat this check verifies
Google Cloud IAM policies are evaluated to find principals granted bothroles/iam.serviceAccountAdmin and roles/iam.serviceAccountUser within a project. Service-account related roles are expected to be segregated so that service account lifecycle management is distinct from their use or impersonation.
Risk
With both roles, a principal can create or modify service accounts and then use or attach them to workloads, enabling unchecked impersonation. This endangers confidentiality (expanded data access), integrity (policy/workload changes), and availability (persistence or sabotage via privileged automation).Recommendation
Enforce separation of duties: assignroles/iam.serviceAccountAdmin for lifecycle tasks and roles/iam.serviceAccountUser for attach/impersonate, never both to one principal.
- Apply least privilege with narrow scope and conditions
- Use temporary elevation/approvals
- Regularly audit IAM bindings and logs
Remediation
- Terraform
- Dashboard steps
References
- https://www.trendmicro.com/trendaivisiononecloudriskmanagement/knowledge-base/gcp/CloudIAM/enforce-separation-of-duties-for-service-account-roles.html
- https://docs.cloud.google.com/iam/docs/service-account-overview
- https://cloud.google.com/iam/docs/understanding-roles
Where this check fires
This check runs on every scheduled scan against your GCP account. Findings appear at Cloud Security → Findings filterable byCheck ID = iam_role_sa_enforce_separation_of_duties. To re-evaluate after a fix, hit Run now on the account’s schedule under Cloud Security → Schedules — the next scan re-checks this control and marks the finding fixed or keeps it persistent.
← Back to GCP checks