Self-hosted customer identity for EU data sovereignty

Hosting customer login data in the EU under GDPR means controlling where accounts, consent records and logs live, who can reach them and how they can be exported or erased. This page explains what to decide, which open-source platforms fit and how to move off a US-hosted service.

On this page

Why self-hosted customer identity matters for EU data sovereignty

If your customer accounts sit in a US-hosted CIAM service and your DPO or legal team is asking whether those logins are lawful transfers, the usual route to control is to run the identity platform in EU infrastructure you operate, using an open-source platform such as Keycloak or ZITADEL. Hosting in the EU is the starting point, but it does not settle the question on its own, because the transfer analysis under GDPR Article 44 follows the data and the people who can reach it, not only the address of a database.

The EDPB's Guidelines 05/2021 (version 2.0) treat remote access from a third country as a transfer, even when the person outside the EEA only views data on a screen for support or administration. Storage in a cloud outside the EEA is also a transfer. For a CIAM service, that means vendor support staff, follow-the-sun administration, backups, logging pipelines and analytics exports all need to be mapped, not just the primary user store. Ask the vendor for a written list of every location from which personnel or subprocessors can access customer identity data, and for the legal basis for each.

The guidelines also say that an EU processor subject to third-country law with extraterritorial effect is not itself a transfer, but complying with a third-country authority request would be, so the exposure needs an assessment before you sign. The US CLOUD Act provision at 18 U.S.C. 2713 reaches data in a provider's possession, custody or control regardless of where it is stored, which is the risk your legal team is likely weighing. Self-hosting in your own EU accounts changes who holds the keys and the logs, but the choice between Keycloak, ZITADEL and other platforms depends on your tenancy model and on the skills your team can keep running. Both are workable; the decision starts with the transfer map and the operating model.

Which GDPR and transfer requirements shape the identity build

This table maps the GDPR transfer rules and related guidance to concrete decisions for hosting, admin access, support tooling, backups and logs in a customer identity build. Read each row as a question to settle with your counsel and DPO before selecting an architecture. The main takeaway is that where the identity data is stored is only part of the question: who can see it in the clear, from where, and under which foreign legal orders also determines whether a transfer occurs.

Requirement or controlWhat it asks for in the identity buildWhere it usually fails
Transfer conditions (GDPR Article 44)Every transfer of customer identity data to a third country, including onward transfers, must meet Chapter V conditions. Map each location and each party with access.Backups, log shipping and vendor support sessions are overlooked as transfer points.
Fine ceiling (GDPR Article 83(5)(c))Infringements of the transfer articles carry fines of up to EUR 20 million or 4% of worldwide annual turnover, whichever is higher. Treat transfer mapping as a board-level risk item.Teams assume a self-hosted deployment removes transfer risk without checking who can reach it.
Remote access from third countries (EDPB Guidelines 05/2021)Remote access from outside the EEA counts as a transfer, even when data is only displayed on a screen for support or administration. Limit and log offshore admin and support sessions.Follow-the-sun vendor support or offshore administrators open consoles that show user records.
Access in the clear (EDPB Recommendations 01/2020)Where a provider must see data in the clear and a third country's public authorities can reach it beyond what is necessary and proportionate, the EDPB cannot see an effective technical supplementary measure. Assess this exposure before choosing a hosting or managed-service model.Managed CIAM hosting outside the EEA is assumed safe because encryption is enabled, while the operator still holds keys or plaintext.
Third-country disclosure orders (GDPR Article 48)A foreign court or authority order to disclose personal data is recognized only if based on an international agreement in force with the EU or a Member State. Document how such requests would be handled for each provider in the chain.Contracts promise notification of requests without a documented legal response process.
Foreign-law exposure for EU processors (EDPB Guidelines 05/2021, Example 12)Using an EU processor subject to third-country law with extraterritorial effect is not itself a transfer, but complying with a foreign authority request would be. Assess that exposure before engaging the processor.Procurement checks the hosting region and skips the parent company's legal jurisdiction.
Data minimization by defaultCollect only the attributes each login, registration and recovery flow needs. Keep optional profile fields, device data and raw event logs out of the identity store unless a documented purpose applies.Identity stores accumulate fields from social logins, CRM syncs and analytics that nobody reviewed.
Consent records, erasure and portability workflowsStore consent events with version, timestamp and scope, and build withdrawal, erasure and export as tested workflows that reach backups, logs and downstream systems. Confirm the timing you commit to with counsel.Erasure removes the user row but leaves sessions, audit events, backups and synced copies in other systems.

