Apache Airflow multi-team deployments and their isolation limits

Airflow 3.2 multi-team mode separates teams in the UI and REST API, but teams still share workers, signing keys and parsing components. Plan the boundary before you share one instance.

On this page

When one Airflow instance for several teams is a reasonable choice

Several data or platform teams want one self-hosted Airflow, and the question is whether the experimental [core] multi_team setting, added in Airflow 3.2.0 (released April 7, 2026), gives them enough separation. It does add access isolation: team-scoped RBAC in the UI and REST API, and team-scoped Variables and Connections, so a team sees and manages only the objects it owns. It does not add task-level isolation. Teams still share the Execution API, the signing keys and, by default, one DAG File Processor and one Triggerer. Treat it as a boundary that keeps teams from browsing or editing each other's configuration, not as a boundary that stops one team's code from reaching another team's work.

A shared instance is a reasonable choice when the teams trust each other's DAG code, the organization wants one scheduler, one metadata database and one upgrade path, and the main risk is accidental interference through the UI, API or shared connection names. It is a weaker choice when one team handles regulated data, when teams have different change-approval rules, or when a single DAG author could break another team's runs by mistake. Before committing, confirm with your Airflow platform team which settings are team-scoped in your version, and read the Apache Airflow security model against your threat model.

Check two dependencies before you design around multi-team mode. Managed services can rule it out: Amazon MWAA does not support Airflow multi-team mode, so a team that needs it must run Airflow itself. Also confirm that your identity approach and executor choice are supported alongside it, since the topic's sources do not establish compatibility for every combination. If the teams need strong separation of data, credentials or runtime, plan separate Airflow instances from the start, and treat the experimental status as a reason to validate the setup in staging before production use.

What multi-team mode isolates and what it leaves shared

Multi-team mode adds role-based access control to the web UI and REST API so that users are limited to the teams they belong to. Within those limits, a team member sees and manages only the DAGs and related objects assigned to that team, which keeps routine operations from crossing team lines. The isolation applies to what people can view and change through the interface and the API, not to what runs on the workers.

  • Team-scoped views: Users see DAGs, runs and objects belonging to their own team in the UI.
  • Scoped API permissions: REST API calls are checked against the same team-based roles as the UI.
  • Admin reach: Users with global administrative roles can still see across teams, so limit who holds them.
  • Authentication still shared: Team roles depend on the auth manager you configure, so the identity setup is a shared dependency.
  • No task-level control: Access checks do not stop code in a DAG from calling services that other teams use.

Confirm with your team leads which users hold global roles and how team membership is assigned and removed in your identity provider.

Multi-team configuration options and when each fits

This table compares the main configuration choices for an experimental multi-team Airflow setup, from the [core] multi_team setting to shared components such as the DAG File Processor, Triggerer and worker pools. Read each row as a question to answer for your environment: which option fits your teams, and what risk it leaves open.

OptionWhen it fitsRisk it leaves open
Enable multi_team with team-scoped DAGs, Variables and ConnectionsTeams need separate UI and REST API views and their own Variables and Connections, and they accept that the feature is experimental in Airflow 3.2RBAC isolates the UI and API only; any team can still run code that reaches the shared Execution API and signing keys
Single DAG File Processor shared by all teamsLow DAG volume and a small platform team that wants one component to operate and monitorOne team's broken or slow DAG parsing can delay parsing for every other team
Separate DAG File Processor per teamTeams have heavy parsing loads or different release cadences and need parsing to stop at team boundariesConfirm how each processor is scoped and deployed in your version; the default layout shares this component
Single Triggerer shared by all teamsFew deferrable tasks and a need to keep the number of running components lowTriggerer failures or overload affect deferred tasks from every team
Separate Triggerer per teamTeams run many deferrable sensors or long waits and need failure isolation for themAdds components to run, patch and monitor, and must be confirmed against your deployment tooling
One shared worker poolTeam workloads are small and predictable, and capacity sharing is acceptableWorkers can execute any team's task, so a compromised DAG can reach other teams' runtime context
Separate worker pools per teamTeams handle regulated or sensitive data and need network and runtime separation from each otherHigher infrastructure and operations cost, and the Task Execution API and signing keys remain shared unless separate instances are used
Separate Airflow instances per team or environmentTeams must not share any metadata, signing keys, or execution path, or a regulator or contract requires hard boundariesEach instance needs its own upgrades, database, backups and access reviews, so ask a partner to quote that recurring effort

How to set up a multi-team Airflow safely

