Connect Google Cloud Platform - GCP

Step 1 - Open the project selector

Go to console.cloud.google.com and select the project picker in the Google Cloud header.

Figure 1. Open the Google Cloud project selector.

Step 2 - Select the project and copy its ID

Choose the project whose Cloud Audit Logs you want to protect. After it opens, copy the Project ID from the welcome page.

Project ID versus project name: Jutsu validates the lowercase project ID, such as acme-prod-01. A friendly display name such as Acme Production is not accepted in that field.

Figure 2. Select the Google Cloud project.

Figure 3. Copy the Project ID from the project welcome page.

Step 3 - Open Integrations in Jutsu

Go to app.jutsu.ai and select Integrations in the left navigation. Open the Data Sources category if it is not already selected.

Figure 4. Open Integrations in Jutsu.

Step 4 - Select Google Cloud Platform

In the Cloud section, select the Google Cloud Platform card or its connect icon.

This integration pulls Cloud Audit Logs for IAM changes, API calls, and resource activity across services such as Compute Engine, GKE, Cloud Storage, and BigQuery.

Figure 5. Select the Google Cloud Platform integration.

Step 5 - Enter the connection details

Complete the connection form:

NameA clear label for the project, such as Acme - GCP production.
GCP project IDPaste the exact project ID copied from Google Cloud.
Pub/Sub subscription IDKeep jutsu-audit-sub unless you have a deliberate naming requirement.
Setup methodKeep One-click selected. Cloud Shell is the recommended keyless path.

Figure 6. Enter the integration name and Google Cloud project ID.

Step 6 - Start setup

Review the project ID and subscription ID, then select Start setup. Jutsu creates a pending asset and prepares a single Cloud Shell command.

Figure 7. Select Start setup.

One-time registration secret: The command contains a 256-bit secret that expires after 24 hours and is consumed on successful registration. Jutsu stores only its cryptographic hash. Do not paste the command into tickets, chat, documentation, or shell history on a shared workstation.

Step 7 - Open Cloud Shell and copy the command

In the next dialog, select Open Cloud Shell. A new Google Cloud tab opens with the Google Cloud CLI already installed and signed in as your current Google identity.

Figure 9. Open Google Cloud Shell, then copy the one-command setup line.

Return to Jutsu and select Copy beside Step 2. Paste only the command generated for your own project. The exact asset ID, Jutsu service account, registration URL, and one-time secret are already filled in.

Figure 8. Select Copy to copy the generated command.

Step 8 - Run the setup script

  1. In Cloud Shell, paste the copied command and press Enter.
  2. If prompted to authorize Cloud Shell or the Google Cloud CLI, review the account and project, then continue.
  3. Wait while the script enables APIs, creates or reuses the named resources, applies the two IAM grants, and registers the asset.
  4. Do not close Cloud Shell until the terminal prints Done - head back to Jutsu; the integration flips to Connected automatically.

Figure 10. Paste the copied command into Cloud Shell and press Enter.

Step 9 - Wait for Done

A successful run ends after Registering the integration with Jutsu. The output also confirms the topic, subscription, sink writer grant, and Jutsu subscriber grant.

Figure 11. The Cloud Shell script has completed successfully.

Safe to re-run: If the script stops partway through, fix the reported permission or policy issue and run the same command again while its registration secret is still valid.

Step 10 - Confirm the asset in Jutsu

Return to Jutsu and open Assets. The Google Cloud project appears as a connected pull integration. It can show Warming up for the first 5-10 minutes while Jutsu waits for the first qualifying event.

Figure 12. The Google Cloud asset is registered and warming up.

Select the asset to view connection details, 5-minute, 1-hour, and 24-hour event counts, source-type breakdown, and the 20 most recent events.

