Prepare and test your skills
Prepare and test your skills
Managing the privileged access lifecycle means granting elevated permissions only when needed, keeping them active for a defined window, and then reviewing and revoking them. In Google Cloud, Privileged Access Manager (PAM) (opens in a new tab) provides managed just-in-time elevation with approvals and history, while Identity and Access Management (IAM) (opens in a new tab) Conditions, expiring group membership, and service account impersonation provide building blocks for temporary access. Cloud Audit Logs (opens in a new tab) and IAM Recommender close the loop by recording who used elevation and identifying permanent grants that should become temporary.
Privileged Access Manager (PAM) is the managed service for temporary privilege elevation for selected principals. An administrator creates an entitlement that defines who can request which roles on which resources, then a requester creates a time-bound grant with a business justification and optional approvals. After expiry, PAM records when the roles were active, which resources were accessible, the justification, and who approved the grant, so standing access can stay at least privilege.
PAM supports least-privilege patterns that manual bindings cannot enforce consistently:
The grant lifecycle moves through ordered states:
Because PAM tracks the transition from requested to approved to active to expired, auditors can reconstruct who had access to what and when without parsing raw policy versions.
IAM Conditions are attribute-based expressions attached to allow-policy bindings that grant expiring access to Google Cloud resources. A binding grants a role to a principal only while its time condition is true, and IAM evaluates the condition on every request from the principal to the resource. Traffic that arrives after expiry is denied even though the binding text remains in the policy.
Expired conditional bindings are not removed automatically, so administrators must periodically remove them to avoid exceeding the maximum allow-policy size. IAM Conditions alone do not record why access was granted, so teams must build their own process if justification capture is required. Deny policies do not support time-based conditions, so a condition cannot temporarily exempt a user from a deny rule.
The open-source Just-In-Time Access application builds on IAM Conditions and runs on App Engine or Cloud Run to add the workflow that raw conditions lack. Users can search for roles they are eligible to activate and must provide justifications before activation, and the application replaces the existing conditional binding instead of creating new bindings to control policy size. The application cannot grant access when the principal has been explicitly denied by a deny policy.
Delegated elevation with Google groups and service account impersonation separates who holds the privilege from who can use it. An administrator grants a privileged role such as roles/compute.admin to a dedicated service account, then grants a Google group the ability to impersonate that account with roles/iam.serviceAccountTokenCreator plus roles/serviceusage.serviceUsageConsumer on the project. A user gains elevation only while a member of the group, then impersonates the service account to act with the service account's permissions.
The setup depends on short-lived credentials and expiring membership to keep the window tight. Users with roles/iam.serviceAccountTokenCreator can mint short-lived OAuth 2.0 access tokens for the service account, while users with roles/iam.serviceAccountOpenIdTokenCreator can mint short-lived OpenID Connect (OIDC) ID tokens. Group membership can expire automatically through the Google Groups API membership expiration defined by ExpiryDetail, so access ends without manual removal. As with IAM Conditions, groups and impersonation do not record justifications by themselves, and administrators should consider exempting the elevation group or service account from relevant deny rules to avoid unexpected denials.
Cloud Audit Logs is the auditing plane that records privileged access requests and access patterns for review and anomaly detection. Administrators enable ADMIN_READ, DATA_READ, and DATA_WRITE audit log types for services such as compute.googleapis.com by updating the project's IAM policy with an auditConfigs block, then export the logs for retention. The log flow runs from the Google Cloud API to Cloud Audit Logs to long-term storage and analysis, so every elevation, impersonation, and data access leaves a trail that links principal, resource, justification, and approver where PAM is used.
IAM Recommender, part of Policy Intelligence, analyzes usage to identify unused and excessive role grants and recommends least-privilege replacements. Administrators review and apply role recommendations to remove standing privilege, and instead of only revoking an excessive grant, they can convert it into a PAM entitlement for on-demand use. The operating rule is that privileged access must either expire automatically through PAM grants, IAM Conditions, or expiring group membership, or be reviewed periodically and revoked when no longer justified.
Context and authentication boundaries constrain where and how privileged access works on every request. Access Context Manager defines access levels, such as requiring the corporate network, that enforce attribute-based control when privileged access is used. Chrome Enterprise Premium is a user-centric control that evaluates attributes such as IP-based access or certificate-based access for mutual TLS on every user API request and rejects traffic with compromised credentials that fails the conditions. VPC Service Controls is a resource-centric control that defines perimeters within which resources can communicate for all user and service account identities.
Strong authentication and key hygiene reduce what stolen credentials can do inside that perimeter. Administrators enable 2-Step Verification for all privileged users, enforce OS Login with 2-Step Verification for Compute Engine SSH so a password or security key is required beyond an OAuth token, and restrict downloaded service account keys by enforcing the constraints/iam.disableServiceAccountKeyCreation and constraints/iam.disableServiceAccountKeyUpload organization policy constraints. Together, least-privilege roles, just-in-time elevation, context checks on every request, and continuous audit keep elevated power temporary, observable, and revocable.
The choice of elevation option depends on justification, expiry, and maintenance tradeoffs. PAM provides built-in workflow and history, while conditions, groups, and impersonation require custom tooling and cleanup.
| Elevation option | Justification and approval | Expiry mechanism | Policy maintenance tradeoff |
|---|---|---|---|
| Privileged Access Manager (PAM) | Built-in justification, approvals, and grant history | Time-bound grants that expire or can be withdrawn | Managed lifecycle with audit of who, what, when, and approver |
| IAM Conditions | No built-in justification; requires custom tooling | Time condition evaluated on every request | Expired bindings remain and must be periodically removed |
| Google groups | No built-in justification; requires custom tooling | Expiring group membership through Groups API | Add and remove members; consider deny-rule exemptions |
| Service account impersonation | No built-in justification; requires custom tooling | Short-lived tokens minted with Token Creator roles | Service account holds privilege; group holds impersonation right |
Exam tip: Expired IAM Conditions remain in the allow policy until removed, and deny policies never support time-based exemptions.
Separation of duties in Google Cloud means no single identity holds both the authority to grant sensitive access and the ability to exercise that access. Identity and Access Management (IAM) (opens in a new tab) enforces this by binding a principal such as a user or group to a role containing specific permissions at a defined scope, and every request is then checked against that binding. A conflict occurs when one principal accumulates grant permissions like resourcemanager.projects.setIamPolicy together with use permissions like chronicle.dashboards.edit, allowing that principal to approve its own access.
Grant authority in IAM is the ability to create or change allow policies, while resource use is the ability to call an API or open a feature with an existing grant. Project IAM Admin (opens in a new tab) (roles/resourcemanager.projectIamAdmin) provides grant authority to assign and modify IAM role bindings for a project, while Chronicle API Admin (roles/chronicle.admin) provides full use of the application and API services including global settings. Security Admin (roles/iam.securityAdmin) provides a narrower grant path for assigning data-access scopes without full project IAM administration.
Access enforcement follows an ordered check that keeps grant and use distinct:
| Grant and use role | Grant power | Use power |
|---|---|---|
Project IAM Admin (roles/resourcemanager.projectIamAdmin) | Assigns and modifies IAM role bindings for the project | Does not by itself grant data or feature use; must be paired with conditions in shared projects |
Security Admin (roles/iam.securityAdmin) | Assigns data-access scopes to users | Does not grant full IAM policy administration |
Chronicle API Admin (roles/chronicle.admin) | Configures data role-based access control when paired with Role Viewer | Full access to application and API services, including global settings |
Separation requires that the onboarding administrator who holds grant authority does not also hold broad use roles, and that data-access configuration splits duties further by requiring Role Viewer (roles/iam.roleViewer) plus a grant role to view roles before assigning scopes.
IAM scope determines where separation applies, and policies defined at the Google Cloud project level keep privileged grants contained to one bound instance. In a dedicated project, Project IAM Admin administers only that instance, while in a shared project that also hosts other Google Cloud services, the grant must carry IAM conditions that limit the administrator to modifying only specific resource types. IAM conditions on the allow policy therefore preserve separation by preventing a feature administrator from escalating into unrelated project resources.
All privileged grants must be re-verified after scope changes, because a missing binding or an incorrect role produces authentication failures that trace to the linked project policy rather than to the identity provider. The dependency is strict: the service depends on the project IAM policy to authorize the principal, so narrowing the scope narrows the effective privilege.
Least-privilege binding design prevents one principal from accumulating conflicting duties through oversized predefined roles. Predefined roles map one-to-one to API methods using the format SERVICE.FEATURE.ACTION, for example chronicle.dashboards.edit where chronicle is the service, dashboards is the feature, and edit is the action, so custom roles can be built when no predefined role matches the exact duty split. Bindings flow from the IAM policy to the principal to the resource, and narrowing any link narrows the effective privilege.
Apply the following controls when creating policies that support deployment requirements:
Super-admin privilege breaks normal separation because Google Workspace super admins implicitly hold permission to modify the IAM policy of the organization node. A super admin can assign the organization administrator role or any other role to themselves and can delete the Cloud Identity or Google Workspace account, its organization, and all resources, so every super admin must be treated as having full access to all resources in the organization. Separation therefore depends on keeping everyday administration out of super-admin accounts and on isolating last-resort access from normal joiner, mover, and leaver lifecycles.
Emergency access preserves continuity without creating standing conflicts when it is isolated in a dedicated organizational unit (OU), exempted from single sign-on, and protected with Fast IDentity Online (FIDO) security keys for 2-Step Verification. Redundancy requires a minimum of two and a maximum of five emergency access users per Cloud Identity or Google Workspace account, because one account is a single point of failure while too many highly privileged accounts widen exposure. Persistent credentials require parallel constraints through the constraints/iam.disableServiceAccountKeyCreation and constraints/iam.disableServiceAccountKeyUpload organization policy constraints, plus OS Login with 2-Step Verification for Secure Shell (SSH) access to Compute Engine, so compromised OAuth tokens or copied key files alone do not defeat the duty split.
Exam tip: A Google Workspace super admin can modify the organization IAM policy even when Google Cloud duties appear delegated, so reduce super admins to a minimum and use pre-built or custom administrator roles for daily work.
Cloud Audit Logs (opens in a new tab) record every policy change that could reunite grant and use powers in one principal. The SetIamPolicy operation in Logs Explorer shows which administrator changed which binding, when the change occurred, and whether automation or a recent edit removed required access. Security operations teams review these logs to identify privilege escalation, restore correct group membership in IAM and Admin > IAM, and confirm that only project administrators changed the policy.
Continuous review of role recommendations, group membership, and condition-scoped grants keeps the original separation intact as teams, projects, and compliance requirements change. Without this review loop, incremental grants slowly reunite duties that were originally separated.
Principle-based role definitions in Identity and Access Management (IAM) grant only the permissions a job function requires at the smallest resource scope. An IAM policy binds a principal, such as a Google group, user, or service account, to a role at the project level, and each role contains granular permissions that authorize both console features and the matching API methods. Designing from least privilege reduces standing privileged access and makes separation of duties enforceable through role boundaries, conditions, and review.
Least privilege in IAM means granting users only the roles required to accomplish a task at the smallest scope, then removing unused or excessive grants. Role design starts from the required actions and resources, applies IAM conditions and attribute checks where privileged use must be constrained, and ensures privileged access either expires automatically or is reviewed periodically. Policy Intelligence role recommendations help identify unused and excessive roles so policies can be tightened without breaking operations.
Privileged access is further constrained by authentication and context controls that sit outside the role itself:
SetIamPolicy changes that alter privileged bindings.Predefined roles are Google-maintained collections of permissions for a common job function, while custom roles are organization-defined collections built by combining individual granular permissions. A permission name describes its exact authorization in the form SERVICE.FEATURE.ACTION, for example chronicle.dashboards.edit authorizes the edit action on the dashboards feature of the chronicle service. Each permission maps one-to-one to an API resource and method, and a single IAM policy therefore controls both web-interface features and API calls.
The following comparison guides when to use each role type for privileged access:
| Role type | How permissions are set | Choose when |
|---|---|---|
| Predefined role | Google defines and maintains the permission set, such as roles/compute.admin or roles/chronicle.admin | The job function matches the predefined permission set and operational risk is acceptable |
| Custom role | Organization selects granular permissions to include or exclude | Predefined roles are too broad or too narrow for separation of duties or least privilege |
Start implementation planning by reviewing the predefined roles and permissions against which members need each feature. Create a custom role when organization requirements differ from every predefined role, such as when analysts need read access but must not manage detection rules, or when operators need a subset of administrative actions without global settings access.
Exam tip: Grant the broad privileged role to a dedicated service account and grant users only impersonation rights on that account, rather than granting the privileged role directly to users.
A custom IAM role is constructed by analyzing required actions, selecting the matching granular permissions, and binding the role to groups at the project level. The analysis maps each needed console page or API method to its permission, combines only those permissions into one role, and avoids adding permissions that enable unrelated features or global settings. Binding the role to a Google group rather than to individual users keeps membership, auditing, and separation of duties centralized.
Enforcement follows the same path for predefined and custom roles. Traffic flows from the user or API client to the Google Cloud service, the service checks the IAM policies defined for that identity, and IAM returns the authorization decision. The service then enables only the features the identity is granted, and an API request without the required permission receives an error instead of a standard response. Because authorization is evaluated on every request, removing a group membership or role binding immediately removes the corresponding feature and API access.
Service account impersonation separates long-lived privilege from day-to-day identity by placing the privileged role on a service account and granting eligible users only the ability to create short-lived tokens as that account. The privileged service account (opens in a new tab) holds the administrative role, the Google group holds impersonation rights, and users exercise privilege only while they are members of the group. The service depends on the IAM Service Account Credentials API to mint impersonated tokens and on Service Usage permission for group members to use the project.
Implement the pattern in order:
elevated-compute-access to represent time-bound membership in the privileged function.elevated-compute-access so privilege has its own identity separate from any user.roles/compute.admin to the service account on the project, so only actions performed through that account carry Compute Engine administrative permissions.roles/serviceusage.serviceUsageConsumer to the group on the project and bind roles/iam.serviceAccountTokenCreator to the group on the service account, so group members can impersonate the account without holding its keys.compute.googleapis.com service with ADMIN_READ, DATA_READ, and DATA_WRITE log types, and apply the updated policy so privileged requests and access patterns are available for review.This design enforces separation of duties because daily identities hold no administrative permissions directly, while privileged actions are attributable to impersonation of a named service account and recorded in audit logs.
Privileged Access Manager (PAM) provides time-bound grants with built-in justification, approvals and grant history that move from requested to approved to active to expired. Identity and Access Management (IAM) Conditions attach time conditions to allow-policy bindings that are evaluated on every request but provide no built-in justification, expired conditional bindings remain in the allow policy until administrators remove them, and deny policies never support time-based exemptions.
An administrator grants a privileged role such as roles/compute.admin to a dedicated service account and grants a Google group only the ability to impersonate that account with roles/iam.serviceAccountTokenCreator plus roles/serviceusage.serviceUsageConsumer on the project. Users gain elevation only while members of the group and impersonate the service account using short-lived tokens, with group membership able to expire automatically through the Google Groups API.
A Google Workspace super admin implicitly holds permission to modify the Identity and Access Management (IAM) policy of the organization node and can assign the organization administrator role or any other role to themselves. A super admin can also delete the Cloud Identity or Google Workspace account, its organization and all resources, so every super admin must be treated as having full access.
Emergency access requires a minimum of two and a maximum of five users per Cloud Identity or Google Workspace account because one account is a single point of failure while too many highly privileged accounts widen exposure. Emergency access users must be isolated in a dedicated organizational unit (OU), exempted from single sign-on and protected with Fast IDentity Online (FIDO) security keys for 2-Step Verification.
An enterprise organization wants to implement a just-in-time (JIT) privileged access strategy for its site reliability engineering (SRE) team on a production folder in Google Cloud.
The security solution must satisfy the following operational and compliance requirements:
Which solution should the organization implement?
Last updated