Skip to main content

Trust and security

This page answers the questions a security review asks before connecting a data-quality tool to production data: where the checks run, what leaves your database, what Measured Cloud keeps, what reaches an AI model, how it's encrypted, where it's hosted and who else handles it.

Throughout, data means the values in your rows. Metadata means information about your data: table and column names, types, row counts and statistics.

At a glance​

QuestionAnswer
Where do checks run?In your database or warehouse, as SQL. Files and object storage are read by Measured Cloud's processing service, or by the Privacy Agent inside your network.
Are my tables copied?No. Checks return results, not rows. A profile reads a random sample of at most 10,000 rows into memory, computes statistics and discards it.
What's stored?Metadata, always. Values from your data only if your privacy level allows it. New organizations store metadata only.
What reaches an AI model?Metadata, plus values only at your privacy level, with sensitive values masked first. Every call is in your AI disclosure log.
Can our data stay behind our firewall?Yes. The Privacy Agent runs in your network, connects out only and keeps your database credentials.
How is it encrypted?TLS in transit; encrypted at rest by Google Cloud; secrets also encrypted per organization under a key held in Google Cloud KMS.
Where is it hosted?Google Cloud, us-central1 (Iowa, United States).

How your data moves​

Databases and warehouses​

For SQL Server, Oracle, PostgreSQL, SAP HANA, ClickHouse, Trino, Snowflake, BigQuery, Databricks and Redshift, Measured Cloud sends SQL to your database and the checks run there, on your compute. Your tables aren't copied out to run them. What comes back is pass or fail, counts of failing rows and, if your privacy level allows it, a few failing values (see below).

Measured Cloud sends your database:

  • the SQL for the checks you defined, including your own custom SQL rules;
  • read-only catalog queries to list your schemas and tables, with approximate row counts. These return no row values;
  • for "who can read this table", read-only queries of the grant metadata. These return account and role names, never data.

Profiling a table reads its row count, then a random sample of at most 10,000 rows into Measured Cloud's processing service. The sample is held in memory only while the column statistics are calculated, then discarded. Raw rows are never stored.

Files and object storage​

Files on Amazon S3, Google Cloud Storage and Azure Blob Storage (CSV, Parquet, JSON), and Iceberg and Delta tables, have no query engine of their own, so Measured Cloud's processing service reads them and runs the checks itself. Your data passes through Measured Cloud's compute during the run, in memory and in a temporary working directory. The directory is deleted when the run ends, and nothing is cached afterwards.

The Privacy Agent​

For data behind your firewall, the Privacy Agent runs inside your network and runs the checks against your database there.

  • Outbound only. It connects out to Measured Cloud. Measured Cloud never connects in.
  • Your credentials stay with it. You type the connection details into Measured Cloud's form, but your browser seals them to the agent's own key. Measured Cloud relays the sealed box and can't open it.
  • Results only. Validation results carry counts and pass or fail. A profile computed on the agent leaves it at your privacy level. Measured Cloud checks every reply against a fixed list of allowed fields and rejects anything else.
  • Your rules on top. A local policy file on the agent can block custom SQL, limit which data sources and kinds of job it runs, and keep its database sessions read-only. See Configure the agent's local policy.

What Measured Cloud stores​

Always (metadata):

  • configuration: data source connection details (secrets encrypted, see Encryption), data asset, column and type names, rules and schedules;
  • run history: when each check ran, pass or fail, failing-row counts and health scores. Run history is kept for as long as you use Measured Cloud;
  • profile statistics for each column: row count, null rate, number of distinct values, mean, and the shortest and longest text length;
  • anomaly history, built from those statistics;
  • for sensitive-data detection, the share of a column's values that looked like an email, card number and so on. Never the values.

Values from your data, only at your privacy level. A super admin picks the organization's data privacy level, and each data asset can be made stricter:

LevelValues stored
Metadata only (the default for new organizations)None. Not even the minimum and maximum of number and date columns.
Masked samplesFailing values and the most common values per column, with sensitive values masked first (j***@example.com).
Full samplesUp to 20 failing values per rule and the 10 most common values per column, as found.

