Connect from ResolveAI to Google Cloud to give the agent access to logs, metrics, alerts, and dashboards to be used in investigations.ResolveAI supports three authentication methods for GCP. Pick a tab below and follow it end-to-end.
Add roles/logging.viewer on the projects, folders, or organizations whose logs you want to expose — a single folder- or org-level grant covers all child projects. For metrics, alerts, and dashboards, also add roles/monitoring.viewer on the service account’s project.
Open Integrations for your organization, click GCP, then Add Connection at the top right. Give the integration a name (ex. GCP Prod) and list its environments (ex. production and staging).
These are the log containers to search: projects/PROJECT_ID, folders/FOLDER_ID, organizations/ORG_ID, or a specific log bucket view. A single folder/org entry covers every log project underneath it, including projects created later (log search only — metrics, alerts, and dashboards use the connection’s single Project ID).
Under Authentication, choose Service Account Key and paste the whole private key JSON from step 3 into the Service Account Key JSON field. Click Save, then verify the connection with Check Health.
ResolveAI’s workload (running on AWS) authenticates to your GCP project directly using its AWS identity, so no long-lived private key is stored — nothing is on the ResolveAI side except the federation config JSON and your project ID. Recommended if your security posture discourages static service account keys.
Prerequisites: permissions in Google Cloud to create a Workload Identity Pool, and permissions in ResolveAI to create an integration.
Contact ResolveAI support to get the specific AWS account ID and IAM role ARN that the provider should trust — that’s the identity ResolveAI’s workload uses to authenticate.
3. Create the service account ResolveAI will impersonate
Or choose an existing one. Grant it roles/logging.viewer on the projects, folders, or organizations whose logs you want to expose — a single folder- or org-level grant covers all child projects. For metrics, alerts, and dashboards, also grant roles/monitoring.viewer on your Project ID’s project.
Grant the Workload Identity Pool principal the roles/iam.workloadIdentityUser role on that service account, so the federated AWS identity is allowed to impersonate it.
From the pool’s provider page, click Download config to get the federation credential JSON (it will have "type": "external_account"). Note your GCP Project ID as well — you’ll need both below.
Open Integrations for your organization, click GCP, then Add Connection at the top right. Give the integration a name (ex. GCP Prod) and list its environments (ex. production and staging).
These are the log containers to search: projects/PROJECT_ID, folders/FOLDER_ID, organizations/ORG_ID, or a specific log bucket view. A single folder/org entry covers every log project underneath it, including projects created later (log search only — metrics, alerts, and dashboards use the connection’s single Project ID).
Under Authentication, choose Workload Identity Federation: paste the federation config JSON from step 5 into the Workload Identity Config JSON field, and enter your Project ID. Click Save, then verify the connection with Check Health.
No GCP service account key exists anywhere, no external identity is trusted in your GCP org, and no secret material ever leaves your cluster.
Works with GKE (issuer URLs are publicly reachable, including for private clusters) and any other cluster whose OIDC issuer GCP can reach.
Recommended if your security posture disallows both service account keys and federating third-party identities into your Workload Identity Pool.
Only the credential-config-file method described below is supported; GKE metadata-server auto-discovery (plain ADC with no config JSON) is not.
Prerequisites: permissions in Google Cloud to create a Workload Identity Pool, plus a running Resolve Satellite in a Kubernetes cluster and access to its Helm values.
4. Grant the satellite’s federated principal a role
Grant roles/logging.viewer on the projects, folders, or organizations whose logs you want to expose. A single folder- or org-level grant covers all child projects, including projects created later. For metrics, alerts, and dashboards, also grant roles/monitoring.viewer on the project you’ll set as projectId in step 7. The principal is:
(Alternative: grant the role to a GCP service account instead, and add --service-account=THAT_GSA_EMAIL in step 5 so the federated identity impersonates it.)
Embed the contents of credential-config.json from step 5 in an integrations block. Unlike a service account key, this file contains no secret material (only pool/provider identifiers and the token file path), so it is safe to place in Helm values:
integrations: gcp: type: gcp create: true connection: projectId: YOUR_PROJECT_ID # project used for metrics, alerts, and dashboards API calls resourceNames: # log containers to search. A folder/org entry covers every log project underneath it (log search only) - folders/YOUR_FOLDER_ID # or projects/..., organizations/... # Contents of credential-config.json from step 5. # Contains no secret material. Must be a string — keep the | block scalar. workloadIdentityConfigJson: | { "type": "external_account", "audience": "//iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/resolve-satellite-pool/providers/resolve-satellite-provider", "subject_token_type": "urn:ietf:params:oauth:token-type:jwt", "token_url": "https://sts.googleapis.com/v1/token", "credential_source": { "file": "/var/run/secrets/resolve-gcp-wif/token" } }
workloadIdentityConfigJson must reach the satellite as a string — use the | block scalar exactly as shown.Do not deliver it as a raw JSON file inside a Kubernetes Secret: the satellite parses mounted secret files as YAML, a bare JSON file becomes an object instead of a string, and GCP authentication is silently skipped (all calls fail with 401).
The changes from Steps 6 and 7 go in the same values file — apply them together with a single helm upgrade. The connection appears in the ResolveAI Integrations list automatically once the satellite registers it; verify it with Check Health on the GCP integration page.
Was this page helpful?
Assistant
Responses are generated using AI and may contain mistakes.