Apache Airflow FAB Provider
raw JSON → 3.6.0 verified Tue May 12 auth: no python install: verified
The Apache Airflow FAB (Flask AppBuilder) Provider package integrates Flask-AppBuilder functionalities into Apache Airflow, primarily enhancing its User Interface (UI) and Role-Based Access Control (RBAC) capabilities. It is an actively maintained provider, with the current version being 3.6.0. New versions are released independently of core Airflow, following a strict SemVer policy, and can introduce database migrations.
pip install apache-airflow-providers-fab Common errors
error ImportError: cannot import name '_plain_int' from 'werkzeug._internal' ↓
cause This error occurs due to an incompatibility between the 'apache-airflow-providers-fab' package and the 'werkzeug' library, where the '_plain_int' function has been removed in newer versions of 'werkzeug'.
fix
Downgrade 'werkzeug' to a compatible version by running 'pip install werkzeug==2.0.3'.
error ModuleNotFoundError: No module named 'apache-airflow-providers-fab' ↓
cause This error occurs when the 'apache-airflow-providers-fab' package is not installed or is missing from the Python environment.
fix
Install the package using 'pip install apache-airflow-providers-fab'.
error AttributeError: module 'flask_appbuilder.security' has no attribute 'get_oauth_user_info' ↓
cause This error occurs when attempting to use the 'get_oauth_user_info' method, which may not be available in the installed version of 'flask_appbuilder'.
fix
Ensure that 'flask_appbuilder' is updated to a version that includes the 'get_oauth_user_info' method by running 'pip install flask-appbuilder==4.1.0'.
error ImportError: cannot import name 'FabAirflowSecurityManagerOverride' from 'airflow.auth.managers.fab.security_manager.override' ↓
cause This error occurs when the 'FabAirflowSecurityManagerOverride' class is not available in the specified module, possibly due to version mismatches or missing updates.
fix
Ensure that both 'apache-airflow' and 'apache-airflow-providers-fab' are updated to compatible versions by running 'pip install apache-airflow==2.9.0 apache-airflow-providers-fab==1.2.2'.
error ImportError: cannot import name 'get_db_manager' from 'airflow.providers.fab.auth_manager' ↓
cause This error occurs when the 'get_db_manager' function is not available in the 'airflow.providers.fab.auth_manager' module, possibly due to recent changes or deprecations.
fix
Check the 'apache-airflow-providers-fab' documentation for updates or changes regarding the 'get_db_manager' function, and update your code accordingly.
Warnings
breaking Version incompatibility: `apache-airflow-providers-fab >= 2.0` is only compatible with Apache Airflow 3.x. If you are using Airflow 2.x, you must use `apache-airflow-providers-fab 1.x`. ↓
fix For Airflow 2.x, downgrade to `apache-airflow-providers-fab==1.*`. For Airflow 3.x, ensure you use `apache-airflow-providers-fab >= 2.0`.
breaking Removed methods and properties: `is_authorized_dataset` was removed from `FabAuthManager`; use `is_authorized_asset` instead. `oauth_whitelists` property was removed; use `oauth_allow_list` instead. The authentication type `AUTH_OID` was also removed. ↓
fix Update custom security manager implementations to use the new method/property names: `is_authorized_asset` and `oauth_allow_list`. Avoid using `AUTH_OID`.
gotcha Database migrations: Newer versions of the FAB provider can contain database schema changes. After upgrading the provider, you must run `airflow fab-db migrate` to apply these changes. ↓
fix Always run `airflow fab-db migrate` after upgrading the `apache-airflow-providers-fab` package. If `FABDBManager` is configured in `[core] external_db_managers`, migrations might run automatically with `airflow db migrate`.
deprecated Deprecated configurations and Kerberos authentication removed. Various deprecated classes, parameters, and features have been removed from the provider package. ↓
fix Review the changelog for specific removals and update your Airflow configurations (`airflow.cfg`) and custom code to use supported alternatives.
gotcha Insufficient Session Expiration vulnerability in older versions: When a user password was changed via the admin CLI, existing sessions for that user were not cleared, leading to prolonged access. ↓
fix Upgrade to `apache-airflow-providers-fab >= 1.5.2` to resolve this vulnerability. (Note: Current version 3.6.0 is not affected).
gotcha Configuration for authentication: For most supported authentication options, the new `auth_manager` framework configured in `airflow.cfg` is preferred. `webserver_config.py` is still used for more advanced options like Single Sign-On (SSO) with OAuth. ↓
fix Prioritize `airflow.cfg` for standard authentication configurations. Use `webserver_config.py` only when advanced customization or SSO integrations are necessary.
gotcha The 'connexion' package may issue warnings about missing 'flask' extras. These are typically informational and do not indicate a breaking issue with `apache-airflow-providers-fab` itself. Ensure all required dependencies are installed correctly. ↓
fix Ensure all Airflow and provider dependencies are correctly installed. These warnings often occur when 'connexion' is installed without its 'flask' extra explicitly, but may still function. If issues arise, try explicitly installing `connexion[flask]` if required by your setup, or consult `connexion` documentation.
Install compatibility verified last tested: 2026-05-12
python os / libc status wheel install import disk
3.10 alpine (musl) wheel - 7.40s 268.1M
3.10 alpine (musl) - - 7.42s 259.9M
3.10 slim (glibc) wheel 28.4s 5.40s 266M
3.10 slim (glibc) - - 5.59s 258M
3.11 alpine (musl) wheel - 9.53s 289.5M
3.11 alpine (musl) - - 10.96s 280.4M
3.11 slim (glibc) wheel 28.5s 8.58s 288M
3.11 slim (glibc) - - 8.77s 279M
3.12 alpine (musl) wheel - 8.42s 279.2M
3.12 alpine (musl) - - 8.94s 270.4M
3.12 slim (glibc) wheel 22.8s 8.52s 279M
3.12 slim (glibc) - - 9.30s 270M
3.13 alpine (musl) wheel - 7.56s 281.1M
3.13 alpine (musl) - - 8.45s 272.2M
3.13 slim (glibc) wheel 22.3s 8.02s 281M
3.13 slim (glibc) - - 9.16s 272M
3.9 alpine (musl) sdist - 5.92s 263.6M
3.9 alpine (musl) - - 5.60s 262.0M
3.9 slim (glibc) wheel 33.0s 5.71s 259M
3.9 slim (glibc) - - 5.10s 257M
Imports
- FabAirflowSecurityManagerOverride
from airflow.providers.fab.auth_manager.security_manager.override import FabAirflowSecurityManagerOverride
Quickstart last tested: 2026-04-24
# This provider enhances Airflow's UI/RBAC; direct code interaction is mostly via Airflow CLI or configuration.
# Ensure Airflow is running with this provider installed.
# Example: Creating a user via Airflow CLI (which uses the FAB backend):
# Make sure to run this command in your Airflow environment where `apache-airflow-providers-fab` is installed.
# Replace sensitive details with environment variables in a production setup.
import os
# Example of setting up environment variables for a new user
# In a real scenario, you'd execute this via command line or a script,
# not directly in a Python quickstart meant for direct execution.
# For demonstration, assume these are set or replaced by actual values.
admin_username = os.environ.get('AIRFLOW_ADMIN_USERNAME', 'admin')
admin_firstname = os.environ.get('AIRFLOW_ADMIN_FIRSTNAME', 'Airflow')
admin_lastname = os.environ.get('AIRFLOW_ADMIN_LASTNAME', 'User')
admin_role = os.environ.get('AIRFLOW_ADMIN_ROLE', 'Admin')
admin_email = os.environ.get('AIRFLOW_ADMIN_EMAIL', 'admin@example.com')
admin_password = os.environ.get('AIRFLOW_ADMIN_PASSWORD', 'supersecretpassword')
# This command would typically be run in your shell:
# airflow users create \
# -u "${AIRFLOW_ADMIN_USERNAME}" \
# -f "${AIRFLOW_ADMIN_FIRSTNAME}" \
# -l "${AIRFLOW_ADMIN_LASTNAME}" \
# -r "${AIRFLOW_ADMIN_ROLE}" \
# -e "${AIRFLOW_ADMIN_EMAIL}" \
# -p "${AIRFLOW_ADMIN_PASSWORD}"
print(f"To create an Airflow user via CLI (using FAB provider's backend), run:\n")
print(f"airflow users create -u {admin_username} -f {admin_firstname} -l {admin_lastname} -r {admin_role} -e {admin_email} -p {admin_password}")
print(f"\nFor advanced authentication (e.g., OAuth), configure `webserver_config.py` as described in Airflow documentation.")