Overview
The Clarity Google Cloud connector is read-only. It never writes to Google Cloud. It reads who holds which IAM role, and where, across your whole organization.
What Clarity syncs | Google source | How it appears in Clarity |
|---|---|---|
Every IAM role binding on the organization, every folder and every project | Cloud Asset Inventory (IAM policies), one sweep per sync | One entitlement per binding, named {role} @ {org}/{folder…}/{project} |
Who holds each binding: users, service accounts, allUsers, allAuthenticatedUsers, domain:, workload / workforce identity pools | The binding’s members | Accounts on the application, each granted the binding |
Deleted principals still listed on a binding | The binding’s members | Inactive accounts. They are not counted as current access. |
Every Google group in your Cloud Identity / Workspace account | Cloud Identity groups, once per sync | A group entitlement, whether or not it holds a binding |
Members of the groups that hold a binding (including nested groups) | Cloud Identity group memberships | Its members inherit the group’s bindings |
Service accounts and their keys | IAM, per active project | Non-human identities (type Service Account) with their keys as credentials |
The permissions inside custom roles | IAM roles | The binding’s Permissions tab |
Organization, folder and project names | Resource Manager | The node path in each entitlement name |
Conditional bindings are kept:
A binding limited to a time window shows [until YYYY-MM-DD] while it is open.
Once the window has passed it shows [expired YYYY-MM-DD]. An expired binding is kept and lists who held it, but it is not counted as current access and never appears as live access in a review.
A window that has not started yet shows [not active until YYYY-MM-DD]. It is kept as pending: not current access, and not expired.
Any other condition shows [conditional: <title>], and the rule is kept exactly as written.
The basic roles Owner, Editor and Viewer are tagged high risk by Clarity’s Google Cloud tag rules.
Prerequisites
You need:
A Google Cloud administrator who can create a service account and key in one project, and grant IAM roles at the organization level (for example, an Organization Administrator).
A Google Workspace / Cloud Identity super administrator, to assign the Groups Reader admin role in the Google Admin console.
Your numeric Google Cloud organization ID.
Note: Many Google Cloud organizations block service account key creation through the organization policy Disable service account key creation. If Google refuses to create the key in Step 1, an Organization Policy Administrator must allow key creation for the project that hosts the Clarity service account.
Step 1 — Create a read-only service account
In the Google Cloud console, choose a project to host the connector’s service account (any project in the organization).
IAM & Admin → Service Accounts → Create service account. Name it, for example, clarity-reader. Grant it no roles on this screen.
Open the new account → Keys → Add key → Create new key → JSON. A JSON key file downloads. Treat it like a password: it is the only credential Clarity needs.
Make sure these APIs are enabled on that host project (APIs & Services → Library):
Cloud Asset API
Cloud Resource Manager API
Identity and Access Management (IAM) API
Cloud Identity API
Step 2 — Grant the service account read roles on the organization
At the organization node (IAM & Admin → IAM, with the organization selected), grant the service account:
Role | Why |
|---|---|
Cloud Asset Viewer (roles/cloudasset.viewer) | Reads every IAM policy in one sweep |
Security Reviewer (roles/iam.securityReviewer) | Reads custom roles and IAM policies |
Browser (roles/browser) | Reads organization, folder and project names |
Service Account Viewer (roles/iam.serviceAccountViewer) | Lists service accounts and their keys |
None of these roles can change anything.
Step 3 — Let the service account read Google groups
In the Google Admin console (admin.google.com): Account → Admin roles → Groups Reader → Assign service accounts, and add the service account’s email address.
Without Groups Reader, no group can be read and the sync fails with:
Cloud Identity groups unreadable: check the service account’s Groups Reader role
A single group Clarity cannot read (for example, one owned by another organization) still appears as an entitlement, but its members are not read.
Step 4 — Enter the credentials in Clarity
Applications → Add application → Google Cloud.
Clarity field | Value |
|---|---|
Service Account JSON Key | Paste the whole contents of the JSON key file. The field is masked, stored encrypted, and never shown again. To replace the key, paste a new one. |
Organization ID | The numeric organization ID (for example 123456789012), from the console’s organization picker or gcloud organizations list. organizations/123456789012 is also accepted. |
Cloud Identity Customer ID | Optional. Your Workspace / Cloud Identity customer ID (for example C01234567), used to list your groups. When empty, Clarity uses the customer that owns the organization. |
Click Next. This will automatically trigger a test that reads the organization and one page of IAM policies. A failure here usually means the organization ID is wrong, or the Browser or Cloud Asset Viewer role is missing at the organization.

What to expect
Names follow renames and moves. Each entitlement is keyed to the role plus the node’s numeric ID. When a folder is renamed or a project moves, the entitlement’s name changes, but its tags, review history and requests stay with it.
Changing a condition creates a new entitlement. Google treats a binding with a different condition as a different binding, so a changed condition appears as a new entitlement, and the old one is retired.
Holders that are not people (allUsers, allAuthenticatedUsers, domain:, identity pools, whole-customer group members) appear as accounts named, for example, Anyone on the internet or Domain example.com. They are never matched to a person, so they show up as unreconciled accounts in reviews. That is how a public or domain-wide grant reaches a reviewer.
One locked-down project stops the sync. If the service account cannot list the service accounts of a project (for example, inside a VPC Service Controls perimeter), the sync fails rather than treating that project’s accounts as removed. Grant Service Account Viewer there, or add the connector’s project to the perimeter.
What Clarity does NOT do
No changes in Google Cloud. Clarity never adds, removes or changes a binding, a group or a service account.
Not synced in this version: individual resources (buckets, VMs and so on) and the organization tree as its own objects, deny policies, GKE / Kubernetes RBAC, the permissions inside Google’s predefined roles, Organization Policy, and VPC Service Controls.
Need Help?
If you have any problems, contact your customer success team. You can also get in touch with our general support via email, open a support ticket. Our general support team is available Monday - Friday from 8:00 AM - 6:30 PM CST.