Tightening the level also rewrites what's already stored. Sample retention removes stored values after 7, 30 or 90 days, or a number of days you choose, while counts and statistics stay.

AI features​

AI features explain results, summarise profiles, suggest rules and narrate root causes. See AI features for each one.

  • What's sent. Metadata: column names, types, statistics and run history. Values only at your privacy level, and sensitive values (emails, phone and card numbers, national ids, and whole columns named like personal data) are masked before any prompt is built, whatever the level.
  • Which model. Measured Cloud's built-in AI is Google Gemini on Google Cloud Vertex AI. Or connect your own provider (OpenAI, Anthropic, Azure OpenAI, Google AI Studio, Ollama, or any OpenAI-compatible endpoint), so prompts go only to a provider you choose, under your own agreement with it.
  • Where it runs. Built-in AI uses Vertex AI's global endpoint by default, which carries no data-residency guarantee. A super admin can pin it to the United States or the European Union; a pinned organization's AI requests go only there, and stop with an error rather than fall back.
  • The AI disclosure log. Every call to a model is in your audit log: which feature sent what kind of data (metadata, masked values or raw values) to which model, and where that model runs. Export it, or stream it to your SIEM.
  • Your own assistant. With the MCP server, an assistant you run (Claude, Cursor …) can read your results through the same privacy level.

Your other tools​

Slack, email and webhook alerts, data docs, catalog sync and exports carry metadata: rule names, pass or fail, counts and rule settings. They don't carry row values.

Encryption​

  • In transit. Every connection to Measured Cloud uses TLS. Connections to your data sources use the encryption your connection settings ask for (for example sslmode=require).

  • At rest. Google Cloud encrypts everything Measured Cloud stores: the database, backups and files.

  • Secrets, again, per organization. Data source passwords and keys, your AI provider's API key, SSO settings and webhook secrets are also encrypted with AES-256-GCM under a key that belongs to your organization. That key is itself encrypted under a key held in Google Cloud KMS, which Measured Cloud's services can use but can't export. Secrets are never returned by the API or written to logs.

  • Your own key, if you want it. A super admin can wrap your organization's key in a key from your own Google Cloud KMS as well. Every use then shows in your KMS audit logs, and disabling your key stops Measured Cloud from using your secrets within 5 minutes. See Use your own encryption key.

Access and isolation​

  • Your organization is walled off. Each organization's data lives in its own database schema, and Postgres row-level security enforces the organization and workspace boundaries on every query.
  • Roles. Six roles, from viewer to super admin, decide who sees and changes what, by workspace and team. Sensitive data assets can be hidden from restricted viewers.
  • Sign-in. SAML or OIDC single sign-on, which can be enforced so passwords stop working, and SCIM provisioning. Changing the privacy level or creating long-lived keys asks you to sign in again.
  • Audit log. Sign-ins, changes, privacy decisions and AI calls are recorded. Export the log, or stream it to your SIEM.
  • What runs. The hosted service runs only container images that our build pipeline has signed (Google Cloud Binary Authorization).

Hosting and subprocessors​

Measured Cloud runs on Google Cloud, in us-central1 (Iowa, United States): the application, its database and its encryption keys. If you need your data hosted in another region, such as the EU, we can deploy Measured Cloud there on request.

SubprocessorWhat it doesData it handles
Google CloudHosting, database, encryption keys (Cloud KMS), and the built-in AI (Vertex AI, Gemini)Everything Measured Cloud stores; for the built-in AI, the prompts described above

Services you connect yourself are yours, not Measured Cloud's subprocessors: your own AI provider, and the Slack workspace, email address, webhook, catalog or SIEM you send alerts and exports to.

Compliance status​

Measured Cloud hasn't completed a SOC 2 or ISO 27001 audit yet. Google Cloud, which hosts it, holds both: see Google Cloud's compliance offerings.

Report a security issue​

Email security@measured.cloud with what you found and how to reproduce it.