GCP Organisation Level Onboarding Guide

Last updated: April 6, 2026

This guide explains how to onboard a GCP Organisation into the Matters platform using the Organisation access scope.

As part of the setup, you will need to download and run a Terraform template provided by Matters.

The provided Terraform template (gcp_org_onboarding.tf and gcp_org_onboarding.tfvars) will:

  • Create a custom IAM role at the Organisation level

  • Assign the required permissions to that role

  • Bind the role to an existing Service Account

  • Optionally restrict access to a specific Folder

Prerequisites

Before starting, ensure the following:

  1. You have Matters Super Admin access.

  1. You have access to the target GCP Organisation with permissions to:

    • Create organisation-level custom IAM roles

    • Create IAM bindings

    • List folders and projects

  1. The required Google Cloud APIs are already enabled (IAM, Cloud Resource Manager, BigQuery, Storage, etc.).

1. Enable Following Required Google APIs

Step 1 Configure Integration in Matters Console

  • Log in to the Matters Console as a Super Admin.

  • Navigate to:

    Integrations → Cloud → Google Cloud

    (URL: https://app.matters.ai/data-security/integrations?type=cloud.

    If you use a dedicated tenant, replace app with your tenant name.)

  • Click Connect on the GCP integration card.

  • Provide:

    • Integration Name

    • Access Level Scope → Organisation

  • Enter:

    • Organization ID

    • Folder ID (Optional)

FieldPurpose

Organization ID

Identifies the GCP Organisation where integration will take place

Folder ID

Restricts role creation to a specific folder (otherwise applies to the entire organisation)

  • Click Continue Setup.

Step 2: Download and Extract the Terraform Script

  1. Click on the Google Cloud Shell hyperlink to log in to the GCP Admin account.

  1. In the next step on the Matters Dashboard, click Download Script.

A .zip file will be downloaded.

  1. Extract the zip — it contains two Terraform files:

    • gcp_org_onboarding.tf → Terraform configuration to create:

      • Custom IAM Role (Organisation level)

      • Required IAM permissions inside the role

      • IAM role binding (Organisation or Folder level)

    • gcp_org_onboarding.tfvars → Variable file where you provide:

      • org_id

      • folder_id (optional)

      • matters_service_account_email (existing Service Account)

These files automate IAM role creation and role binding inside Google Cloud.

Note: The Terraform template does NOT create a Service Account, generate a key, or enable APIs.

Step 3: Open Google Cloud Shell

  1. In the GCP Management Console, click SSH (top-right corner) to activate Cloud Shell.

  1. Authorize access when prompted. Cloud Shell will now be ready for Terraform execution.

Step 4: Upload the Terraform Folder to Cloud Shell

  1. In Cloud Shell, click the Upload option.

  1. Select the extracted folder from your system and click on upload.

  1. Once upload is complete, navigate into the folder:

    cd <folder_name>

  1. Confirm files exist:

ls

You should see gcp_org_onboarding.tf and gcp_org_onboarding.tfvars.

Step 5: Run Terraform to Create Required Resources

  1. In Cloud Shell, navigate to the folder where the files were uploaded and execute the following command (you may also copy this command from the Matters Dashboard):

terraform init && terraform apply -auto-approve -var-file="gcp_org_onboarding.tfvars"

  1. After Terraform completes successfully:

    Click Validate in the Matters Console. Matters will verify access and permissions.

Step 6: Select Projects to Onboard

After validation is successful:

  1. You will see a list of all accessible GCP projects.

  1. Select the projects you want to add into Matters.

  1. Click Save to complete onboarding.

Step 7: Integration Complete

You will see “Integration Successful” message once Integration is complete

Once the accounts are successfully integrated, all supported data stores across the selected GCP accounts will be automatically discovered in the Matters dashboard.

After discovery, you can click on the data store selectively and can run scans on specific data stores to identify and classify sensitive entities as per your requirements. This allows you to focus on relevant resources and efficiently manage sensitive data across your organization.