Which open-source identity platforms fit an EU-hosted CIAM

Three open-source identity platforms cover most self-hosted customer identity needs in the EU, but each carries a different license, data model and feature set. The fit depends on who hosts the code, how tenants are isolated and which consent and erasure workflows you must build yourself. Confirm each point against the specific release you plan to deploy.

Keycloak for broad protocol coverage

Keycloak is licensed under Apache-2.0 and is a CNCF incubating project, so you can modify and host it in your own EU infrastructure without copyleft obligations on your changes. It supports OpenID Connect, OAuth 2.0 and SAML 2.0, identity brokering and user federation, and runs on PostgreSQL 14 to 18. The Keycloak Operator manages realms and clients as Kubernetes resources, which helps keep EU deployment configuration in version control. Confirm that consent records, erasure and export are handled by realm configuration or by your own services, since these workflows are not a single built-in feature.

ZITADEL for isolated tenants

ZITADEL's core is licensed under AGPL-3.0, so if you modify it and let users interact with it over a network, you must make your modified source available to those users. Its instances give each tenant full data isolation, and organizations inside an instance let each B2B customer bring its own identity provider. It offers SCIM v2 provisioning, passkeys based on FIDO2 and WebAuthn, and a device authorization grant, and it self-hosts on PostgreSQL 14 to 18. Ask counsel whether the AGPL terms fit your release and customization plans, and confirm how erasure and consent records map to its data model.

Ory Kratos and Hydra as separate services

Ory splits identity into Kratos for user and self-service flows and Hydra for the OAuth 2.0 and OpenID Connect server, and both are licensed under Apache-2.0. This suits teams that want to own the login UI and the consent screen in their own code, which can simplify consent capture and withdrawal. The trade-off is that you assemble and operate two services, plus the glue for administration, provisioning and erasure. Confirm the feature set and data stores in the release you adopt, since the two components are versioned independently from each other.

Licensing risk for hosted modifications

License terms decide what you owe when you change the code and offer it to users. Apache-2.0 platforms let you keep modifications private, while AGPL-3.0 requires source disclosure for network-accessed modifications. Procurement and legal teams should confirm which components are licensed under which terms, and whether any add-ons or enterprise directories carry separate commercial terms. A self-hosted deployment does not remove these obligations, so review the license of each module you deploy before you customize it.

Erasure and consent workflow checks

None of these platforms ships a complete GDPR workflow for consent withdrawal, erasure requests and portability out of the box. Before selecting one, map each request type to a specific user store, event log, session store and downstream system. Check whether deleting a user removes sessions, refresh tokens, audit records and federated links, and whether backups keep deleted identities. Ask for a written demonstration of each request flow in your configuration, not only a feature list.

How the EU migration runs, phase by phase