This sequence turns the experimental multi-team mode into a configured deployment where each team sees its own DAGs, Variables and Connections. It also records the shared components that remain, so the team that owns the platform can decide whether this isolation level is enough for its risk.

  1. Confirm the release and accept experimental status

    Confirm that the deployment runs Airflow 3.2 or later. The 3.2.0 release notes list multi-team deployments among its additions, and the current 3.x patch release is 3.3.2. Run airflow version on the API server, scheduler and DAG processor images to confirm they match. The platform owner should also record in writing that the multi-team setting is experimental and accept that risk for the deployment. Done when every component reports the same supported version and the acceptance is on file.

  2. Choose an auth manager that supports team RBAC

    Airflow allows only one auth manager at a time, set by the auth_manager option. Confirm in the vendor documentation for each candidate auth manager whether it supports team-scoped role-based access control with multi-team mode. Do not assume support from the name of the manager. Map your identity provider groups to the roles that the chosen manager expects. Done when the written confirmation names the auth manager and version, and a test login returns the expected roles for two sample users in different groups.

  3. Enable the multi_team setting

    Set the experimental multi_team option in the [core] section of the configuration, or the equivalent AIRFLOW__CORE__MULTI_TEAM environment variable, on every component that reads it. Restart the API server, scheduler and DAG processor so the setting takes effect everywhere. Read the value back with airflow config get-value core multi_team on each host or pod. Done when all components report the same value and the UI shows team-aware navigation.

  4. Define teams and bind identity groups

    Create one team for each group of DAG authors and operators, using the team definitions in the UI or REST API for your version. Bind each team to the identity provider group that should carry its members, so access follows directory membership rather than manual grants. Keep a short list of platform administrators outside the team model. Done when each team lists its intended members and a test user from each group sees only its own team's entries in the team selector.

  5. Assign DAGs, Variables and Connections to teams

    Assign each DAG to exactly one owning team, and create every team-scoped Variable and Connection under the team that uses it. Record any object that must be shared, and name its owner so the exception is visible. Check naming conventions so a team's Connection IDs do not collide with another team's entries. Done when a spreadsheet or config export lists every DAG, Variable and Connection with one owner, and the list view for each team matches that export.

  6. Document the shared components and accepted risk

    Multi-team mode adds UI and REST API isolation and team-scoped Variables and Connections, but teams still share the Execution API and signing keys. By default they also share one DAG File Processor and one Triggerer. Read the Airflow security model before writing this down, and list each shared component in the deployment record with its owner and the risk accepted by the platform owner. Done when the risk record names every shared component and a decision-maker has signed off, or the record states that separate Airflow instances will be used for the sensitive teams.

  7. Verify isolation through the UI and REST API

    Sign in as a user from one team and attempt to reach another team's DAG, Variable and Connection through the UI, then through REST API list and detail calls using the same user's token. Expect hidden entries in lists and denied responses for direct IDs. Repeat the test for a user in each team and for a user with no team. Check that the audit log records the denied attempts. Done when every cross-team attempt fails in both interfaces, the results are saved with the test date and build version, and any failure blocks go-live.

Risks that remain when teams share one instance

Multi-team mode separates the UI, the REST API and team-scoped Variables and Connections. Everything underneath those boundaries stays shared, so the cards below describe what one team's actions can still reach in another team's pipelines.

DAG authors can run code on shared workers

Anyone who can merge DAG code can execute that code on the workers that run every team's tasks. Multi-team RBAC does not change this, because it governs the UI and API, not what a task process can do once it starts. Check whether the workers that run one team's tasks can also reach another team's credentials, files or network paths, and whether your review process treats DAG merges as code execution.

Shared signing keys cover every team

Teams share the Execution API and the signing keys that issue task tokens, so the trust boundary for token issuance is the whole instance rather than a team. A key problem or compromise affects all teams at once, and rotation is an instance-wide event that needs coordination across owners. Confirm who owns key rotation, how it is tested in staging, and how you would revoke tokens for one team without stopping the others.

One team's DAG can disrupt parsing

By default all teams share one DAG File Processor. A DAG that is slow to parse, raises errors at import or generates a very large number of tasks can delay or stall DAG updates for every team on the instance. Ask who may change parsing settings, set limits on parse time and generated task counts in your DAG review, and monitor parse duration per team's files.

Shared Triggerer load

Deferrable operators from all teams run on one shared Triggerer by default. A spike in waiting sensors or async triggers from one team can consume capacity that another team's time-sensitive pipelines depend on. Measure trigger counts per team before go-live, decide whether a separate Triggerer is needed for critical workloads, and treat that choice as part of your isolation design rather than a tuning detail.

