apache-airflow-providers-fab 2.0.0rc2__tar.gz → 2.0.0rc4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- apache_airflow_providers_fab-2.0.0rc4/3rd-party-licenses/LICENSES-ui.txt +87 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/PKG-INFO +5 -3
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/README.rst +2 -1
- apache_airflow_providers_fab-2.0.0rc4/docs/api-ref/fab-public-api-ref.rst +23 -0
- apache_airflow_providers_fab-2.0.0rc4/docs/api-ref/fab-token-api-ref.rst +22 -0
- apache_airflow_providers_fab-2.0.0rc4/docs/auth-manager/access-control.rst +362 -0
- apache_airflow_providers_fab-2.0.0rc4/docs/auth-manager/api-authentication.rst +135 -0
- apache_airflow_providers_fab-2.0.0rc4/docs/auth-manager/index.rst +39 -0
- apache_airflow_providers_fab-2.0.0rc4/docs/auth-manager/security.rst +105 -0
- apache_airflow_providers_fab-2.0.0rc4/docs/auth-manager/token.rst +42 -0
- apache_airflow_providers_fab-2.0.0rc4/docs/auth-manager/webserver-authentication.rst +318 -0
- apache_airflow_providers_fab-2.0.0rc4/docs/changelog.rst +465 -0
- apache_airflow_providers_fab-2.0.0rc4/docs/cli-ref.rst +29 -0
- apache_airflow_providers_fab-2.0.0rc4/docs/commits.rst +476 -0
- apache_airflow_providers_fab-2.0.0rc4/docs/conf.py +27 -0
- apache_airflow_providers_fab-2.0.0rc4/docs/configurations-ref.rst +19 -0
- apache_airflow_providers_fab-2.0.0rc4/docs/img/add-role.png +0 -0
- apache_airflow_providers_fab-2.0.0rc4/docs/img/diagram_fab_auth_manager_airflow_architecture.md5sum +1 -0
- apache_airflow_providers_fab-2.0.0rc4/docs/img/diagram_fab_auth_manager_airflow_architecture.png +0 -0
- apache_airflow_providers_fab-2.0.0rc4/docs/img/diagram_fab_auth_manager_airflow_architecture.py +74 -0
- apache_airflow_providers_fab-2.0.0rc4/docs/img/new-role.png +0 -0
- apache_airflow_providers_fab-2.0.0rc4/docs/index.rst +150 -0
- apache_airflow_providers_fab-2.0.0rc4/docs/installing-providers-from-sources.rst +18 -0
- apache_airflow_providers_fab-2.0.0rc4/docs/migrations-ref.rst +44 -0
- apache_airflow_providers_fab-2.0.0rc4/docs/security.rst +18 -0
- apache_airflow_providers_fab-2.0.0rc4/docs/upgrading.rst +63 -0
- apache_airflow_providers_fab-2.0.0rc4/provider.yaml +122 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/pyproject.toml +19 -6
- apache_airflow_providers_fab-2.0.0rc4/src/airflow/__init__.py +17 -0
- apache_airflow_providers_fab-2.0.0rc4/src/airflow/providers/3rd-party-licenses/LICENSES-ui.txt +62 -0
- apache_airflow_providers_fab-2.0.0rc4/src/airflow/providers/__init__.py +17 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/__init__.py +2 -2
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/auth_manager/cli_commands/utils.py +1 -1
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/auth_manager/fab_auth_manager.py +5 -2
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/auth_manager/security_manager/override.py +132 -1
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/get_provider_info.py +22 -37
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/app.py +8 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/extensions/init_appbuilder.py +4 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/extensions/init_session.py +2 -2
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/package-lock.json +20 -732
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/package.json +3 -3
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/utils.py +16 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/views.py +1 -1
- apache_airflow_providers_fab-2.0.0rc4/tests/conftest.py +19 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/__init__.py +17 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/fab/__init__.py +17 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/fab/auth_manager/__init__.py +17 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/fab/auth_manager/api/__init__.py +17 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/fab/auth_manager/api/auth/__init__.py +16 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/fab/auth_manager/api/auth/backend/__init__.py +16 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/fab/auth_manager/api/auth/backend/test_basic_auth.py +110 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/fab/auth_manager/api/auth/backend/test_kerberos_auth.py +27 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/fab/auth_manager/api/auth/backend/test_session.py +67 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/fab/auth_manager/api_endpoints/__init__.py +16 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/fab/auth_manager/api_endpoints/api_connexion_utils.py +127 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/fab/auth_manager/api_endpoints/remote_user_api_auth_backend.py +83 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/fab/auth_manager/api_endpoints/test_auth.py +79 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/fab/auth_manager/api_endpoints/test_role_and_permission_endpoint.py +579 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/fab/auth_manager/api_endpoints/test_user_endpoint.py +816 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/fab/auth_manager/api_fastapi/__init__.py +16 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/fab/auth_manager/api_fastapi/conftest.py +32 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/fab/auth_manager/api_fastapi/routes/__init__.py +16 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/fab/auth_manager/api_fastapi/routes/test_login.py +52 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/fab/auth_manager/api_fastapi/services/__init__.py +17 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/fab/auth_manager/api_fastapi/services/test_login.py +105 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/fab/auth_manager/cli_commands/__init__.py +16 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/fab/auth_manager/cli_commands/test_db_command.py +149 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/fab/auth_manager/cli_commands/test_definition.py +37 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/fab/auth_manager/cli_commands/test_role_command.py +232 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/fab/auth_manager/cli_commands/test_sync_perm_command.py +75 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/fab/auth_manager/cli_commands/test_user_command.py +546 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/fab/auth_manager/cli_commands/test_utils.py +84 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/fab/auth_manager/conftest.py +101 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/fab/auth_manager/models/__init__.py +17 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/fab/auth_manager/models/test_anonymous_user.py +37 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/fab/auth_manager/models/test_db.py +135 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/fab/auth_manager/schemas/__init__.py +17 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/fab/auth_manager/schemas/test_role_and_permission_schema.py +107 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/fab/auth_manager/schemas/test_user_schema.py +148 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/fab/auth_manager/security_manager/__init__.py +16 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/fab/auth_manager/security_manager/test_constants.py +33 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/fab/auth_manager/security_manager/test_override.py +77 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/fab/auth_manager/test_fab_auth_manager.py +636 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/fab/auth_manager/test_models.py +65 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/fab/auth_manager/test_security.py +1109 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/fab/auth_manager/views/__init__.py +34 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/fab/auth_manager/views/test_permissions.py +89 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/fab/auth_manager/views/test_roles_list.py +75 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/fab/auth_manager/views/test_user.py +75 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/fab/auth_manager/views/test_user_edit.py +74 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/fab/auth_manager/views/test_user_stats.py +74 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/fab/decorators.py +63 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/fab/utils.py +256 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/fab/www/__init__.py +17 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/fab/www/test_auth.py +248 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/fab/www/test_utils.py +40 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/fab/www/views/__init__.py +17 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/fab/www/views/conftest.py +124 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/fab/www/views/test_connection_form_fields.py +163 -0
- apache_airflow_providers_fab-2.0.0rc4/tests/unit/fab/www/views/test_views_custom_user_views.py +344 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/LICENSE +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/alembic.ini +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/auth_manager/__init__.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/auth_manager/api/__init__.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/auth_manager/api/auth/__init__.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/auth_manager/api/auth/backend/__init__.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/auth_manager/api/auth/backend/basic_auth.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/auth_manager/api/auth/backend/kerberos_auth.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/auth_manager/api/auth/backend/session.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/auth_manager/api_endpoints/__init__.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/auth_manager/api_endpoints/role_and_permission_endpoint.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/auth_manager/api_endpoints/user_endpoint.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/auth_manager/api_fastapi/__init__.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/auth_manager/api_fastapi/datamodels/__init__.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/auth_manager/api_fastapi/datamodels/login.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/auth_manager/api_fastapi/openapi/__init__.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/auth_manager/api_fastapi/openapi/v1-generated.yaml +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/auth_manager/api_fastapi/routes/__init__.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/auth_manager/api_fastapi/routes/login.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/auth_manager/api_fastapi/services/__init__.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/auth_manager/api_fastapi/services/login.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/auth_manager/cli_commands/__init__.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/auth_manager/cli_commands/db_command.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/auth_manager/cli_commands/definition.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/auth_manager/cli_commands/role_command.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/auth_manager/cli_commands/sync_perm_command.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/auth_manager/cli_commands/user_command.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/auth_manager/models/__init__.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/auth_manager/models/anonymous_user.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/auth_manager/models/db.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/auth_manager/openapi/__init__.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/auth_manager/openapi/v1.yaml +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/auth_manager/schemas/__init__.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/auth_manager/schemas/role_and_permission_schema.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/auth_manager/schemas/user_schema.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/auth_manager/security_manager/__init__.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/auth_manager/security_manager/constants.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/auth_manager/views/__init__.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/auth_manager/views/permissions.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/auth_manager/views/roles_list.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/auth_manager/views/user.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/auth_manager/views/user_edit.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/auth_manager/views/user_stats.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/migrations/README +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/migrations/__init__.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/migrations/env.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/migrations/script.py.mako +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/migrations/versions/0001_1_4_0_placeholder_migration.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/migrations/versions/__init__.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/__init__.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/airflow_flask_app.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/api_connexion/__init__.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/api_connexion/exceptions.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/api_connexion/parameters.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/api_connexion/security.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/api_connexion/types.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/auth.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/constants.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/extensions/__init__.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/extensions/init_jinja_globals.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/extensions/init_manifest_files.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/extensions/init_security.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/extensions/init_views.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/security/__init__.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/security/permissions.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/security_appless.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/security_manager.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/session.py +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/static/css/bootstrap-theme.css +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/static/css/flash.css +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/static/css/loading-dots.css +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/static/css/main.css +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/static/css/material-icons.css +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/static/dist/48f0ea180c40270a5b05.png +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/static/dist/649c0b07771e68fafdeb.png +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/static/dist/airflowDefaultTheme.feec4a4075c2f3d6ae01.css +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/static/dist/airflowDefaultTheme.feec4a4075c2f3d6ae01.js +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/static/dist/f7490d556a6c42e49ba4.png +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/static/dist/flash.137b30cff85b5588e661.css +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/static/dist/flash.137b30cff85b5588e661.js +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/static/dist/jquery-ui.min.css +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/static/dist/jquery-ui.min.js +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/static/dist/jquery-ui.min.js.LICENSE.txt +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/static/dist/loadingDots.48ab7d5b04e66f2686b0.css +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/static/dist/loadingDots.48ab7d5b04e66f2686b0.js +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/static/dist/main.edb2d40dfbbc537916e3.css +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/static/dist/main.edb2d40dfbbc537916e3.js +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/static/dist/main.edb2d40dfbbc537916e3.js.LICENSE.txt +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/static/dist/manifest.json +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/static/dist/materialIcons.57390fa60d8f61175334.css +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/static/dist/materialIcons.57390fa60d8f61175334.js +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/static/dist/moment.624b1f00ba723d39ce06.js +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/static/dist/moment.624b1f00ba723d39ce06.js.LICENSE.txt +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/static/dist/oss-licenses.json +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/static/js/datetime_utils.js +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/static/js/main.js +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/static/sort_asc.png +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/static/sort_both.png +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/static/sort_desc.png +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/templates/airflow/_messages.html +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/templates/airflow/error.html +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/templates/airflow/main.html +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/templates/airflow/traceback.html +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/templates/appbuilder/flash.html +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/templates/appbuilder/index.html +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/templates/appbuilder/navbar.html +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/templates/appbuilder/navbar_menu.html +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/templates/appbuilder/navbar_right.html +0 -0
- {apache_airflow_providers_fab-2.0.0rc2 → apache_airflow_providers_fab-2.0.0rc4}/src/airflow/providers/fab/www/webpack.config.js +0 -0
@@ -0,0 +1,87 @@
|
|
1
|
+
Apache Airflow
|
2
|
+
Copyright 2016-2025 The Apache Software Foundation
|
3
|
+
|
4
|
+
This product includes software developed at The Apache Software
|
5
|
+
Foundation (http://www.apache.org/).
|
6
|
+
|
7
|
+
=======================================================================
|
8
|
+
css-loader|5.2.7:
|
9
|
+
-----
|
10
|
+
MIT
|
11
|
+
Copyright JS Foundation and other contributors
|
12
|
+
|
13
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
14
|
+
a copy of this software and associated documentation files (the
|
15
|
+
'Software'), to deal in the Software without restriction, including
|
16
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
17
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
18
|
+
permit persons to whom the Software is furnished to do so, subject to
|
19
|
+
the following conditions:
|
20
|
+
|
21
|
+
The above copyright notice and this permission notice shall be
|
22
|
+
included in all copies or substantial portions of the Software.
|
23
|
+
|
24
|
+
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
25
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
26
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
27
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
28
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
29
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
30
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
31
|
+
|
32
|
+
webpack-contrib/css-loader
|
33
|
+
|
34
|
+
|
35
|
+
moment|2.30.1:
|
36
|
+
-----
|
37
|
+
MIT
|
38
|
+
Copyright (c) JS Foundation and other contributors
|
39
|
+
|
40
|
+
Permission is hereby granted, free of charge, to any person
|
41
|
+
obtaining a copy of this software and associated documentation
|
42
|
+
files (the "Software"), to deal in the Software without
|
43
|
+
restriction, including without limitation the rights to use,
|
44
|
+
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
45
|
+
copies of the Software, and to permit persons to whom the
|
46
|
+
Software is furnished to do so, subject to the following
|
47
|
+
conditions:
|
48
|
+
|
49
|
+
The above copyright notice and this permission notice shall be
|
50
|
+
included in all copies or substantial portions of the Software.
|
51
|
+
|
52
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
53
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
54
|
+
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
55
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
56
|
+
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
57
|
+
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
58
|
+
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
59
|
+
OTHER DEALINGS IN THE SOFTWARE.
|
60
|
+
|
61
|
+
https://github.com/moment/moment.git
|
62
|
+
|
63
|
+
|
64
|
+
moment-timezone|0.5.46:
|
65
|
+
-----
|
66
|
+
MIT
|
67
|
+
The MIT License (MIT)
|
68
|
+
|
69
|
+
Copyright (c) JS Foundation and other contributors
|
70
|
+
|
71
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
72
|
+
this software and associated documentation files (the "Software"), to deal in
|
73
|
+
the Software without restriction, including without limitation the rights to
|
74
|
+
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
75
|
+
the Software, and to permit persons to whom the Software is furnished to do so,
|
76
|
+
subject to the following conditions:
|
77
|
+
|
78
|
+
The above copyright notice and this permission notice shall be included in all
|
79
|
+
copies or substantial portions of the Software.
|
80
|
+
|
81
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
82
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
83
|
+
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
84
|
+
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
85
|
+
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
86
|
+
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
87
|
+
https://github.com/moment/moment-timezone.git
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: apache-airflow-providers-fab
|
3
|
-
Version: 2.0.
|
3
|
+
Version: 2.0.0rc4
|
4
4
|
Summary: Provider package apache-airflow-providers-fab for Apache Airflow
|
5
5
|
Keywords: airflow-provider,fab,airflow,integration
|
6
6
|
Author-email: Apache Software Foundation <dev@airflow.apache.org>
|
@@ -20,7 +20,7 @@ Classifier: Programming Language :: Python :: 3.10
|
|
20
20
|
Classifier: Programming Language :: Python :: 3.11
|
21
21
|
Classifier: Programming Language :: Python :: 3.12
|
22
22
|
Classifier: Topic :: System :: Monitoring
|
23
|
-
Requires-Dist: apache-airflow>=3.0.
|
23
|
+
Requires-Dist: apache-airflow>=3.0.0rc0
|
24
24
|
Requires-Dist: apache-airflow-providers-common-compat>=1.2.1rc0
|
25
25
|
Requires-Dist: blinker>=1.6.2
|
26
26
|
Requires-Dist: flask>=2.2.1,<2.3
|
@@ -31,6 +31,7 @@ Requires-Dist: flask-wtf>=1.1.0
|
|
31
31
|
Requires-Dist: connexion[flask]>=2.14.2,<3.0
|
32
32
|
Requires-Dist: jmespath>=0.7.0
|
33
33
|
Requires-Dist: werkzeug>=2.2,<4
|
34
|
+
Requires-Dist: wtforms>=3.0,<4
|
34
35
|
Requires-Dist: kerberos>=1.3.0 ; extra == "kerberos"
|
35
36
|
Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
|
36
37
|
Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-fab/2.0.0/changelog.html
|
@@ -96,7 +97,7 @@ Requirements
|
|
96
97
|
========================================== ==================
|
97
98
|
PIP package Version required
|
98
99
|
========================================== ==================
|
99
|
-
``apache-airflow`` ``>=3.0.0
|
100
|
+
``apache-airflow`` ``>=3.0.0``
|
100
101
|
``apache-airflow-providers-common-compat`` ``>=1.2.1``
|
101
102
|
``blinker`` ``>=1.6.2``
|
102
103
|
``flask`` ``>=2.2.1,<2.3``
|
@@ -107,6 +108,7 @@ PIP package Version required
|
|
107
108
|
``connexion[flask]`` ``>=2.14.2,<3.0``
|
108
109
|
``jmespath`` ``>=0.7.0``
|
109
110
|
``werkzeug`` ``>=2.2,<4``
|
111
|
+
``wtforms`` ``>=3.0,<4``
|
110
112
|
========================================== ==================
|
111
113
|
|
112
114
|
Cross provider package dependencies
|
@@ -53,7 +53,7 @@ Requirements
|
|
53
53
|
========================================== ==================
|
54
54
|
PIP package Version required
|
55
55
|
========================================== ==================
|
56
|
-
``apache-airflow`` ``>=3.0.0
|
56
|
+
``apache-airflow`` ``>=3.0.0``
|
57
57
|
``apache-airflow-providers-common-compat`` ``>=1.2.1``
|
58
58
|
``blinker`` ``>=1.6.2``
|
59
59
|
``flask`` ``>=2.2.1,<2.3``
|
@@ -64,6 +64,7 @@ PIP package Version required
|
|
64
64
|
``connexion[flask]`` ``>=2.14.2,<3.0``
|
65
65
|
``jmespath`` ``>=0.7.0``
|
66
66
|
``werkzeug`` ``>=2.2,<4``
|
67
|
+
``wtforms`` ``>=3.0,<4``
|
67
68
|
========================================== ==================
|
68
69
|
|
69
70
|
Cross provider package dependencies
|
@@ -0,0 +1,23 @@
|
|
1
|
+
|
2
|
+
.. Licensed to the Apache Software Foundation (ASF) under one
|
3
|
+
or more contributor license agreements. See the NOTICE file
|
4
|
+
distributed with this work for additional information
|
5
|
+
regarding copyright ownership. The ASF licenses this file
|
6
|
+
to you under the Apache License, Version 2.0 (the
|
7
|
+
"License"); you may not use this file except in compliance
|
8
|
+
with the License. You may obtain a copy of the License at
|
9
|
+
|
10
|
+
.. http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
|
12
|
+
.. Unless required by applicable law or agreed to in writing,
|
13
|
+
software distributed under the License is distributed on an
|
14
|
+
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
15
|
+
KIND, either express or implied. See the License for the
|
16
|
+
specific language governing permissions and limitations
|
17
|
+
under the License.
|
18
|
+
|
19
|
+
FAB auth manager API
|
20
|
+
====================
|
21
|
+
|
22
|
+
It's a stub file. It will be converted automatically during the build process
|
23
|
+
to the valid documentation by the Sphinx plugin. See: /docs/conf.py
|
@@ -0,0 +1,22 @@
|
|
1
|
+
|
2
|
+
.. Licensed to the Apache Software Foundation (ASF) under one
|
3
|
+
or more contributor license agreements. See the NOTICE file
|
4
|
+
distributed with this work for additional information
|
5
|
+
regarding copyright ownership. The ASF licenses this file
|
6
|
+
to you under the Apache License, Version 2.0 (the
|
7
|
+
"License"); you may not use this file except in compliance
|
8
|
+
with the License. You may obtain a copy of the License at
|
9
|
+
|
10
|
+
.. http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
|
12
|
+
.. Unless required by applicable law or agreed to in writing,
|
13
|
+
software distributed under the License is distributed on an
|
14
|
+
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
15
|
+
KIND, either express or implied. See the License for the
|
16
|
+
specific language governing permissions and limitations
|
17
|
+
under the License.
|
18
|
+
|
19
|
+
FAB auth manager token API
|
20
|
+
==========================
|
21
|
+
|
22
|
+
It's a stub file. It will be automatically converted during the build process into valid documentation by the Sphinx plugin. See: /docs/conf.py
|
@@ -0,0 +1,362 @@
|
|
1
|
+
.. Licensed to the Apache Software Foundation (ASF) under one
|
2
|
+
or more contributor license agreements. See the NOTICE file
|
3
|
+
distributed with this work for additional information
|
4
|
+
regarding copyright ownership. The ASF licenses this file
|
5
|
+
to you under the Apache License, Version 2.0 (the
|
6
|
+
"License"); you may not use this file except in compliance
|
7
|
+
with the License. You may obtain a copy of the License at
|
8
|
+
|
9
|
+
.. http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
|
11
|
+
.. Unless required by applicable law or agreed to in writing,
|
12
|
+
software distributed under the License is distributed on an
|
13
|
+
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
14
|
+
KIND, either express or implied. See the License for the
|
15
|
+
specific language governing permissions and limitations
|
16
|
+
under the License.
|
17
|
+
|
18
|
+
Access Control with FAB auth manager
|
19
|
+
====================================
|
20
|
+
|
21
|
+
FAB auth manager access control is handled by Flask AppBuilder (FAB).
|
22
|
+
Please read its related `security document <http://flask-appbuilder.readthedocs.io/en/latest/security.html>`_
|
23
|
+
regarding its security model.
|
24
|
+
|
25
|
+
.. spelling:word-list::
|
26
|
+
clearTaskInstances
|
27
|
+
dagRuns
|
28
|
+
dagSources
|
29
|
+
eventLogs
|
30
|
+
importErrors
|
31
|
+
taskInstances
|
32
|
+
xcomEntries
|
33
|
+
|
34
|
+
Default Roles
|
35
|
+
'''''''''''''
|
36
|
+
FAB auth manager ships with a set of roles by default: Admin, User, Op, Viewer, and Public.
|
37
|
+
By default, only ``Admin`` users can configure/alter permissions for roles. However,
|
38
|
+
it is recommended that these default roles remain unaltered, and instead ``Admin`` users
|
39
|
+
create new roles with the desired permissions if changes are necessary.
|
40
|
+
|
41
|
+
Public
|
42
|
+
^^^^^^
|
43
|
+
``Public`` users (anonymous) don't have any permissions.
|
44
|
+
|
45
|
+
Viewer
|
46
|
+
^^^^^^
|
47
|
+
``Viewer`` users have limited read permissions:
|
48
|
+
|
49
|
+
.. exampleinclude:: /../../fab/src/airflow/providers/fab/auth_manager/security_manager/override.py
|
50
|
+
:language: python
|
51
|
+
:start-after: [START security_viewer_perms]
|
52
|
+
:end-before: [END security_viewer_perms]
|
53
|
+
|
54
|
+
User
|
55
|
+
^^^^
|
56
|
+
``User`` users have ``Viewer`` permissions plus additional permissions:
|
57
|
+
|
58
|
+
.. exampleinclude:: /../../fab/src/airflow/providers/fab/auth_manager/security_manager/override.py
|
59
|
+
:language: python
|
60
|
+
:start-after: [START security_user_perms]
|
61
|
+
:end-before: [END security_user_perms]
|
62
|
+
|
63
|
+
Op
|
64
|
+
^^
|
65
|
+
``Op`` users have ``User`` permissions plus additional permissions:
|
66
|
+
|
67
|
+
.. exampleinclude:: /../../fab/src/airflow/providers/fab/auth_manager/security_manager/override.py
|
68
|
+
:language: python
|
69
|
+
:start-after: [START security_op_perms]
|
70
|
+
:end-before: [END security_op_perms]
|
71
|
+
|
72
|
+
Admin
|
73
|
+
^^^^^
|
74
|
+
``Admin`` users have all possible permissions, including granting or revoking permissions from
|
75
|
+
other users. ``Admin`` users have ``Op`` permission plus additional permissions:
|
76
|
+
|
77
|
+
.. exampleinclude:: /../../fab/src/airflow/providers/fab/auth_manager/security_manager/override.py
|
78
|
+
:language: python
|
79
|
+
:start-after: [START security_admin_perms]
|
80
|
+
:end-before: [END security_admin_perms]
|
81
|
+
|
82
|
+
Custom Roles
|
83
|
+
'''''''''''''
|
84
|
+
|
85
|
+
DAG Level Role
|
86
|
+
^^^^^^^^^^^^^^
|
87
|
+
``Admin`` can create a set of roles which are only allowed to view a certain set of DAGs. This is called DAG level access. Each DAG defined in the DAG model table
|
88
|
+
is treated as a ``View`` which has two permissions associated with it (``can_read`` and ``can_edit``. ``can_dag_read`` and ``can_dag_edit`` are deprecated since 2.0.0).
|
89
|
+
There is a special view called ``DAGs`` (it was called ``all_dags`` in versions 1.10.*) which
|
90
|
+
allows the role to access all the DAGs. The default ``Admin``, ``Viewer``, ``User``, ``Op`` roles can all access ``DAGs`` view.
|
91
|
+
|
92
|
+
.. image:: /img/add-role.png
|
93
|
+
.. image:: /img/new-role.png
|
94
|
+
|
95
|
+
The image shows the creation of a role which can only write to
|
96
|
+
``example_python_operator``. You can also create roles via the CLI
|
97
|
+
using the ``airflow roles create`` command, e.g.:
|
98
|
+
|
99
|
+
.. code-block:: bash
|
100
|
+
|
101
|
+
airflow roles create Role1 Role2
|
102
|
+
|
103
|
+
And we could assign the given role to a new user using the ``airflow
|
104
|
+
users add-role`` CLI command.
|
105
|
+
|
106
|
+
|
107
|
+
Permissions
|
108
|
+
'''''''''''
|
109
|
+
|
110
|
+
|
111
|
+
.. warning::
|
112
|
+
|
113
|
+
FAB auth manager allows you to define custom Roles with fine-grained RBAC permissions for users. However, not all
|
114
|
+
combinations of permissions are fully consistent, and there is no mechanism to make sure that the set of
|
115
|
+
permissions assigned is fully consistent. There are a number of cases where permissions for
|
116
|
+
particular resources are overlapping. A good example is menu access permissions - a lack of menu access
|
117
|
+
does not automatically disable access to the functionality the menu is pointing at. Another example is access
|
118
|
+
to the Role view, which allows access to User information even if the user does not have "user view" access.
|
119
|
+
It is simply inconsistent to add access to Roles when you have no access to users.
|
120
|
+
|
121
|
+
When you decide to use a custom set of resource-based permissions, the Deployment Manager should carefully
|
122
|
+
review if the final set of permissions granted to roles is what they expect.
|
123
|
+
|
124
|
+
|
125
|
+
Resource-Based permissions
|
126
|
+
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
127
|
+
|
128
|
+
Permissions are based on individual resources and a small subset of actions on those
|
129
|
+
resources. Resources match standard Airflow concepts, such as ``Dag``, ``DagRun``, ``Task``, and
|
130
|
+
``Connection``. Actions include ``can_create``, ``can_read``, ``can_edit``, and ``can_delete``.
|
131
|
+
|
132
|
+
Permissions (each consistent of a resource + action pair) are then added to roles.
|
133
|
+
|
134
|
+
**To access an endpoint, the user needs all permissions assigned to that endpoint**
|
135
|
+
|
136
|
+
There are five default roles: Public, Viewer, User, Op, and Admin. Each one has the permissions of the preceding role, as well as additional permissions.
|
137
|
+
|
138
|
+
DAG-level permissions
|
139
|
+
^^^^^^^^^^^^^^^^^^^^^
|
140
|
+
|
141
|
+
For DAG-level permissions exclusively, access can be controlled at the level of all DAGs or individual DAG objects.
|
142
|
+
This includes ``DAGs.can_read``, ``DAGs.can_edit``, ``DAGs.can_delete``, ``DAG Runs.can_read``, ``DAG Runs.can_create``, ``DAG Runs.can_delete``, and ``DAG Runs.menu_access``.
|
143
|
+
When these permissions are listed, access is granted to users who either have the listed permission or the same permission for the specific DAG being acted upon.
|
144
|
+
For individual DAGs, the resource name is ``DAG:`` + the DAG ID, or for the DAG Runs resource the resource name is ``DAG Run:``.
|
145
|
+
|
146
|
+
For example, if a user is trying to view DAG information for the ``example_dag_id``, and the endpoint requires ``DAGs.can_read`` access, access will be granted if the user has either ``DAGs.can_read`` or ``DAG:example_dag_id.can_read`` access.
|
147
|
+
|
148
|
+
================================================================================== ====== ================================================================= ============
|
149
|
+
Stable API Permissions
|
150
|
+
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
151
|
+
Endpoint Method Permissions Minimum Role
|
152
|
+
================================================================================== ====== ================================================================= ============
|
153
|
+
/config GET Configurations.can_read Op
|
154
|
+
/connections GET Connections.can_read Op
|
155
|
+
/connections POST Connections.can_create Op
|
156
|
+
/connections/{connection_id} DELETE Connections.can_delete Op
|
157
|
+
/connections/{connection_id} PATCH Connections.can_edit Op
|
158
|
+
/connections/{connection_id} GET Connections.can_read Op
|
159
|
+
/dagSources/{file_token} GET DAG Code.can_read Viewer
|
160
|
+
/dags GET DAGs.can_read Viewer
|
161
|
+
/dags/{dag_id} GET DAGs.can_read Viewer
|
162
|
+
/dags/{dag_id} PATCH DAGs.can_edit User
|
163
|
+
/dags/{dag_id}/clearTaskInstances PUT DAGs.can_edit, DAG Runs.can_edit, Task Instances.can_edit User
|
164
|
+
/dags/{dag_id}/details GET DAGs.can_read Viewer
|
165
|
+
/dags/{dag_id}/tasks GET DAGs.can_read, Task Instances.can_read Viewer
|
166
|
+
/dags/{dag_id}/tasks/{task_id} GET DAGs.can_read, Task Instances.can_read Viewer
|
167
|
+
/dags/{dag_id}/dagRuns GET DAGs.can_read, DAG Runs.can_read Viewer
|
168
|
+
/dags/{dag_id}/dagRuns POST DAGs.can_edit, DAG Runs.can_create User
|
169
|
+
/dags/{dag_id}/dagRuns/{dag_run_id} DELETE DAGs.can_edit, DAG Runs.can_delete User
|
170
|
+
/dags/{dag_id}/dagRuns/{dag_run_id} GET DAGs.can_read, DAG Runs.can_read Viewer
|
171
|
+
/dags/~/dagRuns/list POST DAGs.can_edit, DAG Runs.can_read User
|
172
|
+
/assets GET Assets.can_read Viewer
|
173
|
+
/assets/{uri} GET Assets.can_read Viewer
|
174
|
+
/assets/events GET Assets.can_read Viewer
|
175
|
+
/eventLogs GET Audit Logs.can_read Viewer
|
176
|
+
/eventLogs/{event_log_id} GET Audit Logs.can_read Viewer
|
177
|
+
/importErrors GET ImportError.can_read Viewer
|
178
|
+
/importErrors/{import_error_id} GET ImportError.can_read Viewer
|
179
|
+
/health GET None Public
|
180
|
+
/version GET None Public
|
181
|
+
/pools GET Pools.can_read Op
|
182
|
+
/pools POST Pools.can_create Op
|
183
|
+
/pools/{pool_name} DELETE Pools.can_delete Op
|
184
|
+
/pools/{pool_name} GET Pools.can_read Op
|
185
|
+
/pools/{pool_name} PATCH Pools.can_edit Op
|
186
|
+
/providers GET Providers.can_read Op
|
187
|
+
/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances GET DAGs.can_read, DAG Runs.can_read, Task Instances.can_read Viewer
|
188
|
+
/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id} GET DAGs.can_read, DAG Runs.can_read, Task Instances.can_read Viewer
|
189
|
+
/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/links GET DAGs.can_read, DAG Runs.can_read, Task Instances.can_read Viewer
|
190
|
+
/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/logs/{task_try_number} GET DAGs.can_read, DAG Runs.can_read, Task Instances.can_read Viewer
|
191
|
+
/dags/~/dagRuns/~/taskInstances/list POST DAGs.can_edit, DAG Runs.can_read, Task Instances.can_read User
|
192
|
+
/variables GET Variables.can_read Op
|
193
|
+
/variables POST Variables.can_create Op
|
194
|
+
/variables/{variable_key} DELETE Variables.can_delete Op
|
195
|
+
/variables/{variable_key} GET Variables.can_read Op
|
196
|
+
/variables/{variable_key} PATCH Variables.can_edit Op
|
197
|
+
/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/xcomEntries GET DAGs.can_read, DAG Runs.can_read, Viewer
|
198
|
+
Task Instances.can_read, XComs.can_read
|
199
|
+
/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/xcomEntries/{xcom_key} GET DAGs.can_read, DAG Runs.can_read, Viewer
|
200
|
+
Task Instances.can_read, XComs.can_read
|
201
|
+
/users GET Users.can_read Admin
|
202
|
+
/users POST Users.can_create Admin
|
203
|
+
/users/{username} GET Users.can_read Admin
|
204
|
+
/users/{username} PATCH Users.can_edit Admin
|
205
|
+
/users/{username} DELETE Users.can_delete Admin
|
206
|
+
/roles GET Roles.can_read Admin
|
207
|
+
/roles POST Roles.can_create Admin
|
208
|
+
/roles/{role_name} GET Roles.can_read Admin
|
209
|
+
/roles/{role_name} PATCH Roles.can_edit Admin
|
210
|
+
/roles/{role_name} DELETE Roles.can_delete Admin
|
211
|
+
/permissions GET Permission Views.can_read Admin
|
212
|
+
================================================================================== ====== ================================================================= ============
|
213
|
+
|
214
|
+
|
215
|
+
====================================== ======================================================================= ============
|
216
|
+
Website Permissions
|
217
|
+
-------------------------------------- ------------------------------------------------------------------------------------
|
218
|
+
Action Permissions Minimum Role
|
219
|
+
====================================== ======================================================================= ============
|
220
|
+
Access homepage Website.can_read Viewer
|
221
|
+
Show Browse menu Browse.menu_access Viewer
|
222
|
+
Show DAGs menu DAGs.menu_access Viewer
|
223
|
+
Get DAG stats DAGs.can_read, DAG Runs.can_read Viewer
|
224
|
+
Show Task Instances menu Task Instances.menu_access Viewer
|
225
|
+
Get Task stats DAGs.can_read, DAG Runs.can_read, Task Instances.can_read Viewer
|
226
|
+
Get last DAG runs DAGs.can_read, DAG Runs.can_read Viewer
|
227
|
+
Get DAG code DAGs.can_read, DAG Code.can_read Viewer
|
228
|
+
Get DAG details DAGs.can_read, DAG Runs.can_read Viewer
|
229
|
+
Show DAG Dependencies menu DAG Dependencies.menu_access Viewer
|
230
|
+
Get DAG Dependencies DAG Dependencies.can_read Viewer
|
231
|
+
Get rendered DAG DAGs.can_read, Task Instances.can_read Viewer
|
232
|
+
Get Logs with metadata DAGs.can_read, Task Instances.can_read, Task Logs.can_read Viewer
|
233
|
+
Get Log DAGs.can_read, Task Instances.can_read, Task Logs.can_read Viewer
|
234
|
+
Redirect to external Log DAGs.can_read, Task Instances.can_read, Task Logs.can_read Viewer
|
235
|
+
Get Task DAGs.can_read, Task Instances.can_read Viewer
|
236
|
+
Show XCom menu XComs.menu_access Op
|
237
|
+
Get XCom DAGs.can_read, Task Instances.can_read, XComs.can_read Viewer
|
238
|
+
Create XCom XComs.can_create Op
|
239
|
+
Delete XCom XComs.can_delete Op
|
240
|
+
Triggers Task Instance DAGs.can_edit, Task Instances.can_create User
|
241
|
+
Delete DAG DAGs.can_delete User
|
242
|
+
Show DAG Runs menu DAG Runs.menu_access Viewer
|
243
|
+
Trigger DAG run DAGs.can_edit, DAG Runs.can_create User
|
244
|
+
Clear DAG DAGs.can_edit, Task Instances.can_delete User
|
245
|
+
Clear DAG Run DAGs.can_edit, Task Instances.can_delete User
|
246
|
+
Mark DAG as blocked DAGS.can_edit, DAG Runs.can_read User
|
247
|
+
Mark DAG Run as failed DAGS.can_edit, DAG Runs.can_edit User
|
248
|
+
Mark DAG Run as success DAGS.can_edit, DAG Runs.can_edit User
|
249
|
+
Mark Task as failed DAGs.can_edit, Task Instances.can_edit User
|
250
|
+
Mark Task as success DAGs.can_edit, Task Instances.can_edit User
|
251
|
+
Get DAG as tree DAGs.can_read, Task Instances.can_read, Viewer
|
252
|
+
Task Logs.can_read
|
253
|
+
Get DAG as graph DAGs.can_read, Task Instances.can_read, Viewer
|
254
|
+
Task Logs.can_read
|
255
|
+
Get DAG as duration graph DAGs.can_read, Task Instances.can_read Viewer
|
256
|
+
Show all tries DAGs.can_read, Task Instances.can_read Viewer
|
257
|
+
Show landing times DAGs.can_read, Task Instances.can_read Viewer
|
258
|
+
Toggle DAG paused status DAGs.can_edit User
|
259
|
+
Show Gantt Chart DAGs.can_read, Task Instances.can_read Viewer
|
260
|
+
Get external links DAGs.can_read, Task Instances.can_read Viewer
|
261
|
+
Show Task Instances DAGs.can_read, Task Instances.can_read Viewer
|
262
|
+
Show Configurations menu Configurations.menu_access Op
|
263
|
+
Show Configs Configurations.can_read Viewer
|
264
|
+
Delete multiple records DAGs.can_edit User
|
265
|
+
Set Task Instance as running DAGs.can_edit User
|
266
|
+
Set Task Instance as failed DAGs.can_edit User
|
267
|
+
Set Task Instance as success DAGs.can_edit User
|
268
|
+
Set Task Instance as up_for_retry DAGs.can_edit User
|
269
|
+
Autocomplete DAGs.can_read Viewer
|
270
|
+
Show Asset menu Assets.menu_access Viewer
|
271
|
+
Show Assets Assets.can_read Viewer
|
272
|
+
Show Docs menu Docs.menu_access Viewer
|
273
|
+
Show Documentation menu Documentation.menu_access Viewer
|
274
|
+
Show Jobs menu Jobs.menu_access Viewer
|
275
|
+
Show Audit Log Audit Logs.menu_access Viewer
|
276
|
+
Reset Password My Password.can_read, My Password.can_edit Viewer
|
277
|
+
Show Permissions menu Permission Views.menu_access Admin
|
278
|
+
List Permissions Permission Views.can_read Admin
|
279
|
+
Get My Profile My Profile.can_read Viewer
|
280
|
+
Update My Profile My Profile.can_edit Viewer
|
281
|
+
List Logs Audit Logs.can_read Viewer
|
282
|
+
List Jobs Jobs.can_read Viewer
|
283
|
+
Show SLA Misses menu SLA Misses.menu_access Viewer
|
284
|
+
List SLA Misses SLA Misses.can_read Viewer
|
285
|
+
List Plugins Plugins.can_read Viewer
|
286
|
+
Show Plugins menu Plugins.menu_access Viewer
|
287
|
+
Show Providers menu Providers.menu_access Op
|
288
|
+
List Providers Providers.can_read Op
|
289
|
+
List Task Reschedules Task Reschedules.can_read Admin
|
290
|
+
Show Triggers menu Triggers.menu_access Admin
|
291
|
+
List Triggers Triggers.can_read Admin
|
292
|
+
Show Admin menu Admin.menu_access Viewer
|
293
|
+
Show Connections menu Connections.menu_access Op
|
294
|
+
Show Pools menu Pools.menu_access Viewer
|
295
|
+
Show Variables menu Variables.menu_access Op
|
296
|
+
Show Roles menu Roles.menu_access Admin
|
297
|
+
List Roles Roles.can_read Admin
|
298
|
+
Create Roles Roles.can_create Admin
|
299
|
+
Update Roles Roles.can_edit Admin
|
300
|
+
Delete Roles Roles.can_delete Admin
|
301
|
+
Show Users menu Users.menu_access Admin
|
302
|
+
Create Users Users.can_create Admin
|
303
|
+
Update Users Users.can_edit Admin
|
304
|
+
Delete Users Users.can_delete Admin
|
305
|
+
Reset user Passwords Passwords.can_edit, Passwords.can_read Admin
|
306
|
+
====================================== ======================================================================= ============
|
307
|
+
|
308
|
+
These DAG-level controls can be set directly through the UI / CLI, or encoded in the dags themselves through the access_control arg.
|
309
|
+
|
310
|
+
Order of precedence for DAG-level permissions
|
311
|
+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
312
|
+
|
313
|
+
Since DAG-level access control can be configured in multiple places, conflicts are inevitable and a clear resolution strategy is required. As a result,
|
314
|
+
Airflow considers the ``access_control`` argument supplied on a DAG itself to be completely authoritative if present, which has a few effects:
|
315
|
+
|
316
|
+
Setting ``access_control`` on a DAG will overwrite any previously existing DAG-level permissions if it is any value other than ``None``:
|
317
|
+
|
318
|
+
.. code-block:: python
|
319
|
+
|
320
|
+
DAG(
|
321
|
+
dag_id="example_fine_grained_access",
|
322
|
+
start_date=pendulum.datetime(2021, 1, 1, tz="UTC"),
|
323
|
+
access_control={
|
324
|
+
"Viewer": {"can_edit", "can_read", "can_delete"},
|
325
|
+
},
|
326
|
+
)
|
327
|
+
|
328
|
+
It's also possible to add DAG Runs resource permissions in a similar way, but explicit adding the resource name to identify which resource the permissions are for:
|
329
|
+
|
330
|
+
.. code-block:: python
|
331
|
+
|
332
|
+
DAG(
|
333
|
+
dag_id="example_fine_grained_access",
|
334
|
+
start_date=pendulum.datetime(2021, 1, 1, tz="UTC"),
|
335
|
+
access_control={
|
336
|
+
"Viewer": {"DAGs": {"can_edit", "can_read", "can_delete"}, "DAG Runs": {"can_create"}},
|
337
|
+
},
|
338
|
+
)
|
339
|
+
|
340
|
+
This also means that setting ``access_control={}`` will wipe any existing DAG-level permissions for a given DAG from the DB:
|
341
|
+
|
342
|
+
.. code-block:: python
|
343
|
+
|
344
|
+
DAG(
|
345
|
+
dag_id="example_no_fine_grained_access",
|
346
|
+
start_date=pendulum.datetime(2021, 1, 1, tz="UTC"),
|
347
|
+
access_control={},
|
348
|
+
)
|
349
|
+
|
350
|
+
Conversely, removing the access_control block from a DAG altogether (or setting it to ``None``) won't make any changes and can leave dangling permissions.
|
351
|
+
|
352
|
+
.. code-block:: python
|
353
|
+
|
354
|
+
DAG(
|
355
|
+
dag_id="example_indifferent_to_fine_grained_access",
|
356
|
+
start_date=pendulum.datetime(2021, 1, 1, tz="UTC"),
|
357
|
+
)
|
358
|
+
|
359
|
+
In the case that there is no ``access_control`` defined on the DAG itself, Airflow will defer to existing permissions defined in the DB, which
|
360
|
+
may have been set through the UI, CLI or by previous access_control args on the DAG in question.
|
361
|
+
|
362
|
+
In all cases, system-wide roles such as ``Can edit on DAG`` take precedence over dag-level access controls, such that they can be considered ``Can edit on DAG: *``
|