The sequence moves customer identity data and login flows from a US-hosted service to a self-hosted platform in the EU, with each phase producing a record that proves where data sits, who can reach it and what was deleted. Each phase has an output that gates the next one.

  1. Map personal data and transfers

    The team inventories every place customer identity data lives today: user store, password hashes, consent logs, audit trails, backups, support tooling, analytics and the US provider's own administrative and support access. For each item, record the data categories, the legal basis, the location and any path that lets a person outside the EU view the data. Remote access from a third country counts as a transfer under EDPB Guidelines 05/2021, so support screens and vendor consoles belong in the inventory. The output is a signed transfer inventory and a data flow map that the DPO and legal team accept as the baseline for the migration.

  2. Design EU hosting and admin access

    Architects select the EU region, data centers and sub-processors, then design who can administer the identity platform, from which networks and under which approval. Admin access, logging, backups and disaster recovery copies are all placed inside the EU unless the transfer analysis says otherwise. The design also states how the organization will assess any non-EU provider's exposure to third-country authority requests, since EDPB Recommendations 01/2020 say no effective technical supplementary measure exists where a provider must access data in the clear and foreign powers exceed what is necessary and proportionate. The output is an approved architecture and access model that the security and compliance leads sign off.

  3. Choose the platform and prove it

    The team compares candidate platforms, such as Keycloak, ZITADEL or Ory, against the login, federation, passkey, SCIM and multi-tenancy requirements from the business. A proof of concept runs in a non-production environment with representative realms or instances, the chosen production database and a test identity provider for each B2B tenant type. Licensing is checked during this phase, because AGPL-3.0 and Apache-2.0 licenses carry different obligations for modifications and distribution. The output is a written platform decision, a tested reference configuration and a list of gaps that need custom work.

  4. Migrate users and password hashes

    Users move in batches or on demand. Where the US service exports hashes or allows it, the team imports them so customers keep their passwords. Where hashes cannot be exported, just-in-time migration checks the old service at first login and stores the credential locally. The migration also carries roles, organizations, identity provider links and external IDs so that existing sessions and applications keep working. Reconciliation reports compare record counts, failed imports and sample logins against the source. The output is a reconciliation report signed by the data owner, plus a list of accounts that still depend on the old service.

  5. Test consent and erasure flows

    Before cutover, the team tests the privacy rights flows end to end on the new platform. Consent is granted, withdrawn and recorded with a timestamp and version of the notice. Erasure requests remove the account, its sessions, its federated links and copies in logs and backups according to the retention rules agreed in the mapping phase. Portability exports are generated in a structured format and checked for completeness. The output is a test report with each scenario, its result and the evidence location, which the DPO reviews before any production data depends on the new flows.

  6. Cut over from the US service

    The team switches application redirects, SDK configuration, DNS and identity provider registrations to the EU platform during an agreed window. A rollback plan defines the conditions to return traffic to the US service and how new registrations and password changes made during the window are reconciled. Monitoring tracks login success, error rates and support tickets for the first days. Both platforms run in parallel only as long as the rollback plan requires. The output is a cutover record listing the changes made, the validation results and the date the US service stopped handling live logins.

  7. Decommission and document deletion

    Once the US service no longer serves logins, the team requests deletion of customer data and configuration from the provider, exports any evidence the contract requires and confirms that backups and support copies are removed or expire within the agreed period. The team also checks the Data Act switching rights and notice terms in the contract, which govern how a customer can leave a data processing service. The output is a decommissioning report that lists each data store, the deletion request, the provider's confirmation and any exceptions that the legal team has accepted in writing.

Deployment patterns that keep data in the EU

A self-hosted Keycloak, ZITADEL or Ory deployment in a cloud account you own can keep customer data in the EU if every component is pinned to EU regions and the account's administrative access is controlled from the EU as well. Keep in mind that EDPB Guidelines 05/2021 treat remote access from a third country, including only displaying data on a screen for support, as a transfer, so the operator's support staff matter as much as the storage location.

  • Database and backups: Run the PostgreSQL database (versions 14 to 18 are supported for Keycloak and ZITADEL) and its snapshots in the same EU region, and confirm that cross-region replication and disaster recovery targets are also inside the EEA.
  • Logs and metrics: Send access logs, audit events and metrics to EU-hosted storage, since logs often contain identifiers that are personal data.
  • Admin consoles and access: Restrict the Keycloak admin console and cluster management to named staff, and document where those staff sit when they connect.
  • High availability: Both supported Keycloak high availability designs need a synchronously replicated database, so spread the database across availability zones within the same region.
  • Operator updates: Use the Keycloak Operator with manual approval mode so upgrades happen after review rather than automatically.

Before you commit, ask the cloud provider for the list of regions and support locations it uses, and confirm with your counsel how its third-country legal exposure is assessed.

What evidence a data protection authority or auditor will ask for

What inputs does a transfer impact assessment need for a self-hosted identity platform?

A transfer impact assessment needs a map of where every copy of customer identity data sits, who can reach it from outside the EEA, and what third-country law could compel disclosure. For a self-hosted Keycloak, ZITADEL or Ory deployment, the inputs are the hosting region of the database, backups, logs and metrics stores, the list of people and support vendors with remote access, and the legal exposure of each supplier. The EDPB Guidelines 05/2021 treat remote access from a third country, even just viewing a screen, as a transfer, so support sessions must be in the assessment. This is evidence for your own assessment, not a certification.

What records of processing should a self-hosted CIAM deployment keep?

Your records of processing should describe the purposes of the identity service, the categories of data (profile attributes, credentials, consent state, login metadata), the recipients, the transfers, the retention periods and the security measures. Map each category to the component that holds it, such as the realm database, the event store, the metrics endpoint and the backup set. Keep the record under your own control and review it whenever a realm, identity provider or sub-processor changes. Auditors use it as the starting point for every other question on this list.