Cross-team audit visibility

Operators with access to the shared instance can see records that span teams, and the audit trail reflects actions on the whole platform. Confirm which roles can read audit events across teams, whether each team's reviewers can see only their own records, and how events are retained and shipped to your SIEM so that a team cannot delete evidence about its own actions.

Experimental status in production

Multi-team mode is marked experimental in the 3.2 line. Its behavior, settings and boundaries may change between releases, so each upgrade may require re-testing the isolation you rely on. Before committing production teams to one instance, record the exact release you will run, write down the isolation assumptions your risk owners have accepted, and plan a separate-instance fallback in case those assumptions stop holding.

When separate Airflow instances are the safer choice

Run a separate Airflow instance, not a team-scoped one, when the teams sharing a deployment differ in data classification, change-control rules, credential scopes or availability needs. The experimental [core] multi_team setting in Airflow 3.2 separates what users see and what Variables and Connections they can reach, but it does not separate execution. Teams still share the Execution API, the signing keys and, by default, one DAG File Processor and one Triggerer. If a team handling regulated customer records and a team running marketing reports share those components, a fault, a misconfigured DAG or a compromised worker in one team's pipeline sits in the same trust boundary as the other team's data. That is the core reason multi-team mode is a poor fit for strict separation, and the experimental label is a second reason to keep it out of regulated production paths.

Separate instances make sense in four situations: different data classifications that auditors treat as different systems, change windows that cannot be aligned (for example, one team must freeze releases during a close period), credential scopes that must never overlap, and availability targets that differ enough that one team's upgrade or scheduler incident would breach the other's commitments. In each case, ask whether the isolation you need is between users (RBAC can help) or between code and credentials (it cannot, in multi-team mode). Confirm the answer with the Airflow security model before deciding, because the answer usually settles the question.

The cost of separation is operational and recurs. Each instance needs its own metadata database, scheduler set, API server, DAG delivery path, secrets backend configuration and upgrade cycle, and each upgrade must be planned against the same Airflow version support windows. Costs rise with the number of instances and fall when they share a standard Helm chart or deployment template managed as code. Ask any implementation partner for a quote that itemizes the one-time build of the shared template and the recurring upgrade, monitoring and database work per instance, and confirm which of these your own platform team can absorb.

Security and operational controls for a shared instance

How do we review team assignments in a shared Airflow instance?

Review team assignments on a fixed schedule and after every organizational change, because multi-team mode only isolates what it is configured to isolate. Export the current mapping of users, roles and teams, then compare it with the ownership records in your identity provider and HR system. Remove access for people who changed teams or left. Confirm with your chosen auth manager how team membership is granted, since that determines whether the review can be driven from your identity system or must be done by hand in the UI. Check that DAG authors cannot also edit another team's connections or variables. Record each review with a date, reviewer and outcome so the evidence can be shown to an auditor. Use the Airflow security model as the reference for what teams still share, and review against it too. DeployOpen can plan the review procedure and evidence template as part of a hardening engagement.

Can audit logs show which team changed a shared DAG or connection?

Probably, but confirm the scope in your own environment before you rely on it. Airflow records actions taken through the UI, the REST API and the CLI, along with some system events, and permission to view those records is separate from ordinary DAG access. For a shared instance, check that each entry identifies the acting user and the team that owns the object changed, because a log that names a user but not a team makes review slow. Confirm retention, since database cleanup can remove old event rows. Plan to ship the events to your SIEM so they survive cleanup and sit outside the reach of the people they describe. Test with a deliberate change by a user in each team, then confirm the record appears where your reviewers will look. The Airflow security model explains the trust boundaries the log must support.

How should secrets be handled when teams share one Airflow instance?

Team scoping limits who sees a Variable or Connection in the UI and REST API. It does not change the fact that teams share the Execution API, the signing keys and the metadata database, so any secret stored there is reachable by anything that holds those keys or that database access. Keep the Fernet key under the same controls as a database password, and rotate it using the documented procedure. For higher-sensitivity credentials, move them to a secrets backend so the metadata database holds no stored values for them. Give each team its own backend path or prefix, with a naming convention that prevents collisions. Verify that values are masked in logs and the UI, and remember that XCom and environment variables need separate controls. Confirm each choice against the security model and your own threat model before go-live.

How should we plan upgrades for an experimental Airflow feature?

