Case Study · Data & Analytics
Secure Data Mesh with Distributed Data Asset Ownership on AWS
Data Mesh · AWS DataZone · Lake Formation · Multi-Account · Federated Governance · GenAI-Ready
Based on AWS Guidance: Guidance for a Secure Data Mesh with Distributed Data Asset Ownership on AWS
Architecture study: a design exercise based on public AWS guidance, not a claimed client engagement
Executive Summary
This case study documents a data mesh architecture on AWS that solves the fundamental tension in enterprise data platforms: how to scale data access across many business domains without creating a centralised bottleneck or ungoverned sprawl from decentralised teams producing siloed, inconsistent data assets.
The architecture implements the Data Mesh paradigm (federated data ownership with centralised governance) using AWS-native services. Each business domain owns, curates, and publishes its own data products to a central AWS DataZone catalog. Consumers discover, subscribe, and access data products through DataZone with fine-grained Lake Formation permissions, without any data movement. Every access is audited via CloudTrail, encrypted via KMS, and governed by IAM Identity Center federated roles.
Domain Ownership
Each business unit manages its own data products in its own AWS account. Data engineering teams are embedded in domains, not siloed in a central platform team that becomes the bottleneck for all data requests.
Zero Data Movement
AWS Lake Formation cross-account access grants allow consumers to query data directly in the producer account via Athena, Redshift, or EMR; no ETL pipelines copy data to a central warehouse, eliminating duplication costs and latency.
AI-Ready Foundation
The governed data asset catalog published in DataZone is directly consumable by Amazon Bedrock and SageMaker. GenAI applications can discover, subscribe, and build on governed enterprise data products without bypassing the access control layer.
Business Problem: The Data Platform Dilemma
Enterprise data platforms evolve through a predictable failure sequence. They start centralised (a single data warehouse managed by a central team), then become bottlenecks (every domain waits for the central team to build pipelines), then fragment (domains build their own shadow data systems), then produce inconsistency (three domains produce three different definitions of "active customer").
Centralisation Failure
A single central data engineering team cannot serve the data product needs of 20 business domains at pace. A request for a new dataset takes 6–12 weeks from business requirement to production table. Domains respond by building their own spreadsheets, local databases, and shadow ETL jobs, creating the very fragmentation the centralised approach was meant to prevent.
Decentralisation Failure
Fully decentralised teams produce inconsistent data assets: different definitions of the same metric, different data freshness guarantees, different security postures. When the CFO asks "what was revenue last quarter?", three domains produce three different numbers because they each maintain their own copy of the transaction data with different transformation logic.
Governance at Scale
As data volumes grow and regulatory requirements tighten (GDPR, CCPA, financial services data governance, healthcare HIPAA), central security teams cannot manually review every data access request. Column-level PII access, row-level filtering for regional compliance, and cross-domain data sharing must be governed through policy, not manual approval queues.
GenAI Data Access
LLM-powered applications need access to enterprise data to answer business questions ("what were the top 10 products by margin last quarter?"). Without a governed data mesh, GenAI applications either access raw data lakes without access controls (a security risk) or are blocked entirely by security teams who cannot verify which data the model is accessing.
Architecture
The architecture operates across three tiers in a multi-account AWS Organisation structure: domain producer accounts (one per business domain), a central governance account (AWS DataZone + IAM Identity Center), and consumer accounts (analytics, ML, BI teams). Data never leaves its producer account; access is granted and audited through the governance layer.
Secure Data Mesh · Distributed Data Asset Ownership · Official AWS Icons
Tier 1: Domain Producer Accounts
- Each business domain (e.g. Finance, Supply Chain, Customer, Product) operates in its own AWS account, providing IAM boundary isolation, independent cost attribution, and blast radius containment
- Domain data is stored in S3 with a consistent naming convention: raw layer (as-ingested from source systems), curated layer (cleansed, typed, deduped), and product layer (business-logic-applied, consumer-ready)
- AWS Glue Crawlers run on schedule against the S3 product layer, automatically discovering schemas and updating the domain Glue Data Catalog; new tables and schema changes are reflected in the catalog without manual intervention
- AWS Lake Formation applies fine-grained access control on each table: column-level permissions (masking PII columns for non-privileged consumers), row-level filtering (restricting regional consumers to their own geography), and tag-based access control (classifying tables as PII, CONFIDENTIAL, or PUBLIC and granting access by tag)
Tier 2: Central Governance Account
- AWS DataZone is the central data catalog. Domain data stewards publish curated data products to DataZone from their Glue Data Catalog, adding business metadata: plain-English descriptions, data quality SLAs, refresh frequency, data owner contact, and lineage documentation
- Consumers browse the DataZone business catalog (not a technical catalog of table names and column types, but a product catalog with business context) and submit subscription requests for the data products they need
- Governance admins configure subscription approval rules: auto-approval for PUBLIC-tagged assets, human approval for CONFIDENTIAL assets, and deny-with-explanation for PII assets unless the consumer account has a DPA (Data Processing Agreement) approval flag
- Upon subscription approval, DataZone issues cross-account Lake Formation access grants to the consumer account, granting the minimum column and row-level permissions required by the consumer without requiring any data movement or ETL pipeline
- IAM Identity Center (formerly AWS SSO) federates enterprise identity (Active Directory, Okta, Azure AD) into AWS; data stewards, consumers, and governance admins authenticate with their corporate credentials and receive role-appropriate access to DataZone and Lake Formation
- AWS KMS customer-managed keys (CMK) are domain-owned: each producer account holds its own KMS key for S3 and Glue encryption. Cross-account key grants allow authorised consumer accounts to decrypt data during query execution; key policy changes immediately revoke consumer access without modifying Lake Formation grants
Tier 3: Consumer Accounts
- Amazon Athena: serverless SQL queries against the governed data products directly from S3 in the producer account, billed per TB scanned; no infrastructure to provision, no idle cluster costs. Athena results are cached in the consumer account S3 for repeat queries
- Amazon Redshift: for consumers requiring structured data warehousing and complex SQL analytics, Redshift Spectrum queries the producer S3 data via Lake Formation-governed external tables, combining governed domain data with Redshift-native tables in a single query
- Amazon EMR: Spark and Hadoop workloads in the consumer account access governed S3 datasets using Lake Formation-aware EMR clusters for large-scale data processing with the same column/row-level access controls that govern Athena queries
- Amazon SageMaker: ML engineers discover data products in DataZone, subscribe, and access governed datasets directly from SageMaker Studio notebooks, enabling feature engineering and model training on governed enterprise data without bypassing the access control layer
- Amazon QuickSight: BI dashboards connect to Athena or Redshift query results, providing business users with self-service analytics on governed data without direct S3 or Lake Formation access
- Amazon Bedrock: GenAI applications use DataZone-governed datasets as knowledge bases or context for RAG (Retrieval-Augmented Generation) patterns; LLM responses are grounded in governed, trusted enterprise data with full access audit trails
Data Mesh Principles Applied
The Data Mesh paradigm (Zhamak Dehghani, 2019) defines four principles. This AWS architecture applies each principle through specific AWS services and organisational patterns.
Principle 1: Domain Ownership
Principle: data is owned and managed by the business domain that generates it, not by a central data team.
Implementation: each domain has its own AWS account with its own S3 buckets, Glue catalog, Lake Formation instance, and data engineering team. The central governance account has no write access to domain data; it can only read catalog metadata published by domain stewards.
Principle 2: Data as a Product
Principle: domain teams treat their data assets as products, with SLAs, documentation, discoverability, and consumer support.
Implementation: DataZone enforces a minimum metadata standard for published data products: description, owner, refresh SLA, quality score, and deprecation policy. Consumers can rate and review data products; the data product catalog functions like an internal marketplace.
Principle 3: Self-Serve Data Platform
Principle: domain teams should be able to produce and consume data without depending on a central platform team for every operation.
Implementation: DataZone subscription workflows, Glue Crawler automation, and Lake Formation tag-based access control allow domains to publish and consumers to access data products without central team involvement. The platform team provisions the accounts and tooling; it does not mediate individual data access requests.
Principle 4: Federated Computational Governance
Principle: governance policies are enforced computationally (in code and configuration) rather than through manual human-review processes that cannot scale.
Implementation: Lake Formation access controls, KMS key policies, IAM Identity Center role assignments, and DataZone subscription rules are all policy-as-code, deployed via CDK or Terraform. A data governance decision is encoded as a Lake Formation tag policy, not a spreadsheet in a shared drive.
Security & Governance Architecture
Fine-Grained Access Control with Lake Formation
- Column-level security: PII columns (name, email, SSN, date of birth) are masked or excluded from consumer queries unless the consumer account has explicit column-level Lake Formation grants; a data analyst can query transaction amounts without seeing customer names
- Row-level filtering: regional compliance requirements (e.g. GDPR data residency) are enforced by Lake Formation row filters; a European consumer account only receives rows where the data_region = "EU" column matches, without requiring separate regional copies of the dataset
- Tag-based access control (TBAC): tables are tagged with security classifications (PII, CONFIDENTIAL, FINANCIAL, PUBLIC). IAM Identity Center roles are mapped to Lake Formation tag permissions; a GDPR Data Officer role automatically receives access to all PII-tagged tables across all domains without per-table grant management
- Attribute-based access control: consumer access can be further restricted by user attributes (department, seniority, geographic location) inherited from IAM Identity Center federation; a junior analyst automatically receives a more restrictive Lake Formation policy than a senior data scientist in the same team
Encryption and Key Management
- Domain-owned KMS keys: each producer account owns the KMS CMK encrypting its S3 data and Glue catalog metadata. Key policies grant decrypt permissions to specific consumer IAM roles; revoking access is as simple as removing a key grant, immediately blocking all consumer queries without modifying Lake Formation permissions
- Glue catalog encryption: both the Glue Data Catalog metadata (table schemas, partition information) and the catalog connection passwords are encrypted at rest using KMS CMKs; metadata disclosure is as controlled as data access
- S3 bucket policy enforcement: all producer S3 buckets enforce aws:SecureTransport and deny any request that does not originate from approved VPC endpoints or IAM identities; no unauthenticated access to the data lake layer is possible even from within the AWS account
Audit and Observability
- CloudTrail data events: enabled on all producer S3 buckets, so every GetObject (Athena query, Glue job read, SageMaker dataset access) is logged with the consumer IAM identity, timestamp, and object path. Provides a forensic-quality access audit trail for GDPR data subject access requests and regulatory examinations
- Lake Formation access logs: all Lake Formation permission grants and access decisions are logged, providing a record of when data access was granted, by whom, and which tables were included
- CloudWatch dashboards: Athena query metrics (queries by table, bytes scanned by consumer account, query failure rates), Glue Crawler run status, and DataZone subscription request volumes are aggregated in a governance operations dashboard visible to the central data governance team
- AWS Config rules: custom Config rules verify that all producer S3 buckets have Lake Formation enabled, all Glue tables have mandatory metadata tags, and all consumer accounts have CloudTrail data events active; governance drift is detected and alerted automatically
Generative AI on Governed Data
One of the most significant architectural benefits of the data mesh approach is that it creates a governed, discoverable foundation for generative AI applications. Amazon Bedrock and SageMaker can consume governed data products from DataZone, grounding LLM responses in authoritative enterprise data.
RAG on Enterprise Data Products
- A DataZone consumer account for the AI platform team subscribes to relevant data products (e.g. product catalog, customer interaction history, financial reporting data)
- Data products are ingested into Amazon Bedrock Knowledge Bases, creating vector embeddings stored in a managed vector store (OpenSearch Serverless) that the Bedrock retrieval system can search semantically
- Business users query the knowledge base via a natural-language interface ("what were our top 10 suppliers by spend last quarter, and how has their delivery performance trended?"). Bedrock retrieves relevant chunks from the governed data embeddings and constructs a grounded response
- Every Bedrock Knowledge Base access is audited via CloudTrail; the AI application cannot access data that the platform team account does not have Lake Formation permissions to query, maintaining the data mesh governance boundary
Amazon Q for Business on the Data Mesh
Amazon Q for Business can be configured with DataZone-governed data sources as connectors; business analysts ask questions in natural language and receive answers drawn from the governed data mesh without writing SQL or understanding the underlying table structure.
GenAI Governance Note
Cost Model
The data mesh architecture is designed for cost efficiency through zero data duplication and serverless query execution. The following estimates are indicative for a mid-size enterprise with 10 producer domains, 100 data products, and 200 active data consumers.
Producer Layer (per domain account)
S3 storage (10TB per domain): ~$230/month per domain.
Glue Crawlers (daily runs): ~$5/month per domain.
Lake Formation: no additional charge beyond IAM and Glue costs.
KMS CMK: $1/month/key + $0.03/10K API calls.
10 domains: ~$2,360/month producer layer total.
Governance Layer (central account)
AWS DataZone: $0.10 per registered asset per month. 100 data products: $10/month. Subscription requests: $0.10 each.
IAM Identity Center: no additional charge beyond AWS account costs.
CloudTrail data events: $0.10 per 100K events. At 10M data access events/month: ~$10/month.
Central governance: ~$30/month.
Consumer Layer (Athena, primary query engine)
Athena: $5 per TB scanned. At 200 users running average 50 queries/day at 100MB average: ~20TB/month = ~$100/month.
Athena result caching: repeat queries within 24 hours are served from cache; actual scanned bytes are significantly lower than raw query volume for dashboard-style workloads.
Consumer Layer (Redshift + QuickSight)
Redshift ra3.xlplus (2 nodes): ~$1,200/month for Redshift Spectrum queries over governed S3 data.
QuickSight (50 BI users at $18/user): ~$900/month with SPICE included.
Total Estimate · 10 Domains · 200 Consumers
AWS Well-Architected Framework
Operational Excellence
Automated schema discovery: Glue Crawlers eliminate the need for manual table registration; domain teams add data to S3 and schemas appear in DataZone automatically.
Self-service subscriptions: DataZone subscription workflows handle data access requests without central team involvement; governance scales with domain count, not headcount.
Security
Multi-account blast radius: a compromised domain account cannot access other domain data; Lake Formation cross-account grants are the only access path between accounts.
Zero-trust data access: every query is authenticated (IAM Identity Center), authorised (Lake Formation), and audited (CloudTrail); there is no "trusted network" path that bypasses access controls.
Reliability
No central data copy: there is no central ETL pipeline whose failure would make all domain data unavailable. Domain data in S3 is independently durable and available regardless of other domains.
Athena serverless: no Athena cluster to provision or manage; query capacity scales automatically and there is no single point of failure in the query layer.
Performance Efficiency
Zero-copy access: Lake Formation cross-account access eliminates ETL pipeline latency; data is available to consumers as soon as the domain Glue Crawler has run, rather than after an ETL pipeline has completed.
Partitioned S3: domain data products are partitioned by date and business key; Athena partition pruning reduces scanned bytes and query cost by orders of magnitude for time-scoped queries.
Cost Optimisation
No data duplication: cross-account Lake Formation access eliminates the most significant cost driver of traditional data warehouses: the ETL pipelines and storage costs of copying data from source systems to a central repository.
S3 Intelligent-Tiering: infrequently accessed domain data automatically moves to lower-cost S3 tiers; historical data accessed for compliance audits rather than daily analytics pays Glacier-tier prices.
Sustainability
Serverless query execution: Athena, Glue, and DataZone are serverless; no idle compute consuming energy between query executions.
Eliminate duplicate storage: the zero-copy access model reduces total data storage by eliminating the centralised copy; a 50-domain organisation with a traditional warehouse typically stores each dataset 2–4 times across source, staging, warehouse, and mart layers.
Engineering Decisions & Tradeoffs
Decision 1: AWS DataZone vs Custom-Built Data Catalog
Chosen: AWS DataZone as the central governance and catalog layer.
Traded away: Custom catalogs built on Apache Atlas, Amundsen, or DataHub offer more flexibility in metadata models and are open-source. Some organisations have existing investments in these tools.
Why acceptable: DataZone provides native integration with Lake Formation for access grant management; a custom catalog would require custom Lake Formation API integration to actually enforce the subscription decisions it makes. DataZone also integrates with SageMaker, Redshift, and Athena natively, reducing integration work. For organisations on Apache Atlas or Amundsen, DataZone can coexist as the AWS-layer governance tool while the existing catalog retains custom metadata.
Decision 2: Zero-Copy Cross-Account Access vs Central Data Warehouse
Chosen: Lake Formation cross-account access grants: data stays in the producer account.
Traded away: Copying data to a central Redshift warehouse provides a single query engine optimised for complex joins across domains. Cross-account Athena queries over multiple S3 buckets are slower for complex cross-domain joins than an equivalent Redshift query on co-located data.
Why acceptable: Most analytics workloads are domain-specific (queries within a single domain's data) or involve a small number of domains. Cross-domain joins can be materialised as scheduled Glue jobs that produce an aggregated S3 dataset under the governance of a designated domain, preserving the zero-copy model for 90% of queries while enabling pre-computed cross-domain datasets for the complex 10%.
Decision 3: Lake Formation vs S3 Bucket Policies for Access Control
Chosen: AWS Lake Formation for fine-grained access control.
Traded away: S3 bucket policies are simpler to understand and manage for teams already familiar with IAM. Lake Formation adds a governance layer that requires additional configuration and understanding of its permission model.
Why acceptable: S3 bucket policies operate at the object level; they cannot enforce column-level or row-level access without application-layer filtering. Lake Formation provides column masking, row-level filters, and tag-based access control that scale across hundreds of tables without per-table bucket policy management. For PII governance and GDPR compliance, column-level control is non-negotiable.