Skip to main content
This guide covers setting up Hybrid VPC with Azure Blob Storage as your storage backend. Reducto reads and writes documents in one container of your Storage account, and signs short-lived, read-only SAS links to results in that container. Reducto connects in one of two ways:
  • Managed identity (recommended): Reducto signs in to your Entra ID tenant as a user-assigned managed identity that you own. You give Reducto no secret, and your Storage account can disable shared key access.
  • Connection string: You give Reducto a Storage account connection string that contains an account key.

Managed identity

You create a user-assigned managed identity in your tenant and add a federated identity credential to it. The credential trusts Reducto’s AWS account, so Reducto signs in as the identity with a short-lived token from AWS instead of a stored secret. Azure role assignments decide what the identity can reach.

Architecture

  1. Reducto’s workers request a short-lived token from AWS. The token names Reducto’s federation role for the region and an audience that contains your Reducto organization ID.
  2. Microsoft Entra ID accepts the token only if your identity’s federated credential matches its issuer, subject, and audience. Entra ID then issues a token for your identity.
  3. Reducto uses that token to read your input documents and to write results and intermediate artifacts to your container.
  4. When a response contains a URL to a result or an image, that URL is a read-only user delegation SAS link to one blob in your container. Reducto signs it with a user delegation key that it requests as your identity. The link expires after at most 12 hours.
Reducto derives the audience from the organization that sends the request. Another Reducto customer who enters your tenant ID and client ID gets a token for their own organization ID, which your federated credential does not trust.

Federated credential values

Add one federated credential to the identity for each Reducto region that processes your documents. All three fields must match exactly. Microsoft Entra ID allows one federated credential per issuer and subject on an identity. Use a separate identity for each Reducto organization that uses the same region.

Prerequisites

  • Azure subscription with permission to create a managed identity and a Storage account, and to assign roles on the Storage account (Owner, or User Access Administrator plus Contributor)
  • Terraform 1.2+ with the AzureRM provider 4.65 or later (optional, for automated setup)
  • Blob data access for the Terraform identity: The Storage account disables shared key access, so the provider calls the Blob data plane with Entra ID (storage_use_azuread = true). Before you apply, assign the user or service principal that runs Terraform Storage Blob Data Contributor on the subscription, because the example creates the resource group during the apply. If you adapt the example to use an existing resource group, you can assign the role on that group instead. Owner and Contributor alone do not include Blob data actions
  • Your Reducto organization ID (provided during onboarding)

Setup

1

Create main.tf

2

Initialize and apply

3

Read the values for Reducto

Send tenant_id, client_id, account_url, and container to your Reducto team. None of them is a secret.

Components provisioned

Integration values

Reducto supports the Azure public cloud (*.blob.core.windows.net) for managed identity connections.

Revoking access

  • Remove the role assignments to stop Reducto’s access to your data. Azure applies the change within minutes.
  • Revoke user delegation keys to invalidate result links that Reducto has already signed: az storage account revoke-delegation-keys -n "your-storage-account" -g "your-resource-group". This revokes every user delegation SAS on the Storage account.
  • Delete the federated credential to stop new sign-ins. An access token that Reducto already holds stays valid until it expires, for up to 24 hours, so also remove the role assignments for immediate effect.

Connection string

Reducto connects with a Storage account connection string that contains an account key. Use this option if you cannot create a managed identity.

Prerequisites

  • Azure subscription with permission to create a Storage account and read its access keys
  • Shared key access enabled on the Storage account (allowSharedKeyAccess = true, the Azure default)
  • Terraform 1.2+ with the AzureRM provider (optional, for automated setup)
  • Values from Reducto (provided during onboarding): your Reducto organization ID

Architecture

  1. You create a Storage account and a private container.
  2. You send Reducto the container name and the Storage account connection string.
  3. Reducto stores the connection string in a Hybrid VPC environment for your organization. API responses and audit logs never show it after it is saved.
  4. Reducto workers use the connection string to read your input documents and to write results and intermediate artifacts to the container.
  5. When a response contains a URL to a result or an image, that URL is a read-only SAS link to one blob in your container. Reducto signs it with the account key from the connection string. The link expires after at most 12 hours.

