---
title: "Google Cloud"
slug: "google-cloud"
description: "Customer-facing setup instructions: what a Google Cloud administrator must configure, and which values to enter into Clarity."
status: "new"
updated: 2026-10-27T16:29:29Z
published: 2026-10-27T16:29:29Z
canonical: "help.claritysecurity.com/google-cloud"
---
> ## Documentation Index
> Fetch the complete documentation index at: https://help.claritysecurity.com/llms.txt
> Use this file to discover all available pages before exploring further.
# Google Cloud
## 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:
], 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).
1. **IAM & Admin → Service Accounts → Create service account.** Name it, for example, clarity-reader. Grant it **no** roles on this screen.
2. 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.
3. 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](mailto:support@claritysecurity.io), open a [support ticket](https://support.claritysecurity.com/home). Our general support team is available Monday - Friday from 8:00 AM - 6:30 PM CST.
## Related
- [Google Workspace](/google-workspace.md)
- [Google Ads](/google-ads.md)