conduktor.io ↗

Data Residency Label Required

Every topic must declare a data-residency region (eu, us, uk, apac, global). GDPR and equivalents require it.

“We have EU customer data and US-region consumers — we have to be able to prove which topics can cross the Atlantic and which cannot.”

Rationale

GDPR Article 44 (and UK/Swiss equivalents) treat cross-border transfer as a regulated event. Without a region label, replication, MirrorMaker, and cross-region consumers cannot be policy-checked. Banks running Conduktor across EU/US clusters use this label to drive Gateway routing rules and to prove to auditors that EU-resident data isn't silently fanning out to US consumers.

Pattern

metadata.labels.region in ["eu","us","uk","apac","global"]

Examples

metadata.labels.region: eu
metadata.labels.region: us
metadata.labels.region: global
no region label
metadata.labels.region: frankfurt
metadata.labels.region: EMEA

Parameters

NameDefaultDescription
allowed_regions ["eu","us","uk","apac","global"] Permitted residency regions. 'global' means the topic carries no resident data.
label_key "region" Metadata label key holding the residency value.

Implementation

Drop this YAML into Conduktor Console as a ResourcePolicy, then link it from an ApplicationInstance, Application, or KafkaCluster.

Conduktor ResourcePolicy
# Conduktor self-service ResourcePolicy
# Schema: https://docs.conduktor.io/platform/reference/resource-reference/self-service/#resourcepolicy
---
apiVersion: self-serve/v1
kind: ResourcePolicy
metadata:
  name: data-residency-label-required
spec:
  targetKind: Topic
  description: Every topic must declare metadata.labels.region for cross-border replication checks
  rules:
    - condition: 'has(metadata.labels) && "region" in metadata.labels && metadata.labels["region"] in ["eu","us","uk","apac","global"]'
      errorMessage: "Topic must set metadata.labels.region to one of eu, us, uk, apac, global — required for GDPR cross-border controls"

Related policies

Try Conduktor Console

Enforce policies like this across your team — central audit history, pre-commit guardrails, ApplicationInstance bindings. 5-min Docker install.

Get Started →