> For the complete documentation index, see [llms.txt](https://developer.harness.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developer.harness.io/internal-developer-portal/3.0/use-idp/software-catalog/create-entity/catalog-discovery/gcp.md).

# Google Cloud Integration

The Google Cloud integration connects to your GCP organization or folder and brings resources into the IDP Catalog, such as Compute Instances, GCS Buckets, Cloud Run services, BigQuery datasets, GKE clusters, and more. Once discovered, entities can be registered as new catalog entries, enriching them with GCP-sourced metadata such as asset type, location, state, and resource identifiers.

For each resource, the integration collects the following:

| Resource         | What it provides                                                                                                                                                                 |
| ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **GCP Resource** | Asset type, display name, location, state, organization and project identifiers, creation time, and resource-specific attributes such as machine type, labels, and network tags. |

***

### Before you begin <a href="#before-you-begin" id="before-you-begin"></a>

The following configurations are needed in Harness and GCP to get the integration running.

#### Relevant Harness configurations <a href="#relevant-harness-configurations" id="relevant-harness-configurations"></a>

* Ensure the feature flag `IDP_INTEGRATIONS` is enabled. Contact [Harness Support](mailto:support@harness.io) to enable them.
* You have the required RBAC permissions to manage integrations. All integration operations require the `IDP_INTEGRATION_EDIT` permission on the `IDP_INTEGRATION` resource type.
* A [GCP connector](https://www.youtube.com/watch?v=frNDU4Iv7zM) is configured in Harness using a service account JSON key. Go to [GCP configurations](#relevant-gcp-configurations) below for how to obtain the key.

#### Relevant GCP configurations <a href="#relevant-gcp-configurations" id="relevant-gcp-configurations"></a>

* **IAM role**: Grant `roles/cloudasset.viewer` to your service account at the **organization or folder level** (not project level) via [IAM & Admin](https://console.cloud.google.com/iam-admin/iam). For resource-specific access (e.g., Compute, BigQuery), also grant the relevant viewer roles such as `roles/compute.viewer` or `roles/bigquery.metadataViewer` at the same scope.
* **Service account key**: [Generate a JSON key](https://cloud.google.com/iam/docs/keys-create-delete) for your service account (**Keys** tab → **Add key** → **Create new key** → **JSON**) and upload it when creating the GCP connector in Harness.
* **Cloud Asset API**: [Enable `cloudasset.googleapis.com`](https://console.cloud.google.com/apis/library/cloudasset.googleapis.com) on the GCP project associated with the service account.

{% hint style="info" %}
**PROXY CONFIGURATION**

If your environment blocks outbound third-party traffic and routes it through a proxy, you will need to configure proxy settings on your Harness Delegate. Once configured there, the proxy settings are automatically picked up by IDP integrations. No additional setup is needed on the integration side.

Here is how to set it up: [Configure delegate proxy settings](/harness-ai/use-harness-platform/delegates/delegate/manage-delegates/configure-delegate-proxy-settings.md)
{% endhint %}

***

### Enable the Google Cloud integration <a href="#enable-the-google-cloud-integration" id="enable-the-google-cloud-integration"></a>

{% hint style="info" %}
The Google Cloud integration is available at the **Account**, **Organization**, and **Project** levels. Navigate to the appropriate scope of the Internal Developer Portal to add or manage Google Cloud integrations.
{% endhint %}

#### 1. Navigate to the integrations page <a href="#id-1-navigate-to-the-integrations-page" id="id-1-navigate-to-the-integrations-page"></a>

1. In Harness, open the **Internal Developer Portal**.
2. From the left sidebar, click **Configure**.
3. In the left navigation menu, click **Integrations**.

   Figure 1: Navigation Path of GCP Integration
4. On the Integrations page, click **+ New Integration** at the top.
5. Select **Google Cloud** from the integration type picker. You will be taken to the **Auto Discover Google Cloud Integration** page.

#### 2. Configure setup & connectivity <a href="#id-2-configure-setup-and-connectivity" id="id-2-configure-setup-and-connectivity"></a>

This section connects Harness IDP to your Google Cloud Platform.

Figure 2: Setup & Connectivity

1. Enter a name in the **Integration Name** field. This name appears on the integration card on the **Integrations** page (e.g., `GCP QA Data Integration`).
2. Click the **Choose GCP connector** dropdown and select the GCP connector you want to use to pull data into the IDP (e.g., `idp_automation_gcp_manager`).

   <div data-gb-custom-block data-tag="hint" data-style="info" class="hint hint-info"><p><strong>DO NOT HAVE A GCP CONNECTOR YET?</strong></p><p>If no connectors appear in the dropdown, you need to first create a GCP connector in Harness. Once saved, it will appear in the dropdown here.</p><div data-gb-custom-block data-tag="embed"><iframe src="https://www.youtube.com/embed/frNDU4Iv7zM"></iframe></div></div>
3. Under **Scope Type**, select how IDP should scope the resource discovery:
   * **Organization ID** *(Default)*: Discovers resources across your entire GCP organization. Enter your numeric GCP Organization ID (e.g., `123456789012`).
   * **Folder ID**: Limits discovery to a specific GCP folder. Enter the numeric Folder ID.

#### 3. Configure catalog mapping <a href="#id-3-configure-catalog-mapping" id="id-3-configure-catalog-mapping"></a>

This section defines which GCP resources are ingested and how they map to IDP catalog entities.

Click **Configure** next to **Choose resources for ingestion** to open the **Resource selection** panel.

Resources are organized into several categories: Monitoring, Databases, API Gateway, Serverless, CI/CD & Data, Compute Engine, Networking, IAM & Security, Kubernetes, Storage, Resource Manager, Caching, Messaging, and Vertex AI. Use the **Choose Resource** dropdown at the top of the panel to filter by category.

Figure 3: GCP Resource Selection

For each resource you select, three fields are configurable:

* **Sync Mode**: `Full Refresh` re-syncs the entire resource list on every update cycle. `Incremental` syncs only resources that have changed since the last update.
* **Kind**: Select the IDP catalog entity kind that best represents this resource in your catalog.
* **Type**: The catalog entity type label (e.g., `compute_instances`, `gcs_buckets`). Pre-filled based on the resource and can be customized.

Once you have made your selections, click **Continue** to return to the main configuration page.

#### 4. Configure advanced settings <a href="#id-4-configure-advanced-settings" id="id-4-configure-advanced-settings"></a>

The **Advanced Settings** section controls how frequently IDP syncs with GCP.

Figure 4: Advanced Settings

1. Select an **Update Frequency** from the dropdown to control how often IDP polls GCP for new data.

   Available options: `10 min`, `30 min`, `1 hour`, `3 hours`, `6 hours`, `12 hours`, `1 day`, `2 days`, `7 days`.
2. Once all sections are configured, click **Confirm & Enable**. A confirmation dialog will appear before the changes are applied.

The integration is now enabled and IDP begins syncing data from GCP. Discovered resources appear in the [**Discovered** tab](#discovered-tab).

***

### Discover and import GCP entities <a href="#discover-and-import-gcp-entities" id="discover-and-import-gcp-entities"></a>

#### Discovered tab <a href="#discovered-tab" id="discovered-tab"></a>

After the integration runs, all GCP resources detected appear in the **Discovered** tab. Use the **Resource** dropdown filter to narrow the list by resource type. If entities do not appear, use the **Sync** button at the top right to manually refresh.

Figure 5: 'Discovered' tab showing GCP Resources

For each discovered entity, you can see its name, the recommended catalog action, kind, type, and the date it was detected. All discovered GCP resources default to the **Register** action, which creates a new catalog entity populated with the GCP metadata.

{% hint style="info" %}
**BULK IMPORT AND AUTO IMPORT OPTIONS**

* **Bulk Import**: Select services using the checkboxes, or use the snackbar at the bottom of the page to select all services at once, then click **Import selected services**.
* **Auto Import**: Toggle **Auto-import future discovered entities** in the top right of the Discovered tab to automatically import all future entities without manual review.
  {% endhint %}

Figure 6: Import Discovered GCP Resources to IDP Catalog

#### Imported tab <a href="#imported-tab" id="imported-tab"></a>

The **Imported** tab displays all GCP entities that have been brought into the catalog. Use the **Resource** dropdown filter to narrow by resource type.

Figure 7: 'Imported' tab showing GCP entities linked to catalog entities

| Column                    | Description                                                                             |
| ------------------------- | --------------------------------------------------------------------------------------- |
| **Google Cloud Entities** | The name of the resource from GCP, along with its import status (e.g., **Registered**). |
| **Entity**                | The linked IDP catalog entity and its ID.                                               |
| **Kind**                  | The catalog entity kind (e.g., `resource`, `system`).                                   |
| **Type**                  | The catalog entity type (e.g., `compute_disks`).                                        |
| **Scope**                 | The Harness account scope the entity belongs to.                                        |
| **Imported At**           | The timestamp when the entity was imported.                                             |

{% hint style="warning" %}
**UNLINK AN IMPORTED ENTITY**

To stop syncing a specific entity without deleting the catalog entity, use the three-dot menu on any row and select **Unlink**. This stops sync updates while keeping the IDP entity and its existing data intact.
{% endhint %}

#### Events tab <a href="#events-tab" id="events-tab"></a>

The **Events** tab logs all sync and lifecycle activity for this integration. Use it to verify that syncs are running, confirm that imports completed successfully, and investigate any failures.

For the full event type reference and detail panel fields, go to [Integration Events](/internal-developer-portal/use-idp/software-catalog/create-entity/catalog-discovery/integration-events.md).

***

### View GCP entities in the catalog <a href="#view-gcp-entities-in-the-catalog" id="view-gcp-entities-in-the-catalog"></a>

Once imported, GCP entities are available in the **Catalog** section of IDP as standard catalog entities. Each entity's kind and type reflect the selections made during resource configuration.

Open any entity to view GCP-sourced data such as asset type, location, project, and state directly on the entity details page. This data is displayed through two dedicated UI components: a card on the **Overview** tab and a **GCP Integration** tab. Both require a one-time layout configuration, described in the [next section](#layout-for-gcp-components).

#### Layout for GCP components <a href="#layout-for-gcp-components" id="layout-for-gcp-components"></a>

To display GCP data on the [entity details](/internal-developer-portal/use-idp/software-catalog/create-entity/entity-details.md) page, you need to add the two GCP components to the relevant entity layout. This is a one-time configuration per entity kind and type.

1. From the left sidebar of IDP, go to **Configure** → **Layout** → **Catalog Entities**.
2. Edit the existing layout for your entity or create a new one.
3. Select the **Entity Kind** (e.g., `resource`) and the **Entity Type** (e.g., `compute_instance`) that matches your imported GCP entities.
4. In the YAML editor, add the `IntegrationsContent` component inside the **Overview** tab's `contents` block, and add a new **GCP Integration** tab using the `GCPIntegrationTab` component.

   Figure 8: Layout configuration for GCP Cloud Card and GCP Integration tab

   The relevant YAML additions are:

   ```yaml
           - component: IntegrationsContent
             specs:
               props:
                 variant: gridItem
               gridProps:
                 md: 12
   ```

   ```yaml
       - name: GCP
         path: /gcp
         title: GCP Integration
         contents:
           - component: GCPIntegrationTab
   ```
5. Click **Save** to apply the layout changes. The GCP components will now appear on all entity detail pages of the selected kind and type that have GCP data.

#### GCP card in overview tab <a href="#gcp-card-in-overview-tab" id="gcp-card-in-overview-tab"></a>

After the layout is configured, a card appears in the **Overview** tab of any entity that has GCP data linked to it. The card displays the key GCP metadata ingested for that entity, sourced from the entity's [ingested properties](#ingested-properties).

Figure 9: GCP Cloud Card on the Overview tab

If the GCP integration has not been configured for the entity, the card shows a **Not configured** state with a link to the Integrations page. If multiple GCP integrations are active on your account, a dropdown appears at the top of the card to switch between integrations.

#### GCP integration tab <a href="#gcp-integration-tab" id="gcp-integration-tab"></a>

The **GCP Integration** tab provides a more complete view of the GCP data for the entity. This tab fetches latest possible data using the integration ID and entity UUID.

Figure 10: GCP Integration tab showing full GCP resource details

{% hint style="info" %}
**FEATURE HIGHLIGHTS**

* The tab shows all available fields for the resource type, including fields not present in the **Overview**.
* All the fields are dynamic.
* If a value is not available for the resource, a dash (`-`) is shown.
* The top-right corner shows when the data was last synced from GCP, based on your configured [update frequency](#4-configure-advanced-settings).
* If multiple GCP integrations are linked to the entity, a dropdown appears above the details to switch between integrations.
  {% endhint %}

#### Ingested properties <a href="#ingested-properties" id="ingested-properties"></a>

To inspect the raw data ingested from GCP, open the entity and click **View YAML** → **Ingested Properties** in the Entity Inspector.

Figure 11: Entity Inspector Page showing Ingested Properties

Ingested properties are stored in two sections of the entity YAML:

* **`metadata.integration`**: Tracks which integrations are linked to this entity, including the entity action (e.g., `REGISTER`) and the linked entity UUID.
* **`integration_properties.GCP`**: Contains the GCP-specific data for the entity, including fields such as `assetType`, `createTime`, `displayName`, `identifier`, `location`, `organization`, `projects`, `resourceName`, `state`, and others depending on the resource type.

***

### Manage the Google Cloud integration <a href="#manage-the-google-cloud-integration" id="manage-the-google-cloud-integration"></a>

#### Edit the integration <a href="#edit-the-integration" id="edit-the-integration"></a>

To update the integration name, switch the GCP connector, change the scope, or modify resource selections, navigate to the **Integrations** page, find your GCP integration card, and click **View**. From there, click **Configuration** to open the edit screen.

#### Suspend auto-discovery <a href="#suspend-auto-discovery" id="suspend-auto-discovery"></a>

If auto-discovery is suspended, new entities will not appear in the **Discovered** tab. Existing imported entities remain unchanged in the catalog, and the sync between GCP and their corresponding IDP entities will stop.

To suspend auto-discovery:

1. Go to **Integrations** and open your GCP integration using the **View** button.
2. Click **Configuration** at the top.
3. In the **Danger Zone** section, click **Suspend**.
4. Confirm the action.

You may re-enable it at any time by following the same steps.
