Capabilities
*Workforce Identity Federation support is optional and must be configured when you set up the connector.
What Workforce Identity provisioning covers. Entitlements on a Workforce Identity pool are the administrative roles bound on the pool itself — who may manage the pool and its providers. Reading them requires
iam.workforcePools.getIamPolicy, and granting or revoking them additionally requires iam.workforcePools.setIamPolicy. The three roles GCP predefines for this (roles/iam.workforcePoolAdmin, roles/iam.workforcePoolEditor, roles/iam.workforcePoolViewer) always appear as entitlements, so a newly created pool can be administered from C1 straight away, and any other role the pool binds appears alongside them. C1 shows who holds each of those roles, including principals GCP grants only while an IAM condition holds. Granting a pool role writes an unconditional binding. If the principal also holds that role under a condition — either by itself or alongside an unconditional binding — C1 refuses the revoke before making any policy change. Remove the conditional binding in GCP, then retry the revoke in C1 to remove any remaining unconditional binding.Separately, federated identities can be granted and revoked IAM roles on organizations, folders, projects, buckets, and secrets. The connector writes the appropriate GCP principal for each shape — principal://…/subject/… for a single user, and principalSet://…/group/…, principalSet://…/attribute.NAME/… or principalSet://…/* for the set-based bindings. Across these resource roles and the pool administrative roles above, when a Shared identity source matches the same identity through more than one workforce pool, C1 refuses a revoke that would remove only one binding and leave the matched identity’s access in place through another pool. Remove the duplicate binding in GCP, sync the connector, and retry the revoke.Granting access to a federated group must be done in GCP. GCP identifies such a group by the value its provider asserts in the google.groups claim, which varies by identity provider and cannot be derived from the group itself, so the connector refuses the grant rather than writing a binding that would match no one. Once the principalSet://…/group/… binding exists in GCP, the connector syncs it and can revoke it. With a Shared identity source configured, C1 matches the asserted group to the group from that source and shows the binding’s inherited IAM access for its members in Inventory and access reviews. Configure the Shared identity source when you enable Workforce Identity Federation so group-derived access includes those members. Without it, C1 still shows access held by the federated group binding itself.Bindings that address an open-ended set of identities — principalSet://…/attribute.NAME/… and principalSet://…/* — are synced as read-only. C1 shows them against every identity they match, so removing the binding to revoke one person would cut access for everyone matching it; the connector refuses that revoke instead of performing it. Remove those bindings in GCP directly. Subject and group bindings revoke normally, since each maps to exactly one identity or one group.Pool membership itself cannot be provisioned. GCP exposes no API to add or remove identities from a Workforce Identity pool — subjects and groups come from the identity provider’s assertion at sign-in. To change who reaches Google Cloud through a pool, manage the user or group in the upstream IdP (for example, in Microsoft Entra ID or Okta) and govern it in C1 through that connector, using the pool’s principalSet://…/group/… bindings for the mapping.Pools and providers have a lifecycle of their own. A pool can be created under an organization and deleted; a provider can be deleted from its pool. Deleting either is a soft delete: it stops authenticating immediately, but GCP keeps the record for 30 days, during which it can be restored in GCP and its ID cannot be reused. Deleting a pool cuts off every identity that signs in through it, not just one person’s access. Creating a provider is not offered: GCP requires the provider’s full OIDC or SAML configuration (issuer URI and client ID/secret, or the identity provider’s SAML metadata, plus the attribute mapping), which is not part of what C1 sends when it creates a resource, so it must be created in GCP. Providers hold no IAM policy of their own, so they have no entitlements or grants either way.GCP IAM bindings can carry a condition (a CEL expression that GCP
evaluates at request time, e.g. to grant access only during a time window or
only for resources with a certain tag). On organizations, folders, and
projects, both the flat-grants model and the IAM Role Assignments model show a
conditional binding as access held, so a grant there can represent access GCP
applies only while its condition holds — check the binding in GCP (Console or
gcloud) when its exact, currently-in-effect state matters. On Workforce
Identity pools, C1 also shows condition-scoped administrative access as the
recovered role held, matching organizations, folders, and projects — check the
binding in GCP when its currently-in-effect state matters. A pool Grant or
Revoke rewrites the full policy after a GCP read that omits the CEL
expression, so the connector cannot guarantee that an existing pool condition
will be preserved by an otherwise unrelated provisioning operation.Gather Google Cloud Platform with Google Workspace credentials
Configuring the connector requires credentials from both Google Cloud Platform and the Google Workspace Admin console. You’ll complete the following steps:- Create a dedicated GCP project for the C1 integration
- Enable the required APIs
- Create a service account and assign it the necessary permissions
- Download the service account’s JSON key
- Grant the service account domain-wide delegation in the Google Workspace Admin console
- Locate your primary domain and Customer ID
Create a new project
We recommend creating a dedicated GCP project for the C1 integration. This keeps the integration’s permissions and audit logs isolated from your other projects.1
As a Google Cloud Platform with Google Workspace Super Admin, sign in to https://console.cloud.google.com.
2
In the toolbar, click the project select dropdown, and click NEW PROJECT.
3
Create a new project for your organization:
- Project Name: Choose a name, such as “C1 Integration”
- Organization/Location: Choose the appropriate Organization/Location
4
After the project is created, make sure the correct project is selected in the dropdown at the top.
Enable the APIs
1
In the navigation menu, navigate to APIs & Services > Library.
2
Search for each of the following APIs and click Enable:
- Cloud Asset API
- Cloud Resource Manager API
- Identity and Access Management API
- Admin SDK API
Optional: Sync secrets and buckets
Complete this section only if you want the connector to sync secrets (API keys, service account keys, Secret Manager secrets) or Cloud Storage buckets. Required organization-level role: Grant the service account theroles/cloudasset.viewer role at the organization level. This allows it to search resources across projects.
Additional APIs to enable:
Enable these APIs for each project you want to sync (or only for the projects specified in the Project IDs filter):
- Secrets - API Keys: API Keys API
- Secrets - Service account keys: IAM API
- Secrets - Secret Manager secrets: Secret Manager API
- Buckets: Cloud Storage API
Create a service account
1
In the navigation menu, navigate to APIs & Services > Credentials.
2
Select CREATE CREDENTIALS > Service Account.
3
Under Service account details, fill in the following:
- Service account name: C1 Integration
- Service account description: for example, “Service account for C1 Google Cloud Platform with Google Workspace Integration”
4
Under Grant this service account access to a project, assign the service account a role at the organization level. You can use the predefined Editor role, or create a custom role that includes only the permissions listed below.For READ access (syncing access data only), the role needs these permissions:To also provision access (READ/WRITE), add these permissions to the role:The
iam.workforcePool* permissions are only needed when Workforce Identity Federation is enabled. iam.workforcePools.getIamPolicy belongs to the READ set because the pool’s own allow policy is what the connector reads to sync pool entitlements and grants — without it the sync fails rather than returning an empty pool. iam.workforcePools.setIamPolicy is only needed to grant and revoke those administrative roles. iam.workforcePools.create, iam.workforcePools.delete and iam.workforcePoolProviders.delete are only needed to create or delete the pools and providers themselves, and iam.workforcePools.get goes with them because creating or deleting a pool reads it back to confirm the result. Leave all four out to keep the connector able to govern access without being able to change the federation setup.iam.serviceAccountKeys.list is required when service-account key secret sync is enabled. Credential issuance additionally requires iam.serviceAccountKeys.create, and revoking a synced or issued key additionally requires iam.serviceAccountKeys.delete.5
Leave Grant users access to this service account blank.
6
Click DONE.
Get credentials
1
Navigate back to APIs & Services > Credentials. Under Service Accounts, locate and click the service account you just created.
2
Click the service account’s email address. Locate and save the Unique ID — you’ll need it when configuring domain-wide delegation in the next section.
3
On the Service Account Details Page, click KEYS.
4
Click ADD KEY > Create new key.
5
Choose JSON and click CREATE. The new key is created and downloaded to your computer.
6
Keep the downloaded file safe — you’ll upload it when configuring the connector in C1.
Add the service account to Google Workspace
Domain-wide delegation allows the GCP service account to access Google Workspace data — directory users, groups, roles, and audit logs — on behalf of your organization. You configure this in the Google Workspace Admin console at https://admin.google.com, which is separate from the Google Cloud console.1
Go to https://admin.google.com as a SUPER ADMIN.
2
In the navigation menu, select Security > Access and data control > API Controls.
3
Click MANAGE DOMAIN WIDE DELEGATION.
4
Click Add new and fill out the form:
- Client ID: The Unique ID you saved from the service account details page
-
OAuth Scopes: Copy and paste in the relevant scopes
-
Use the following scopes to give C1 READ access (syncing access data):
-
Use the following scopes to give C1 READ/WRITE access (syncing access data and provisioning access):
-
Use the following scopes to give C1 READ access (syncing access data):
5
Click AUTHORIZE.
6
In the navigation menu, select Account > Account Settings.
7
Copy and save the Customer ID from this page.
Locate your primary domain
1
In the navigation panel on the left, click Account > Domains.
2
Click Manage Domains. Locate and copy the domain labeled as the Primary Domain in the Type column.
- Customer ID (from Account Settings)
- Primary domain (from Manage Domains)
- Administrator email — the email address of a super admin for your domain
- JSON credentials file — the service account key downloaded in the Get credentials section
Configure the Google Cloud Platform with Google Workspace connector
- Cloud-hosted
- Self-hosted
Follow these instructions to use a built-in, no-code connector hosted by C1.Done. Your Google Cloud Platform with Google Workspace connector is now pulling access data into C1.
1
In C1, navigate to Apps > Connectors and click Add connector.
2
Search for Google Cloud Platform with Google Workspace and click Add.
3
Choose where to add the connector: Create a new app, or Add to an existing app (then select the app).If you’re creating a new app, choose whether to link it to an application discovered from your identity provider: select Yes and pick the IdP application, or No to continue with just the connector.
4
Set the connector’s Name and, optionally, a Description.
5
Click the pencil icon next to Owners to choose who can configure and manage this connector.
6
Click Add. The connector is created and its configuration page opens.
7
Find the Settings area of the page and click Edit.
8
In the Customer ID field, enter the customer ID.
9
In the Domain field, enter the primary domain.
10
In the Administrator email field, enter the email address of a super admin for your domain.
11
In the Credentials (JSON) area, click Choose file and upload the JSON key file.
12
Optional. Check the box if you want to skip syncing Google Cloud Platform system accounts.
13
Optional. Uncheck the box (which is checked by default) if you want to sync Google Cloud Platform default projects.
14
Optional. In the Project IDs field, enter a list of project IDs to limit the connector’s sync to only those projects. Be sure to enter project IDs, not project names.
15
Optional. Check the box to Enable Workforce Identity Federation, which allows the connector to sync Workforce Identity pools and pool providers.
- Enter the Workforce Identity Pool ID and Workforce Identity Pool Provider ID. The connector reads the provider’s
google.subjectattribute mapping to work out which identity provider claim to write when it grants a federated user access, so these must point at the pool and provider your users actually sign in through. Revoking a synced grant targets the pool recorded on the binding it was synced from. If a Shared identity source matches the same identity through multiple pools, the safeguard described above prevents removing only one binding while another keeps granting access.
16
By default, the connector only syncs roles that are assigned to an IAM policy. These settings allow you to configure the connector to sync roles regardless of their IAM policy status.
- Optional. Check the box to Always sync custom roles.
- Optional. In the List of role IDs to always sync field, enter a list of role IDs that should be synced. Be sure to enter role IDs, not role names.
17
Optional. Check the box to Cloud Infrastructure Access: Use RBAC to enable the RBAC model for IAM role assignments. When enabled, role assignments are synced as scope binding resources (IAM Role Assignments) instead of flat grants on projects, folders, and organizations. This also enables provisioning of IAM role assignments via the scope binding model.
Enabling this option changes how IAM access data is represented in C1. Flat grants on projects, folders, and organizations will no longer be synced — only the IAM Role Assignment resources will carry that data. Enable this only if your C1 configuration is set up to use the RBAC model.
18
Click Save.
19
If you enabled Workforce Identity Federation, complete this additional configuration:
- In the Shared identity source area of the page, click Edit.
- Select the connector from which you want to pull identities.
- Optional. Limit the identities pulled from the connector you selected to only those with a certain entitlement by setting the entitlement.
- Click Save.
20
The connector’s label changes to Syncing, followed by Connected. You can view the logs to ensure that information is syncing.