How access works
- Reducto authenticates with a JSON key for a service account in your project. Reducto never falls back to its own Google identity: a GCS environment without a key is rejected when you save it.
- The key is not tied to a Reducto region, so GCS setup needs no Reducto principal ARNs, ExternalId, or per-region trust configuration. One key works for US, EU, and AU processing.
- Keyless access (Workload Identity Federation or service account impersonation) is not supported for GCS.
- After you save the key, Reducto never returns it. The configuration API and audit log show
service_account_json_configured: trueinstead.
Prerequisites
- GCP project that owns the bucket, with permission to create buckets, service accounts, and service account keys
- Service account key creation allowed in that project (see the warning in step 4)
- Owner or Admin role in your Reducto organization, to configure Hybrid VPC in Studio
gcloudCLI (optional, for the commands below)
Setup
1
Create the bucket
Choose a location in the data residency where Reducto should process your documents (see Data residency).GCS bucket names must not start with
goog or contain google.2
Create a service account
3
Grant the service account access to the bucket
Grant both roles on the bucket only, not on the project:
Signing result URLs needs no extra role: Reducto signs them with the key itself, not through the IAM
signBlob API.4
Create a JSON key
5
Add a lifecycle rule (recommended)
Delete Reducto objects automatically one day after they are created. See Data lifecycle.
6
Configure the environment in Studio
- In Studio, go to Settings → Hybrid VPC.
- Add a new environment and choose Google Cloud Storage as the provider.
- Enter the region, bucket name, project ID, and optional bucket folder (see Integration values).
- Paste the full contents of
reducto-key.jsonintoservice_account_json. - Click Verify storage access. Reducto reads the bucket metadata, then writes, reads, and deletes a test object named
.reducto-hybrid-vpc-verify.txtin the bucket folder. - Save the configuration after verification succeeds.
reducto-key.json or move it to your secret manager.If you do not see the Hybrid VPC tab, ask Reducto to turn on self-serve Hybrid VPC for your organization, or send the integration values to your Reducto team through a secure channel.If your Reducto team manages your organization’s Hybrid VPC environment profile, ask them to make changes. A Reducto-managed profile takes precedence over environments saved in Studio.
Integration values
GCS-only configurations do not need an
external_id. That value applies only to S3 environments.
Data residency
Theregion decides which Reducto region processes the environment’s documents. Send requests for the environment to the matching API endpoint:
Other GCP regions, such as
asia-* or southamerica-*, are not supported. For a multi-region or dual-region bucket (for example location US or EU), enter a region in the same residency, such as us-central1 or europe-west1. Reducto does not check the region against the bucket’s location.
A request sent to an endpoint whose residency does not match the environment’s region fails with HTTP 400.
Multiple environments
You can add several GCS environments, and mix them with S3 environments, under one Reducto organization, for examplestaging, prod, staging-gcp, and prod-gcp. Each environment has its own bucket, service account key, and region. A saved configuration applies to all Reducto regions.
The Hybrid VPC configuration has this shape:
default_environment. When the organization has more than one environment, set a default or name an environment on every request. Without a default, a request that names no environment either fails or, if Reducto also registered regional S3 storage for your organization, writes to that S3 storage instead of GCS.
Usage
Select the environment per request. Where the setting goes depends on the endpoint:/parse:settings.hybrid_vpc.environment/extractand/split:parsing.settings.hybrid_vpc.environment
gs://bucket/object-key URI as the input. Reducto downloads it with the environment’s service account, so the object can stay private. The URI names its own bucket and key, so bucket_folder does not apply to it. To read from a bucket other than the Reducto bucket, grant the service account roles/storage.objectViewer on that bucket. If you configure the recommended lifecycle rule, keep source documents that you want to retain outside the Reducto bucket folder.
Reducto reads a
gs:// input only with the credentials of the GCS environment selected for the request. If your default environment is S3, name the GCS environment in the request.Result URLs
URLs in responses, such as large results and images, are V4 signedGET URLs on storage.googleapis.com for one object in your bucket. They expire after 12 hours. The application that opens them must be able to reach storage.googleapis.com.
Data lifecycle
Configure a lifecycle rule to delete Reducto objects automatically. Scope it to the bucket folder withmatchesPrefix. Omit the prefix only if the bucket holds nothing but Reducto data:
lifecycle.json
Rotating the key
- Create a new key for the same service account.
- In Studio, paste the new key into
service_account_jsonfor the environment, verify, and save. Saving other changes without a new key keeps the stored key. - Wait 12 hours. Result URLs signed with the old key stop working when you delete it.
- Delete the old key:
gcloud iam service-accounts keys delete <old-key-id> --iam-account="$SA".
Network access
Reducto connects to your bucket over the public GCS endpoint (storage.googleapis.com). PrivateLink and Private Service Connect are not supported for GCS. If the project is inside a VPC Service Controls perimeter, contact Reducto before setup, because the perimeter blocks requests from outside it.
Validation checklist
- Verify storage access in Studio succeeds for each environment
- The service account has only
roles/storage.objectAdminandroles/storage.legacyBucketReader, granted on the bucket: - The bucket enforces public access prevention and uses uniform bucket-level access
- The lifecycle rule is in place:
- Smoke test: Run a small job with the environment selected and check that objects appear under the bucket folder
Troubleshooting
Studio allows about one verification every 30 seconds per organization.
Security
- Dedicated identity: Reducto acts only as your service account, never as its own Google identity.
- Least privilege: The service account holds two roles on one bucket and nothing at the project level.
- Key handling: Reducto never returns the key in API responses or audit logs. You own its rotation and can disable it at any time.
- Short-lived links: Every URL that Reducto returns is a signed read-only link to one object that expires after 12 hours.
- Automatic cleanup: Lifecycle rules ensure no long-term data persistence.