Expect to upgrade more often than a stable feature would require, and treat each upgrade as a change to a shared system. Multi-team mode is experimental, so its behavior can change between releases, and the Airflow release notes are the first place to check what changed. Stay on a supported minor line: under the Airflow support policy, a version in limited maintenance receives only security and critical fixes, and an end-of-life version receives none. Stage each upgrade in a production-like copy with the full team configuration, rerun your RBAC checks, and confirm that the API server, scheduler and DAG File Processor behave as expected. Keep a rollback path that includes a metadata database backup taken immediately before the change. DeployOpen can plan and carry out upgrades under a written scope, or run them under a retainer.

How do we back up and restore the Airflow metadata database?

Back up the metadata database on a schedule, and prove the schedule works by restoring from it. The Airflow production deployment guide recommends PostgreSQL or MySQL for this role and warns that the default SQLite backend is for testing only and can lose data in production. Use point-in-time recovery if your database platform offers it, store backups outside the cluster running Airflow, and encrypt them. Test a restore into an isolated environment and time it, because the restore duration determines how long a shared instance stays down. The database holds every team's encrypted connections and variables, so backup copies carry the same sensitivity as the live database. Document who may request a restore, since a restore can roll back team configuration. Validate recovery with all schedulers running, because they coordinate through database row-level locks.

What should we monitor across shared Airflow components?

Monitor each shared component separately, because a responsive web interface does not show that scheduling, parsing or triggering is keeping up. Teams share the API server, the scheduler, the DAG File Processor and the Triggerer. Per the security model, the DAG File Processor and Triggerer run as one instance by default, so a slow parse or a stuck trigger affects every team. Track scheduler heartbeats, DAG parse time and import errors, queued and running task counts, triggerer health, database connection use and metadata database growth. The Airflow scheduler documentation describes how multiple schedulers coordinate, which helps you set alert thresholds. Alert on stalled parsing or scheduling, and route alerts to owners by team where your tooling allows it. Confirm which metrics your Airflow version exposes and where to collect them.

Can DeployOpen run these controls for our shared Airflow instance?

Yes, within a written scope. DeployOpen plans, implements, hardens, backs up, upgrades, documents and supports self-hosted open-source platforms in your own infrastructure, so the access reviews, audit log routing, secrets handling, upgrade procedure, recovery testing and monitoring can be designed and built together. Most engagements are fixed-scope, with deliverables and timelines agreed in writing before work starts. Recurring reviews, upgrades and monitoring support are available as retainers. Cost depends on the number of teams, the components in scope, the current state of the instance and how much evidence collection you want prepared. DeployOpen does not publish a price list, so ask for a quote based on the written scope. We prepare controls and evidence for compliance assessments, but independent auditors and certification bodies issue the reports and certifications.

Limits to confirm in your environment before go-live

Multi-team mode in Airflow 3.2 narrows what teams can see in the UI and API, but it does not isolate tasks, keys or processes. The cards below list the points to verify in your own release, identity setup and hosting model before any shared deployment goes live.

Confirm multi_team behavior in your release

Read the exact scope of the experimental [core] multi_team setting in the release you will run, not only the feature summary. Confirm which screens, REST API endpoints and team-scoped Variables and Connections are covered, and test that a user from one team cannot read or change another team's objects. Record the result against the specific version you plan to pin.

Confirm team RBAC support in your auth manager

Team-scoped RBAC depends on the auth manager you choose, and the Simple auth manager is not suitable for shared production use. Confirm with your vendor or the Airflow auth manager documentation that your chosen manager maps identity provider groups to teams for your identity provider. Test group changes, removed users and service accounts before relying on them.

Confirm DAG processor and triggerer separation

By default, teams share one DAG File Processor and one Triggerer, so a parsing or trigger fault can affect every team. Decide whether to run separate instances per team, and confirm the component layout in your deployment manifests. Check how a failing DAG from one team appears to others, and how resource limits are set for each component.

Confirm worker isolation requirements

Multi-team mode does not stop a DAG author's task code from running on a shared worker with access to shared signing keys and the Execution API. Map which credentials each worker holds, whether network policies separate team workloads, and whether a stricter model is required by your security policy. Document the gap so the risk owner accepts it explicitly.

Confirm managed service limits

Managed services can block multi-team mode even when self-hosted Airflow supports it. Amazon MWAA states that it does not support multi-team mode, citing its authentication, CeleryExecutor and environment-level secrets management. If you consider a managed service, confirm its current limits in writing, since the platform list changes with each release.

Confirm long-term support of the setting

The multi_team setting is experimental, so its behavior, configuration keys and defaults may change between patch and minor releases. Ask whether the feature has a stated path to stable status, and plan upgrade testing that includes RBAC, Variables and Connections. Keep separate instances as a fallback if the setting changes in a way your audit evidence cannot tolerate.