Which admin access and data location logs prove who touched customer identity data?

Auditors will look for three things: where the data is stored, which administrative accounts can read it, and a log of when they did. In Keycloak, admin events and user events can be enabled in the realm settings and shipped to a central log store, and the database hosting region is documented in your infrastructure records. For ZITADEL, audit and action logs and the PostgreSQL host location serve the same purpose. Confirm the retention of these logs against your own policy, and confirm that the logs themselves stay inside the EU region where you claim the data sits.

How should consent records with timestamps and withdrawal be stored?

Consent records should capture who consented, to which purpose and wording version, when, through which channel, and whether consent was later withdrawn. Store consent as attributes or in a dedicated consent service linked to the user identifier, and write an event each time it changes. Withdrawal must be as easy as giving consent, so test that the withdrawal path updates the same record. Keycloak user events and custom attributes, or ZITADEL user metadata and actions, can carry this data, but confirm with your legal team which schema meets your consent obligations.

What do erasure and portability request logs need to show?

Each erasure and portability request should show when it was received, who verified the requester, what data was exported or deleted, which systems were touched, and when the response was sent. For a self-hosted identity platform, the evidence comes from the admin event trail, the export output from the user management API or SCIM records, and a checklist that covers downstream applications and backups. SCIM provisioning records help show that deprovisioning reached connected applications. Ask your engineers to test a full erasure in a staging copy and keep the test results.

How do you document backup deletion for customer identity data?

A backup deletion procedure describes how erased data is removed from backups or how backups expire, and how the restore process avoids bringing erased users back. Document the backup schedule, retention window, encryption, the restore runbook, and the step that reapplies erasure after a restore. Database backups of Keycloak or ZITADEL PostgreSQL instances usually hold the full identity store, so the retention period is the main factor a data protection authority will test. Confirm retention periods with your backup vendor or operations team, because they set how long personal data survives after a request.

What supplier contract terms and sub-processor records will an auditor request?

Auditors will ask for a data processing agreement with each supplier, a current list of sub-processors with their locations, transfer mechanisms such as standard contractual clauses where they apply, and evidence that you were notified of changes. Open-source software itself is not a processor, but any hosting provider, managed database, support firm or implementation partner that touches the data is. Ask each supplier to state where support staff access data from and whether they can be compelled by third-country authorities, then record those answers in your assessment. Legal review of these terms is your responsibility, and the contract is the document an auditor will read first.

How to leave a US-hosted CIAM service without losing users

The Data Act gives you a legal right to leave your current customer identity provider, and that right covers moving to another provider or to on-premises ICT infrastructure. Under Regulation (EU) 2023/2854, which has applied since 12 September 2025, the switching rules in Articles 25, 29 and 50 set a maximum two-month notice period and a 30-day transition, and switching charges are banned from 12 January 2027. Before you send a notice, read your current contract for the notice mechanics, the data export formats the provider offers, and any fees that apply until the ban takes effect. Have counsel confirm how those terms map to the Act, because the provider's contract and the statute may not describe the process in the same way.

Losing users during a move usually comes from three places: password hashes, sessions and client configuration. Ask the current provider whether it will export password hashes and in which algorithm and parameters, since a hash that cannot be verified by the new platform forces a reset. Keycloak and ZITADEL both document migration approaches, including just-in-time migration, where the new realm or instance checks the old credential at first login and then stores the new hash. For tokens, plan for refresh tokens and active sessions to end at cutover unless you can run both issuers in parallel for a window. Inventory every relying party, including its client_id, redirect URIs, signing keys and the issuer URL in each application, because each one must be reconfigured or repointed before users are moved.

Test the cutover on a copy of production data. Run a sample of real logins through the new issuer, confirm that claims and roles arrive in the format each application expects, and check that consent records and erasure requests were carried across with their timestamps. Decide in advance whether you will keep the old service read-only for a fixed period so that support staff can reconcile disputed accounts. Finally, ask any implementation partner to write down how it will handle failed migrations, rollback and the user communications that go out before the switch, and make sure those steps appear in the statement of work.

How much work does EU-hosted customer identity take?

What drives the cost of self-hosted EU customer identity?

