Google Cloud Platform
Trustle reads IAM role bindings, roles, the resource hierarchy, audit logs, and AI agents from Google Cloud. Trustle can grant and revoke IAM roles on your organization, folders, and projects.
Prerequisites
Section titled “Prerequisites”-
A Google Cloud organization.
-
These roles at the organization level:
- Organization Role Administrator, to create the custom role.
- Organization Administrator, to grant the role to the service account.
Project IAM Admin is not enough. It cannot create a role at the organization level.
-
These roles in the project that holds the service account: Service Account Admin, Service Account Key Admin, and Service Usage Admin.
-
An identity provider connected in Trustle, for example Google Workspace or Okta. Trustle hides Cloud Providers until one is connected.
-
To change Google group members, a Google Workspace connection in Trustle. Trustle makes group changes through that connection.
Configure Google Cloud Platform
Section titled “Configure Google Cloud Platform”Step 1: Enable the APIs
Section titled “Step 1: Enable the APIs”Use a dedicated project for the Trustle service account. Google Cloud counts the API calls against this project.
-
In the Google Cloud console, select the project.
-
Go to APIs & Services → Library.
-
Enable each API:
API Required What Trustle does with it Cloud Resource Manager API Yes Reads the organization, folders, projects, and their IAM policies. Identity and Access Management (IAM) API Yes Reads role definitions. Cloud Logging API Yes Reads audit logs to find which permissions people use. Without it, Trustle has no usage data. Vertex AI API Optional Finds Agent Engine agents. Without it, Trustle imports no Agent Engine agents. Agent Registry API Optional Finds agents in the Agent Registry. Without it, Trustle imports no registry agents.
Step 2: Create a custom role
Section titled “Step 2: Create a custom role”-
Search for IAM & Admin in the console search bar. Select the result.

-
In the resource picker, select your organization. Do not select a project or a folder.

-
Go to IAM & Admin → Roles. Click Create role.
-
Enter a Title, for example
Trustle Access Manager. -
Set Role launch stage to General Availability.
-
Click Add permissions. Add each permission from Step 3.
-
Click Create.
Step 3: Grant permissions
Section titled “Step 3: Grant permissions”Add these permissions to the custom role:
| Permission | Required | What Trustle does with it |
|---|---|---|
resourcemanager.organizations.get |
Yes | Reads the organization. |
resourcemanager.organizations.getIamPolicy |
Yes | Imports role bindings set on the organization. |
resourcemanager.organizations.setIamPolicy |
Yes | Grants and revokes roles on the organization. |
resourcemanager.folders.get |
Yes | Reads the folders above each project. |
resourcemanager.folders.list |
Optional | Lists folders to build the resource hierarchy. Without it, Trustle shows projects without their folders. |
resourcemanager.folders.getIamPolicy |
Yes | Imports role bindings set on folders. |
resourcemanager.folders.setIamPolicy |
Yes | Grants and revokes roles on folders. |
resourcemanager.projects.get |
Yes | Finds projects. Test Connection uses it. |
resourcemanager.projects.list |
Yes | Lists projects. |
resourcemanager.projects.getIamPolicy |
Yes | Imports role bindings set on projects. Test Connection uses it. |
resourcemanager.projects.setIamPolicy |
Yes | Grants and revokes roles on projects. |
iam.roles.get |
Yes | Reads the permissions in each role. |
iam.roles.list |
Yes | Lists predefined and custom roles. |
logging.logEntries.list |
Yes | Reads Admin Activity audit logs. Without it, Trustle cannot tell used permissions from unused ones. |
logging.privateLogEntries.list |
Optional | Reads Data Access audit logs. Without it, Trustle misses data reads, such as a read from a storage bucket. |
iam.serviceAccounts.get |
Optional | Finds the numeric ID of each agent’s service account. Without it, Trustle shows each agent by email only. |
aiplatform.reasoningEngines.list |
Optional | Imports Agent Engine agents. Needs the Vertex AI API. |
agentregistry.agents.list |
Optional | Imports agents from the Agent Registry. Needs the Agent Registry API. |
If the console does not let you add an optional permission to a custom role, grant a predefined role at the organization level instead: Vertex AI Viewer (roles/aiplatform.viewer) or Agent Registry Viewer (roles/agentregistry.viewer).
Step 4: Create the service account
Section titled “Step 4: Create the service account”- Select the project from Step 1.
- Go to IAM & Admin → Service accounts. Click Create service account.
- Enter a Service account name, for example
trustle. Click Create and continue. - Skip Grant this service account access to project. You grant the role in Step 5.
- Click Done.
- Copy the service account email, for example
service-account-name@project-id.iam.gserviceaccount.com.
Step 5: Grant the role at the organization level
Section titled “Step 5: Grant the role at the organization level”- In the resource picker, select your organization.
- Go to IAM & Admin → IAM. Click Grant access.
- In New principals, paste the service account email from Step 4.
- In Select a role, select the custom role from Step 2.
- Click Save.
Step 6: Create a JSON key
Section titled “Step 6: Create a JSON key”- Go to IAM & Admin → Service accounts. Click the service account email.
- Select the Keys tab. Click Add key → Create new key.
- Select JSON. Click Create. The key file downloads.
Step 7: Collect the values for Trustle
Section titled “Step 7: Collect the values for Trustle”| Trustle field | Where to find it in Google Cloud | Example |
|---|---|---|
| Service Account Key File | The JSON key file from Step 6 | {"type": "service_account", "project_id": "<project-id>", …} |
Connect in Trustle
Section titled “Connect in Trustle”-
In Trustle, go to Connections.
-
Under Cloud Providers, find Google Cloud and click Connect.
-
Enter a Connection Name, for example
Google Cloud production. Description is optional. -
In Service Account Key File, click Paste JSON and paste the whole file. Or click Upload File and select the file from Step 6.