Verify the connection

  1. Open Assets, select the Google Cloud asset, and review Connection details. Confirm the project ID, subscription ID, and Authentication: IAM grant (keyless).
  2. Use Test connection. A successful result reads Subscription reachable. The check performs a one-message pull without acknowledging any returned message, so it can be redelivered after the acknowledgement deadline.
  3. Allow up to 15 minutes for the first event. A quiet project can show No events yet indefinitely without indicating a fault.
  4. Check Source-type breakdown for gcp.audit and review the 20 most recent events after activity arrives.
  5. Confirm Last event advances when new qualifying audit activity occurs.

Minimum severity: New Google Cloud assets start at Medium and above. Successful routine API calls are often informational in Jutsu and will not appear in analyzed events at this setting. Use the asset's Severity action to choose All events (info) when broader visibility is required.

Optional low-impact event test

If the project is quiet, temporarily set the asset's minimum severity to All events (info), then create and delete a dedicated test topic. Replace the placeholder with the connected project ID.

Generate two Admin Activity events, then restore your preferred severity filter

gcloud pubsub topics create jutsu-audit-verification --project=<PROJECT_ID> gcloud pubsub topics delete jutsu-audit-verification --project=<PROJECT_ID> --quiet

Do not use an existing topic: The second command deletes the named test topic. Run it only with the dedicated jutsu-audit-verification name shown above.

Coverage and detection behavior

The one-click sink matches Cloud Audit Log names across Google Cloud services. Google publishes four audit-log types: Admin Activity, Data Access, System Event, and Policy Denied.

Admin ActivityAlways generated for configuration and metadata changes; the best source for initial validation.
System EventAlways generated for Google-initiated configuration changes.
Policy DeniedGenerated by default when a security policy blocks access.
Data AccessRecords reads and user-data access. Disabled by default for most services except BigQuery; enable deliberately after reviewing volume and cost.

High-signal normalization in Jutsu

Google Cloud activityJutsu severityDetection context
SetIamPolicyHighPrivilege Escalation - MITRE T1098.003
Service-account key creationHighPersistence - MITRE T1098.001
Logging sink update or deletionCriticalDefense Evasion - MITRE T1562.008
Firewall create, update, or deleteMedium or higherDefense Evasion - MITRE T1562.007
Denied or failed API callAt least MediumFailure status preserved for investigation

Data Access is optional: Enable Data Access audit logs only for services and permission types that your security program needs. They can materially increase log volume and Google Cloud charges.

Alternative setup methods

Manual IAM - existing sink and subscription

  1. Confirm the existing Logging sink routes Cloud Audit Logs to a Pub/Sub topic and that the sink's writer identity has roles/pubsub.publisher on that topic.
  2. Confirm a pull subscription exists and note its project ID and subscription ID.
  3. In the Jutsu connection dialog, choose Manual IAM. Enter the integration name, project ID, and subscription ID.
  4. Run the displayed gcloud command to grant Jutsu's service account roles/pubsub.subscriber on that subscription.
  5. Select Connect, then review the immediate subscription-access test.

Service-account key - fallback only

  • Create or reuse a dedicated Google service account and grant it roles/pubsub.subscriber on only the required subscription.
  • Create a JSON key for that service account. Jutsu validates type=service_account plus client_email, private_key, and private_key_id.
  • Choose Key in the connection dialog, paste the JSON, and select Connect.
  • Store and rotate the key according to your credential-management policy. Delete any local downloaded copy after secure transfer.

Prefer keyless IAM: Key mode stores the JSON encrypted and uses it only to consume the subscription, but it still creates a long-lived credential. Use One-click or Manual IAM whenever cross-project grants are allowed.

Organization-wide coverage

The one-click flow creates a project-level sink. Security teams that already operate an aggregated organization sink can route child-project Cloud Audit Logs into a shared topic and subscription, grant Jutsu subscriber access, and connect it with Manual IAM. Validate scope, tenancy, and log volume before using a shared subscription.

Troubleshooting

The Cloud Shell script reports Permission denied

  • Confirm the active Cloud Shell account and the --project value in the copied command.
  • Ask a project administrator for Service Usage Admin, Logs Configuration Writer, and Pub/Sub Admin, or run the setup with a Project Owner identity.
  • If adding Jutsu's service account is rejected, check domain-restricted sharing and other organization policies that restrict external principals.
  • After permissions are corrected, run the same command again before its 24-hour registration window expires.

