Skip to main content

How to add GCP projects to Azure or AWS

To enable cross-cloud access from GCP, you need to designate a primary GCP project where evidence will be stored and managed. A service account within this primary project coordinates IAM access to allow Cado to import evidence from other GCP projects.

note

You will need permission to create IAM roles, service accounts, and generate keys before continuing.

Required APIs to Enable

Ensure the following APIs are enabled in your primary GCP project. You can enable them from the Google Cloud Console:

Steps to Add a GCP Project

tip

Parts of this process can be automated by using our GCP Automated Setup Scripts. Those steps will contains links to the relevant scripts when appropriate.

  1. Sign In to Your Primary GCP Project
    Start by logging into the GCP project that you will designate as the primary project for storing evidence.

  2. Create a GCS Bucket for Evidence Storage
    Set up a new Google Cloud Storage (GCS) bucket to store evidence collected by Cado. You will select this bucket during the import process in the Cado interface.

  3. Create a Cado IAM Role
    Create a new IAM role for Cado with the required permissions. The permissions for cross-cloud acquisitions are listed below.
    Script link

    info

    This role can be created at the organization level to provide access to multiple projects using one service account.

  4. Assign the IAM Role to the Compute Engine Principal

    • Go to IAM and Admin > IAM in the Google Cloud Console.
    • Locate the principal with the format xxxxxxxxxxxx-compute@developer.gserviceaccount.com
      • You may need to check the box 'Include Google-provided role grants'
    • Edit this principal to grant it the new Cado IAM role.
    • Note down the principal name, as it will be used to configure access to other GCP projects.
  5. Create a New Service Account and Grant Role
    Follow these Google instructions to create a new service account in the primary GCP project. Assign the newly created Cado IAM role to the service account by following these Google instructions, making sure to grant it the Cado IAM role.
    Script link

  6. Create Service Account Credentials and add to Cado
    Navigate to the Keys tab of the created service account and Add Key, selecting the JSON option. This is the JSON you will input into the Cloud Accounts settings section in Cado.

    warning

    These credentials are sensitive and should be stored appropriately according to your organization's password/secret management policy

  7. Grant Access to Other GCP Projects
    To allow Cado to collect evidence from additional GCP projects, follow the Cado documentation for setting up access to each additional project.
    Script link


Permission list for importing from GCP into a Cado deployment in AWS or Azure

Please see here for permissions for Cado to be deployed in GCP, as opposed to just importing from GCP.

PermissionPurpose
Required for Compute acquisition
cloudbuild.builds.getView details of a specific build.
cloudbuild.builds.createStart a new build using Cloud Build.
compute.disks.getView details of a specific disk.
compute.disks.useAttach and use disks with read/write access.
compute.disks.listList all disks in a project or zone.
compute.disks.useReadOnlyAttach and use disks with read-only access.
compute.globalOperations.getView global operation status.
compute.images.createCreate custom images from disks or snapshots.
compute.instances.getView details of a specific instance.
compute.instances.listList all VM instances.
compute.images.deleteDelete VM image
compute.images.getView details of a specific image.
compute.instances.getSerialPortOutputRead the serial port output from a VM instance.
compute.projects.getView project-level metadata and settings.
Required for Store and other acquisitions
storage.buckets.createCreate new GCS buckets.
storage.buckets.getView details of a specific bucket.
storage.buckets.listList all buckets in a project.
storage.objects.createUpload new objects (files) to a bucket.
storage.objects.getDownload or view objects.
storage.objects.listList objects in a bucket.
Required for GKE acquisition
container.clusters.getView details of a specific GKE cluster.
container.clusters.listList all GKE clusters in a project.
container.pods.execExecute commands inside a running pod (e.g., kubectl exec).
container.pods.getView details of a specific pod.
container.pods.listList all pods in a namespace or cluster.
iam.serviceAccounts.implicitDelegationAllows service accounts to delegate to Kubernetes API
Required for access to GCP projects, necessary for all acquisitions
iam.serviceAccounts.getAccessTokenGenerate access tokens for service accounts (used for authentication).
resourcemanager.projects.getView metadata and configuration of a GCP project.