-
Click Test Connection.

-
After the test passes, click Save Connection.
Verify
Section titled “Verify”- On the Connections page, open the Google Cloud connection.
- Wait for the first sync to finish.
- Check that the project count matches the number of projects in your organization.
- Check that Trustle shows role bindings set on the organization, not only on projects.
If something is missing, see Troubleshooting.
Security notes
Section titled “Security notes”Troubleshooting
Section titled “Troubleshooting”Test Connection fails
Section titled “Test Connection fails”Read the error message:
- “Invalid JSON in service_account_key”: paste the whole file, from
{to}. - “Invalid service account key format”: the file is not a service account key. Create a JSON key in Step 6.
- “No projects accessible with provided credentials”: the service account has no role on any project. Do Step 5. Check that you pasted the service account email, not your own.
SERVICE_DISABLEDor “has not been used in project”: enable the API that the message names. Do Step 1 in the project that holds the service account.
Test Connection passes, but Trustle shows only one project
Section titled “Test Connection passes, but Trustle shows only one project”The role is granted on a project, not on the organization. Do Step 5. Then run the sync again.
Google Cloud does not let you create a key
Section titled “Google Cloud does not let you create a key”An organization policy blocks service account keys, for example iam.disableServiceAccountKeyCreation. Ask your organization policy administrator to allow keys for the Trustle project only.
Usage data or last-used dates are missing
Section titled “Usage data or last-used dates are missing”- Enable the Cloud Logging API in Step 1.
- Add
logging.logEntries.listto the role. For data reads, also addlogging.privateLogEntries.list. - Google Cloud records Data Access audit logs only when you turn them on. Go to IAM & Admin → Audit Logs and turn them on for the services you want to track.
Trustle shows the data after the next sync.
AI agents are missing
Section titled “AI agents are missing”- Agent Engine agents: enable the Vertex AI API and add
aiplatform.reasoningEngines.list. - Agent Registry agents: enable the Agent Registry API and add
agentregistry.agents.list.
Trustle shows the agents after the next sync.
Trustle cannot grant or revoke a role
Section titled “Trustle cannot grant or revoke a role”The custom role is missing a setIamPolicy permission for that level: organization, folder, or project. Add it in Step 3.
None of these fixes work
Section titled “None of these fixes work”Email support@trustle.com. Include the error message, the connection name, and the Google Cloud organization ID and the service account email. Never send a secret, key, or token.