Setup

1

Create main.tf

2

Initialize and apply

3

Read the values for Reducto

Send both values to your Reducto team through a secure channel. Do not paste the connection string into email or chat.

Components provisioned

Integration values

The connection string has this form:
A SAS-only connection string (one that contains SharedAccessSignature= and no AccountKey=) is not supported. Reducto can read and write blobs with it, but requests that return result or image URLs fail because Reducto cannot sign SAS links without the account key.

Rotating the account key

The connection string contains one of the two account keys. To rotate without downtime:
  1. Copy the connection string for the key that Reducto does not use (for example, key2).
  2. Send the new connection string to your Reducto team, and wait for confirmation that the environment uses it.
  3. Wait 12 hours. SAS links that Reducto signed with key1 before the switch stay valid for up to 12 hours.
  4. Regenerate the old key (key1) in Access keys.
When you regenerate a key, every SAS link signed with that key stops working immediately. When you regenerate the key that Reducto currently uses, requests also fail until Reducto has the new connection string.

Environments

Reducto registers your values as a Hybrid VPC environment for your organization, with one data residency: us, eu, or au. One organization can have more than one environment, for example one Storage account per data residency or per client (see Multiple Environments). Send requests to the Reducto API of the environment’s data residency: A request that names no environment uses your organization’s default environment for the region of the API that you call. To select an environment, pass its name in settings.hybrid_vpc.environment for /parse, or in parsing.settings.hybrid_vpc.environment for /extract and /split. A request that names an environment of another data residency fails with HTTP 400.

Usage

After Reducto enables the environment, Reducto writes results and intermediate artifacts for your organization to your container. You can also pass a blob in the same Storage account as the input. Reducto reads it with the environment’s credentials, so the blob can stay private. With a managed identity, Reducto can read only the containers the identity has a role on. To read inputs from a container other than the Reducto container, assign Storage Blob Data Reader on that container to the identity. If you configure the recommended lifecycle rule, keep source documents that you want to retain outside the Reducto container, because the rule deletes them (see Data Lifecycle). The examples read your Reducto API key from the REDUCTO_API_KEY environment variable:
Replace acmereducto with your Storage account name and reducto-documents with your container name. For EU or AU data residency, use the regional API base URL from Environments.

Network access

Reducto workers connect to your Storage account over its public blob endpoint (https://<account>.blob.core.windows.net). Azure Private Link is not supported for Azure Blob Storage. If you restrict Public network access to selected networks, contact Reducto before you do so, or Reducto cannot read or write your container. SAS links in responses also use the public blob endpoint. The application that opens those links must be able to reach your Storage account.

Data Lifecycle

Configure lifecycle management to automatically delete blobs after processing. The Terraform examples above create this rule; the Azure CLI steps do not. The rule below deletes every block blob in the Reducto container one day after it was last modified, including documents that you upload there, so keep source documents that you want to retain in another container. Scope the rule to the Reducto container with prefixMatch, so that it does not delete blobs in other containers of the same Storage account:

Security

  • No stored secret (managed identity): Reducto signs in with a short-lived AWS token, and your federated credential accepts it only for your organization. Your Storage account can disable shared key access.
  • Least privilege (managed identity): The identity holds Storage Blob Data Contributor on the Reducto container only, and Storage Blob Delegator to sign links.
  • Account key scope (connection string): The account key gives full access to the Storage account, not only to the container. Use a dedicated Storage account for Reducto so that the key cannot reach other data. API responses and audit logs redact the connection string after it is saved.
  • Short-lived links: Every URL that Reducto returns is a read-only SAS link to one blob. It expires after at most 12 hours.
  • Automatic cleanup: Lifecycle management policies ensure no long-term data persistence.

Troubleshooting