The script finishes, but Jutsu stays Pending

  • Confirm the terminal reached Registering the integration with Jutsu and the final Done message.
  • Verify that Cloud Shell can reach https://api.jutsu.ai and that a proxy or egress policy did not block the registration callback.
  • Wait one polling interval, then refresh Assets or Integrations. The setup dialog checks status every 5 seconds while open.
  • The registration secret expires after 24 hours. If it expired, start a fresh setup in Jutsu and run the new command. The Google Cloud resource creation is idempotent.

The integration is Connected, but no events appear

  • A quiet project is not an error. Admin Activity appears only when configuration changes occur, and most read operations require Data Access logging, which is off by default.
  • Review the asset's Severity filter. Medium and above can intentionally hide routine successful API activity.
  • Use Test connection to verify that Jutsu can consume the subscription.
  • In Google Cloud Log Router, confirm jutsu-audit-sink points to pubsub.googleapis.com/projects/<PROJECT_ID>/topics/jutsu-audit-logs and uses the cloudaudit.googleapis.com filter.
  • On the Pub/Sub topic, confirm the sink writer identity has roles/pubsub.publisher. On the subscription, confirm Jutsu's service account has roles/pubsub.subscriber.
  • If a resource with a Jutsu default name existed before setup, inspect it carefully. The idempotent script reuses existing resources and does not overwrite a pre-existing sink's destination or filter.

Troubleshooting - connection test errors

MessageMeaningAction
pubsub API 403Jutsu's principal cannot consume the subscription.Grant roles/pubsub.subscriber on the exact subscription to the displayed Jutsu service account.
pubsub API 404The project or subscription ID is wrong, or the subscription was deleted.Compare Jutsu connection details with the Pub/Sub subscription resource.
metadata server unreachableThe Jutsu API probe lacks its own GCP workload identity.Ingestion may still work. Check event arrival; contact Jutsu support if the probe remains unavailable.
No events yetThe subscription is reachable but no qualifying activity has arrived.Wait for activity, review severity, or run the optional test.

Inspect the Google Cloud resources

Read-only checks for destination and IAM bindings

gcloud logging sinks describe jutsu-audit-sink --project=<PROJECT_ID> gcloud pubsub topics get-iam-policy jutsu-audit-logs --project=<PROJECT_ID> gcloud pubsub subscriptions get-iam-policy jutsu-audit-sub --project=<PROJECT_ID>

Security and access

  • Jutsu receives roles/pubsub.subscriber on one subscription. It permits message consumption, not project administration or topic publishing.
  • The Logging sink's Google-managed writer receives roles/pubsub.publisher only on the destination topic.
  • The setup command returns a one-time registration secret. Jutsu stores only its SHA-256 hash; it expires after 24 hours and is consumed on registration.
  • The subscription is the durable cursor. Jutsu acknowledges a message only after ingest accepts it; deterministic event IDs absorb redelivery duplicates.
  • Key-mode credentials are encrypted at rest and written to a temporary, permission-restricted connector file at runtime. Keyless IAM avoids that credential lifecycle.

Pause, archive, or remove

PauseDisable the asset in Jutsu. The pull connector stops on its next reconciliation without deleting the saved configuration.
ArchiveStop ingestion and free the plan slot. Collected events and alerts remain available; Google Cloud resources stay in place.
Full teardown - IAM modeAfter archiving, run Jutsu's Cloud Shell teardown command. It removes the sink, subscriber grant, subscription, and topic and is safe to re-run.
Full teardown - key modeDelete the service-account key, then remove the dedicated sink, subscription, and topic if they are no longer required.

Check for shared resources: The IAM-mode teardown command assumes the default Jutsu sink and topic names. Before running it, confirm that no other workflow depends on those resources. Deleting a topic or subscription permanently removes that delivery path.

Route logs to Pub/SubCloud Audit LogsEnable Data Access logs
Pub/Sub IAMService Usage IAM