Multi-cloud Data Lakes

Published
Length
3 min read

Luis Felipe Dias

All posts

You build multi cloud data lakes by separating object storage from query engines. You then link your storage buckets through one shared metadata catalog. Most data teams start by setting up storage accounts across two or three clouds. They use open table formats so query tools can read files anywhere. When teams grant broad storage roles to speed up work, risk grows fast. One compromised credential can expose raw files across every cloud account at once. How to architect multi cloud data lakes

Multi-Cloud Security Posture: the complete guide

Architecture patterns, implementation strategies, and security best practices. Delivered to your inbox.

Free white paper. No spam. Unsubscribe anytime.

You build multi cloud data lakes by separating object storage from query engines. You then link your storage buckets through one shared metadata catalog. Most data teams start by setting up storage accounts across two or three clouds. They use open table formats so query tools can read files anywhere. When teams grant broad storage roles to speed up work, risk grows fast. One compromised credential can expose raw files across every cloud account at once.

How to architect multi cloud data lakes

A strong cross-cloud architecture relies on three clear layers that work together. First, each cloud provider holds raw data files inside native object storage buckets. Second, an open table format tracks which files belong to each table version. This layer sits right on top of the raw object storage files. Third, a central catalog tracks table locations and schemas across all cloud accounts.

Query engines talk to the central catalog before they read any data files. The catalog checks the user role and returns the exact storage file paths. Next, the query engine uses cloud identity federation to assume a storage role. This federation step removes the need to copy static keys between different clouds. An identity provider issues a token that each cloud trusts for role assumption. The engine then reads or writes the allowed object paths directly in storage.

How to set up cross-cloud identity and permissions

Start by linking every cloud account to one central identity provider. Map your user groups to specific roles inside each cloud provider console. Keep storage bucket permissions locked down to the catalog and query engines only. Do not let analysts or apps read raw storage buckets directly with keys.

Next, define table and column rules inside your central metadata catalog. When a user runs a query, the catalog checks these table rules first. This setup keeps role definitions in one place instead of three separate clouds. Teams should also turn on audit logs in every cloud storage account. Send all storage and catalog logs to one central log bucket for review.

Multi-Cloud Security Posture: architecture patterns and best practices

Continue reading? Get the full guide.

Free. No spam. Unsubscribe anytime.

What native catalog roles solve and what they miss

Native cloud roles and central catalogs solve the initial login problem well. They decide which user or app can start a session against a table. They also stop unauthorized users from listing raw buckets in other clouds. This setup works well for scheduled batch jobs with fixed query patterns.

Still, native setup rules leave a big gap during live user sessions. Once a user logs in with a valid role, the query runs free. Storage roles cannot inspect individual SQL statements or commands while they run. A user with read rights can still pull millions of rows at once. Native roles also vary in how they mask fields across different engines. One engine might rewrite emails and phone numbers, while another returns raw text. Teams need uniform controls that check every query and mask sensitive fields everywhere. For example, masking should rewrite card numbers and national IDs in query results.

Check database and API queries on the wire

Identity tools, roles, and network rules decide who opens a session. Setup alone cannot check what each query does or mask sensitive values in a response once a session starts. When workflows touch Postgres, MySQL, SQL Server, MongoDB, ClickHouse, Kubernetes APIs, SSH, or internal HTTP APIs, hoop.dev sits inline in the wire protocol beside those services as an open-source proxy, a sidecar for your Postgres or API. On every query an AI agent or engineer runs against production, hoop.dev decides to pass, mask, block, or hold it for human review.

Your login details and client tools stay as they are while hoop.dev guardrails refuse bad deletes or drops before they run, and hoop.dev data masking rewrites matched sensitive values in responses in memory. Furthermore, hoop.dev holds SOC 2 Type II, is MIT licensed, and writes every query and decision to an audit trail that generates evidence for HIPAA, GDPR, and PCI DSS. See the source on GitHub.

Frequently asked questions

How do you avoid high data transfer fees across clouds?

Run your compute engines in the same cloud region as the target bucket. Send only small aggregated query results back across the network to users.

Why use open table formats for cross-cloud storage?

Open table formats let different query engines read the exact same storage files. You avoid copying data into proprietary formats for each cloud tool.

How should teams handle sensitive fields across multiple clouds?

Apply data masking rules in the path of the query before results return. This rewrites emails, phone numbers, and card numbers in results across every engine.

Save the open-source gateway.

hoop is MIT-licensed infrastructure for controlling how AI agents reach production data. Star hoophq/hoop so you can inspect it, deploy it, or share it when your team starts governing agent access.