Cost follows scope: how many customer populations, applications and identity providers you connect, how many existing accounts must move, and how the platform is made highly available. Self-hosting shifts spending from a per-user subscription to recurring infrastructure in your own EU cloud account or data center, plus one-time implementation work. Ask any partner to price the migration, the identity provider connections, the high availability design and a support retainer as separate lines, so you can see which costs recur and which are one-time.

Can an in-house team run EU customer identity without outside help?

A capable platform team can run Keycloak or ZITADEL alone, but the first build usually needs skills that are scarce in most teams: database and clustering design, protocol configuration, upgrade planning and security hardening. Many organizations split the work, keeping day-to-day operation in house and buying implementation, hardening and upgrade support on a fixed-scope basis. Check whether your team has staff on call for login outages, and who will apply vendor security releases within your change window.

What does legal and security need to contribute to the project?

Legal must confirm the lawful basis for each processing purpose, the transfer position for any remaining third-country access, and the contract terms with every processor, including the hosting provider and any support vendor. Security must approve the data flows, encryption, key custody, administrator access and logging. Both teams should sign off the consent model and the erasure and export procedures before go-live, because changing them after users have registered is costly.

How long does an EU customer identity migration take?

Duration depends on the number of user records, the password hashing formats you must carry over, the number of applications that must switch to new login flows, and how many customer organizations bring their own identity providers. Each of these adds testing and cutover planning. Ask for a written schedule that separates design, build, parallel running and cutover, and confirm how the plan handles a staged rollout by customer group. No general duration applies to every organization, so treat any single figure with caution until it is tied to your inventory.

Is Keycloak or ZITADEL the better fit for EU customer identity?

Both are open source, can be self-hosted in EU infrastructure and support OpenID Connect and SAML. Keycloak is a mature option with a large community, broad protocol coverage and documented high availability designs that need a synchronously replicated database. ZITADEL offers instances as isolated virtual tenants, organizations per customer, passkeys and SCIM provisioning in the product, and is licensed under AGPL-3.0, which the team must review. Choose after testing your B2B tenancy model, passkey requirements and license obligations against real use cases.

What happens to customer data when moving off a US-hosted service?

The move should copy customer records into your EU environment under a documented plan, then stop the old service's processing and confirm deletion or return of records under your contract. Plan for the data in logs, backups and replicas, not just the primary store. Password hashes often need a migration path that avoids forced resets. Ask the provider for its export format and notice terms, and check the data processing agreement for sub-processors that could still access the data. Confirm the exit steps with counsel before cutover.

What should a retainer cover after the first go-live?

After go-live, the recurring work is patching, upgrades, monitoring, backup testing, incident response and periodic reviews of consent and erasure processes. DeployOpen offers ongoing support, upgrades and continuous testing as retainers, and most implementation work is agreed as a fixed scope with written deliverables before it starts. Ask any partner which upgrades are included, how they handle the Keycloak operator's manual approval mode or ZITADEL release changes, and what response expectations apply to your environment.

How DeployOpen scopes and runs EU customer identity projects

DeployOpen plans, implements, customizes, integrates, hardens, documents and supports self-hosted open-source identity platforms inside the client's own cloud accounts, data centers or air-gapped networks. For EU customer identity, that means the data residency, transfer and erasure decisions are made in writing before any platform is installed.

How we scope

  • Map which customer data sets are held in the identity store, logs and backups, and where each is stored today.
  • Record the consent, erasure and export flows the written scope must cover, with the controller's decisions on each.
  • Agree the EU hosting location, operator access model and transfer exposure before the engagement starts, in writing.

How we build

  • Deploy the chosen platform, such as Keycloak, ZITADEL or Ory, in the agreed EU infrastructure with data minimization configured by default.
  • Configure consent records, erasure and portability procedures, and integrations with customer applications and directories.
  • Test login, recovery, erasure and export paths, and document the results against the written acceptance criteria.

How we hand over

  • Deliver architecture, configuration, runbooks and data flow documentation that your team and auditors can read.
  • Prepare the evidence for privacy and security assessments, clearly separated from any audit report, which independent auditors issue.
  • Document a tested exit path, including export of users and credentials, so the platform can move to another provider later.

How we support

  • Ongoing support, upgrades and continuous testing are available as a retainer, scoped separately from the build.
  • Agree how security patches and platform upgrades are rehearsed in a non-production environment before production changes.
  • Review data flows and access paths again when the platform, hosting or legal conditions change, as part of the retainer scope.

Sources and further reading

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.