Questions buyers ask about multi-team Airflow

Is multi-team mode in Apache Airflow production ready?

Not yet, by the project's own label. The [core] multi_team setting is experimental in Airflow 3.2, and it adds team-scoped RBAC in the UI and REST API plus team-scoped Variables and Connections. It does not add task-level isolation. Teams still share the Execution API, the signing keys and, by default, one DAG File Processor and one Triggerer. Before you rely on it for regulated data, confirm the current status in the Airflow security model and the release notes for the version you plan to run, and decide whether the shared components are acceptable for your risk profile.

What drives the effort of a multi-team Airflow build?

The main drivers are the number of teams, how far their DAGs and credentials must be separated, and how many shared components you must split out. Effort rises when each team needs its own connections, secrets backend paths, role mappings from your identity provider, and a clear rule for who can edit shared Variables. It also rises when you add a separate DAG File Processor or Triggerer per team, or when you must prove separation to an auditor. Ask any partner for a quote that lists each team, each shared component, the identity integration, and the test cases for cross-team access, so you can compare scopes rather than headline numbers.

What does our team need to provide for a multi-team deployment?

You need a named owner for each team's DAGs, a list of the systems each team connects to, and a decision on identity. Your identity provider must map groups to Airflow roles, and the auth manager you choose must support the team-scoped model you design. You also need a secrets strategy, a repository and deployment process that keeps one team's code from reaching another team's DAG folder, and an environment for testing. Gathering these inputs early usually shortens the design phase more than any other step.

Can our own platform team set up multi-team mode without a partner?

Yes, if your team already runs Airflow 3 in production and has people who can work through the security model, auth manager configuration and secrets backend setup. The harder work is the testing: proving that a user in one team cannot see or change another team's DAGs, Variables, Connections, logs or runs, through both the UI and the REST API. Plan for that test suite and for keeping it running through upgrades, since an experimental feature may change between releases. A partner can take on any part of this, from design review to testing, under a written scope.

When is a separate Airflow instance safer than multi-team mode?

Choose separate instances when teams need task-level isolation, when they run code that must not share workers, Execution API signing keys or a DAG File Processor, or when their data classifications differ. Separate instances also suit teams that need different Airflow versions or different auth managers. The trade-off is more infrastructure, more upgrades and more monitoring to run. If you use a managed service, note that Amazon MWAA does not support multi-team mode, so separate environments are the only option there. Check the MWAA versions page for its current limits.

How does a partner scope a multi-team Airflow engagement?

A partner should start with a written inventory of teams, data sources, DAG authors, identity groups and compliance obligations, then decide whether multi-team mode fits or whether separate instances are the better design. The scope should name the deliverables: the architecture decision record, configuration for RBAC and secrets, the repository and deployment controls, an isolation test plan, documentation and handover. DeployOpen works on fixed scopes agreed in writing before work starts, and it can run ongoing upgrades and testing under a retainer. Ask for each deliverable and its acceptance test in the quote.

How DeployOpen scopes multi-team Airflow work

Whether multi-team mode in Airflow 3.2 is enough for your organization is a scoping question, and DeployOpen answers it in writing before any build starts. DeployOpen plans, implements and hardens self-hosted open-source platforms inside your own infrastructure, including your cloud accounts, data centers or air-gapped networks, so the Airflow control plane, metadata database, secrets backends and worker network stay under your control. A scope for this topic typically starts from the decisions already covered on this page: which teams share a deployment, which team-scoped Variables and Connections they need, whether the shared Execution API, signing keys and DAG File Processor are acceptable under your trust model, and whether a managed service is in play that cannot run multi-team mode.

Most engagements are fixed-scope. The written scope names the environments, the Airflow version and its upgrade path, the team boundaries, the RBAC mapping, the isolation controls you decide to add, the audit log routing, and the deliverables such as configuration, runbooks and verification evidence. Timelines and fees follow from that scope, so ask for a quote tied to a specific list of teams, environments and integrations rather than a general estimate. Where the scope concludes that separate Airflow instances are the safer choice, the written scope says so and prices that option instead.

Ongoing work is handled through retainers that cover support, Airflow upgrades, patching and continuous testing after go-live. Because multi-team mode is experimental, plan for retainer time to track changes in each release and to confirm behavior against the release notes before every upgrade. DeployOpen does not hold partner status with the Apache Software Foundation or with any managed service provider, and it does not issue audit reports or certifications. Where your evidence needs an independent assessment, the scope prepares the controls and records for the auditor or certification body you choose.

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.