Understanding What the Terraform Script Configures

1. Custom IAM Role Creation (Organisation Level)

The Terraform script creates a custom IAM role at the Organisation level.

This role includes permissions required for:

  • BigQuery discovery and metadata access

  • Cloud Storage visibility

  • Cloud SQL metadata access

  • Cloud KMS visibility

  • Dataform and Dataplex visibility

  • Organisation, folder, and project listing

  • IAM policy visibility

The following permissions are added to the custom role:

IAM Permissions Included in the Custom Role

Service Area

IAM Permission

Purpose / Capability

BigQuery

bigquery.readsessions.update

Manage read sessions

bigquery.readsessions.create

Create read sessions

bigquery.readsessions.getData

Retrieve read session data

bigquery.tables.get

Read table metadata

bigquery.tables.list

List tables

bigquery.tables.getData

Read table data

bigquery.tables.getIamPolicy

Read table IAM policy

bigquery.tables.export

Export BigQuery data

bigquery.tables.replicateData

Replicate table data

bigquery.tables.createSnapshot

Create table snapshots

bigquery.datasets.get

Read dataset metadata

bigquery.datasets.create

Create datasets

bigquery.datasets.getIamPolicy

Read dataset IAM policies

bigquery.jobs.list

List query jobs

bigquery.jobs.create

Run jobs (queries, exports, etc.)

bigquery.models.list

List ML models

bigquery.models.getMetadata

Read ML model metadata

bigquery.models.getData

Read ML model data

bigquery.models.export

Export ML models

bigquery.routines.list

List routines

bigquery.routines.get

Read routines (UDFs)

bigquery.savedqueries.list

List saved queries

bigquery.savedqueries.get

Read saved query definitions

bigquery.transfers.get

View Data Transfer configurations

bigquery.config.get

Read project BigQuery configuration

bigquery.reservations.get

View reservation configuration

bigquery.reservations.list

List reservations

bigquery.reservations.use

Use BigQuery slots

bigquery.reservations.listFailoverDatasets

List failover datasets

bigquery.reservationAssignments.list

List reservation assignments

bigquery.reservationAssignments.search

Search reservation assignments

bigquery.capacityCommitments.get

View capacity commitments

bigquery.capacityCommitments.list

List capacity commitments

bigquery.bireservations.get

View BI reservation settings

bigquerymigration.translation.translate

Translate SQL to BigQuery

Dataform

dataform.locations.list

List Dataform locations

dataform.locations.get

Read location information

dataform.repositories.list

List Dataform repositories

dataform.repositories.create

Create repositories

Dataplex

dataplex.projects.search

Discover projects in Dataplex

Cloud KMS

cloudkms.keyHandles.create

Create Key Handles for cryptographic APIs

cloudkms.keyHandles.get

Read key handles

cloudkms.keyHandles.list

List key handles

cloudkms.operations.get

Inspect KMS operations

cloudkms.projects.showEffectiveAutokeyConfig

View Autokey configuration

Cloud SQL

cloudsql.instances.get

View instance metadata

cloudsql.instances.list

List SQL instances

cloudsql.instances.connect

Allow connection using ephemeral certificate

cloudsql.instances.export

Export Cloud SQL data

Cloud Storage

storage.objects.get

Read objects

storage.objects.list

List objects in buckets

storage.buckets.get

View bucket configuration

storage.buckets.list

List buckets

storage.buckets.getIamPolicy

View bucket IAM policy

Resource Manager

resourcemanager.folders.get

Read folder metadata

resourcemanager.folders.list

List folders

resourcemanager.projects.list

List projects in org/folder

resourcemanager.projects.getIamPolicy

Read project IAM policy

2. Role Binding

After creating the custom IAM role, Terraform:

  • Binds the role to the existing Service Account specified in:

    matters_service_account_email

  • Applies the binding at:

    • Organisation level (default), or

    • Folder level (if Folder ID is provided)