Connect Google Cloud IAM¶
Step-by-step guide to connecting Google Cloud Platform IAM to Thalian for cloud identity gap detection.
What Thalian detects¶
Thalian cross-references every GCP project member against your corporate identity provider (Okta, Entra ID, Google Workspace, JumpCloud, or OneLogin) to find access that exists outside your IDP lifecycle controls:
- GCP owner/editor not in IDP — privileged project members with no corporate identity (critical)
- GCP member not in IDP — any human member not present in your IDP (high)
- Public IAM binding —
allUsersorallAuthenticatedUsersbinding exposing resources to the internet (critical) - Stale IAM binding — GCP member whose IDP account is suspended or deprovisioned (high)
- Owner role sprawl — a project has more Owner-role members than expected (high)
- Service account with admin role — a service account holds an admin-level IAM role (high)
- Cross-project admin — a user has admin access across 3+ projects (high)
- Editor role overuse — more than 50% of a project's members have Editor or higher (medium)
- Service account key not rotated — a user-managed service account key is older than 90 days (high)
- Service account not using Workload Identity Federation — a service account relies on long-lived keys rather than keyless WIF authentication (medium)
GCP IAM does not auto-sync with corporate directories. When an employee leaves and their Okta or Entra account is disabled, their GCP project access remains active until explicitly removed.
Prerequisites¶
- A Google Cloud account with at least one active project
- Permission to create OAuth credentials in Google Cloud Console
- The Cloud Resource Manager API and IAM API enabled in your project
Step 1 — Enable required APIs¶
- Go to console.cloud.google.com
- Select your project
- Go to APIs & Services → Library
- Search for and enable:
- Cloud Resource Manager API
- Identity and Access Management (IAM) API
Step 2 — Create an OAuth client¶
- Go to APIs & Services → Credentials
- Click Create Credentials → OAuth client ID
- Application type: Web application
- Name:
Thalian GCP IAM(or any name you prefer) - Under Authorized redirect URIs, add:
https://app.thalian.ai/api/oauth-callback - Click Create — copy the Client ID and Client Secret
Step 3 — Add the required scope¶
- Go to APIs & Services → Data Access (or OAuth consent screen → Scopes)
- Click Add or remove scopes
- Add the following scopes:
https://www.googleapis.com/auth/cloud-platform.read-only openid email - Save
Note: If your Google Workspace organization is set to Internal, only users in your org can authorize. For a managed deployment, this is the correct setting — Thalian will connect using your admin account.
Step 4 — Connect in Thalian¶
- Go to Integrations → Browse
- Find Google Cloud IAM and click Connect
- Click Connect with Google — you'll be redirected to Google's OAuth consent screen
- Sign in with the Google account that has access to your GCP projects
- Approve the requested permissions
- Thalian validates the connection and begins the first sync
What Thalian syncs¶
- All active GCP projects visible to the connected account
- IAM project members — human users (
user:) and service accounts (serviceAccount:) - Role assignments — which roles each member holds across which projects
- Public bindings —
allUsersandallAuthenticatedUsersentries flagged immediately - Service account key metadata — user-managed key creation dates and last-used timestamps for all service accounts
Groups (group:) are skipped — Thalian detects individual identities, not group containers.
Permissions required¶
The connected Google account needs at minimum:
| Permission | Purpose |
|---|---|
resourcemanager.projects.list |
Discover all active projects |
resourcemanager.projects.getIamPolicy |
Read IAM policies per project |
Both are included in the cloud-platform.read-only scope. The Viewer role on each project or at the organization level is sufficient.
Troubleshooting¶
- No projects found: The connected account must have at least
Vieweraccess on the projects you want monitored. Grant it at the organization or folder level for full coverage. - APIs not enabled: If the sync returns an API error, confirm the Cloud Resource Manager API is enabled in the project where your OAuth credentials were created.
- Scope error on OAuth: Ensure
cloud-platform.read-onlyhas been added to the OAuth consent screen scopes before connecting. - Consent screen in testing mode: If your OAuth app is in "Testing" status, only explicitly added test users can authorize. Publish the app or add your account as a test user.
For a full list of supported platforms, see Integrations Guide.