airflow.providers.fab.auth_manager.security_manager.override

模块内容

FabAirflowSecurityManagerOverride

此安全管理器覆盖默认的 AirflowSecurityManager 安全管理器。

属性

log

MAX_NUM_DATABASE_USER_SESSIONS

airflow.providers.fab.auth_manager.security_manager.override.log[source]
airflow.providers.fab.auth_manager.security_manager.override.MAX_NUM_DATABASE_USER_SESSIONS = 50000[source]
class airflow.providers.fab.auth_manager.security_manager.override.FabAirflowSecurityManagerOverride(appbuilder)[source]

基类:airflow.www.security_manager.AirflowSecurityManagerV2

此安全管理器覆盖默认的 AirflowSecurityManager 安全管理器。

仅当使用认证管理器 FabAuthManager 时才使用此安全管理器。它定义了 FabAuthManager 工作所需的安全管理器中的所有内容。任何特定于 AirflowSecurityManager 的操作都应在此处而不是 AirflowSecurityManager 中定义。

参数

appbuilder – appbuilder。

property get_session[source]
property auth_type[source]

获取身份验证类型。

property is_auth_limited: bool[source]

身份验证是否受速率限制。

property auth_rate_limit: str[source]

获取身份验证速率限制。

property auth_role_public[source]

获取公共角色。

property oauth_providers[source]

Oauth 提供程序。

property auth_ldap_tls_cacertdir[source]

LDAP TLS CA 证书目录。

property auth_ldap_tls_cacertfile[source]

LDAP TLS CA 证书文件。

property auth_ldap_tls_certfile[source]

LDAP TLS 证书文件。

property auth_ldap_tls_keyfile[source]

LDAP TLS 密钥文件。

property auth_ldap_allow_self_signed[source]

LDAP 允许自签名。

property auth_ldap_tls_demand[source]

LDAP TLS 要求。

property auth_ldap_server[source]

获取 LDAP 服务器对象。

property auth_ldap_use_tls[source]

LDAP 是否应使用 TLS。

property auth_ldap_bind_user[source]

LDAP 绑定用户。

property auth_ldap_bind_password[source]

LDAP 绑定密码。

LDAP 搜索对象。

属性 auth_ldap_search_filter[源代码]

LDAP 搜索过滤器。

属性 auth_ldap_uid_field[源代码]

LDAP UID 字段。

属性 auth_ldap_firstname_field[源代码]

LDAP 名 字段。

属性 auth_ldap_lastname_field[源代码]

LDAP 姓 字段。

属性 auth_ldap_email_field[源代码]

LDAP 电子邮件字段。

属性 auth_ldap_append_domain[源代码]

LDAP 追加域。

属性 auth_ldap_username_format[源代码]

LDAP 用户名格式。

属性 auth_ldap_group_field: str[源代码]

LDAP 群组字段。

属性 auth_roles_mapping: dict[str, list[str]][源代码]

身份验证角色的映射。

属性 auth_user_registration_role_jmespath: str[源代码]

用于用户注册的 JMESPATH 角色。

属性 auth_remote_user_env_var: str[源代码]
属性 api_login_allow_multiple_providers[源代码]
属性 auth_username_ci[源代码]

获取 CI 的身份验证用户名。

属性 auth_ldap_bind_first[源代码]

LDAP 首先绑定。

属性 openid_providers[源代码]

Openid 提供程序。

属性 auth_type_provider_name[源代码]
属性 auth_user_registration[源代码]

是否允许用户自助注册。

属性 auth_user_registration_role[源代码]

默认用户自助注册角色。

属性 auth_roles_sync_at_login: bool[源代码]

是否应在登录时同步角色。

属性 auth_role_admin[源代码]

获取管理员角色。

属性 oauth_whitelists[源代码]
属性 builtin_roles[源代码]

获取内置角色。

auth_view[源代码]

身份验证视图的对象实例

registeruser_view[源代码]

注册用户视图的对象实例

user_view[源代码]

用户视图的对象实例

user_model[源代码]
role_model[源代码]
action_model[源代码]
resource_model[源代码]
permission_model[源代码]

视图

authdbview[源代码]

如果您想要自定义的身份验证数据库视图,请覆盖此项

authldapview[源代码]

如果您想要自定义的身份验证 LDAP 视图,请覆盖此项

authoidview[源代码]

如果您想要自定义的身份验证 OID 视图,请覆盖此项

authoauthview[源代码]

如果您想要自定义的身份验证 OAuth 视图,请覆盖此项

authremoteuserview[源代码]

如果您想要自定义的身份验证 REMOTE_USER 视图,请覆盖此项

registeruserdbview[源代码]

如果您想要自定义的注册用户数据库视图,请覆盖此项

registeruseroidview[源代码]

如果您想要自定义的注册用户 OpenID 视图,请覆盖此项

registeruseroauthview[源代码]

如果您想要自定义的注册用户 OAuth 视图,请覆盖此项

actionmodelview[源代码]
permissionmodelview[源代码]
rolemodelview[源代码]
registeruser_model[源代码]
registerusermodelview[源代码]
resourcemodelview[源代码]
userdbmodelview[源代码]
resetmypasswordview[源代码]
resetpasswordview[源代码]
userinfoeditview[源代码]
userldapmodelview[源代码]
useroauthmodelview[源代码]
userremoteusermodelview[源代码]
useroidmodelview[源代码]
userstatschartview[源代码]
jwt_manager[源代码]

Flask-JWT-Extended

oid[源代码]

Flask-OpenID OpenID

oauth[源代码]
oauth_remotes: dict[str, Any][源代码]

已初始化的 (remote_app) 提供程序字典 {‘provider_name’, OBJ }

oauth_user_info[源代码]
oauth_allow_list: dict[str, list][source]

OAuth 邮箱允许列表

DAG_RESOURCES[source]
VIEWER_PERMISSIONS = [(), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (),...[source]
USER_PERMISSIONS = [(), (), (), (), (), (), (), (), ()][source]
OP_PERMISSIONS = [(), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()][source]
ADMIN_PERMISSIONS = [(), (), (), (), (), (), (), (), (), ()][source]
ROLE_CONFIGS: list[dict[str, Any]][source]
RESOURCE_DETAILS_MAP[source]
DAG_ACTIONS[source]
register_views()[source]

注册 FAB 认证管理器相关视图。

create_login_manager()[source]

创建登录管理器。

create_jwt_manager()[source]

创建 JWT 管理器。

reset_password(userid, password)[source]

为身份验证数据库更改/重置用户的密码。

密码将被哈希并保存。

参数
  • userid (int) – 要重置密码的用户 ID

  • password (str) – 要重置的明文密码,并以哈希形式保存到数据库中

reset_user_sessions(user)[source]
load_user_jwt(_jwt_header, jwt_data)[source]
create_builtin_roles()[source]

返回 FAB 内置角色。

create_admin_standalone()[source]

创建一个具有随机密码的管理员用户,以便用户可以访问 Airflow。

create_db()[source]

创建数据库。

如果管理员和公共角色不存在,则创建它们。

get_readable_dags(user)[source]

获取已认证用户可读取的 DAG。

get_editable_dags(user)[source]

获取已认证用户可编辑的 DAG。

get_accessible_dags(user_actions, user, session=NEW_SESSION)[source]
get_accessible_dag_ids(user, user_actions=None, session=NEW_SESSION)[source]
static get_readable_dag_ids(user=None)[source]

获取已认证用户可读取的 DAG ID。

static get_editable_dag_ids(user=None)[source]

获取已认证用户可编辑的 DAG ID。

can_access_some_dags(action, dag_id=None)[source]

检查用户是否具有对某些 DAG 的读取或写入权限。

get_all_permissions()[source]

返回所有权限,形式为包含操作名称和资源名称的元组的集合。

create_dag_specific_permissions()[source]

为所有 DAG 添加权限。

为所有 DAG 创建 ‘can_read’、‘can_edit’ 和 ‘can_delete’ 权限,以及其中提供的任何 access_control 权限。

这将遍历所有 DAG,速度可能会较慢。如果只需要同步单个 DAG,请参阅 sync_perm_for_dag

prefixed_dag_id(dag_id)[source]

返回 DAG ID 的权限名称。

is_dag_resource(resource_name)[source]

确定资源属于 DAG 还是所有 DAG。

sync_perm_for_dag(dag_id, access_control=None)[source]

同步给定 DAG ID 的权限。

DAG ID 肯定存在于我们的 DAG 包中,因为只有 “刷新” 按钮或 DagBag 才会调用此函数。

参数
  • dag_id (str) – 应更新其权限的 DAG 的 ID

  • access_control (Mapping[str, Mapping[str, Collection[str]] | Collection[str]] | None) – 一个字典,其中每个键是角色名称,每个值可以是:- DAG 资源操作名称的集合(例如,{‘can_read’})- 或一个字典,其中每个键是一个资源名称(‘DAGs’ 或 ‘DAG Runs’),每个值是操作名称的集合(例如,{‘DAG Runs’: {‘can_create’}, ‘DAGs’: {‘can_read’}}

返回

返回类型

None

add_permissions_view(base_action_names, resource_name)[source]

在后端为资源添加操作。

参数
  • base_action_names

    视图中的权限列表(所有公开的方法)

    ’can_add’,’can_edit’ 等…

  • resource_name – 要添加的资源名称

add_permissions_menu(resource_name)[source]

在 permission_resource 上为资源添加 menu_access。

参数

resource_name – 资源名称

security_cleanup(baseviews, menus)[source]

清理数据库中所有未使用的权限。

参数
  • baseviews – BaseViews 类的列表

  • menus – Menu 类

sync_roles()[source]

使用相关权限初始化默认角色和自定义角色。

  1. 使用相关权限初始化默认角色(管理员、查看者、用户、操作员、公共)。

  2. 使用相关权限初始化自定义角色 (dag-user)。

create_perm_vm_for_all_dag()[source]

如果 perm-vm 不存在,则创建它,并将其插入到所有 DAG 的 FAB 安全模型中。

add_homepage_access_to_custom_roles()[source]

将 Website.can_read 权限添加到所有自定义角色。

update_admin_permission()[source]

为管理员添加表中缺少的权限。

管理员应获得所有权限,但 DAG 权限除外,因为管理员已经具有 DAG 权限。将缺少的权限添加到管理员的表中。

clean_perms()[source]

FAB 会留下需要清理的有问题的权限。

permission_exists_in_one_or_more_roles(resource_name, action_name, role_ids)[source]

高效地检查特定权限是否存在于角色 ID 列表中;被 has_access 使用。

参数
  • resource_name (str) – 要检查的角色之一是否存在视图的名称

  • action_name (str) – 要检查的权限名称是否存在

  • role_ids (list[int]) – 角色 ID 列表

返回

布尔值

返回类型

bool

perms_include_action(perms, action_name)[source]
init_role(role_name, perms)[source]

使用操作和相关资源初始化角色。

参数
  • role_name

  • perms

bulk_sync_roles(roles)[source]

同步提供的角色和权限。

sync_resource_permissions(perms=None)[source]

填充基于资源的权限。

update_role(role_id, name)[source]

更新数据库中的角色。

add_role(name)[source]

在数据库中添加角色。

find_role(name)[source]

在数据库中查找角色。

参数

name – 角色名称

get_all_roles()[source]
delete_role(role_name)[source]

删除给定的角色。

参数

role_name (str) – ab_role 表中角色的名称

get_roles_from_keys(role_keys)[source]

从键列表中构造 FAB 角色对象列表。

注意:- 键类似于:“LDAP 组 DN”或“OAUTH 组名称” - 我们使用 AUTH_ROLES_MAPPING 从键映射到 FAB 角色名称

参数

role_keys (list[str]) – FAB 角色键列表

get_public_role()[source]
add_user(username, first_name, last_name, email, role, password='', hashed_password='')[source]

创建一个用户。

load_user(user_id)[source]
get_user_by_id(pk)[source]
count_users()[source]

返回数据库中用户的数量。

add_register_user(username, first_name, last_name, email, password='', hashed_password='')[source]

为用户添加注册请求。

:rtype : RegisterUser

find_user(username=None, email=None)[source]

按用户名或电子邮件查找用户。

find_register_user(registration_hash)[source]
update_user(user)[source]
del_register_user(register_user)[source]

从数据库中删除注册对象。

参数

register_user – 要删除的 RegisterUser 对象

get_all_users()[source]
update_user_auth_stat(user, success=True)[source]

更新用户身份验证统计信息。

这在成功/不成功的身份验证尝试后完成。

参数
  • user – 已识别(但可能未成功通过身份验证)的用户模型

  • success – 默认为 true,如果为 true,则增加 login_count,更新 last_login,并将 fail_login_count 重置为 0;如果为 false,则在用户模型上增加 fail_login_count。

get_action(name)[源代码]

获取现有操作记录。

参数

name (str) – 名称

create_action(name)[源代码]

向后端添加一个操作,模型操作。

参数

name – 操作的名称:‘can_add’、‘can_edit’ 等…

delete_action(name)[源代码]

删除一个权限操作。

参数

name (str) – 要删除的操作的名称(例如 can_read)。

get_resource(name)[源代码]

如果资源存在,则按名称返回资源记录。

参数

name (str) – 资源名称

create_resource(name)[源代码]

创建具有给定名称的资源。

参数

name – 要创建的资源的名称。

get_all_resources()[源代码]

获取所有现有的资源记录。

delete_resource(name)[源代码]

从后端删除资源。

参数

name (str) – 资源的名称

get_permission(action_name, resource_name)[源代码]

如果权限已存在,则获取由给定的操作 -> 资源对创建的权限。

参数
  • action_name (str) – 操作的名称

  • resource_name (str) – 资源的名称

get_resource_permissions(resource)[源代码]

检索与特定资源对象关联的权限对。

参数

resource (airflow.providers.fab.auth_manager.models.Resource) – 表示单个资源的对像。

create_permission(action_name, resource_name)[源代码]

向后端添加对资源的权限。

参数
  • action_name – 要添加的操作的名称:‘can_add’、‘can_edit’ 等…

  • resource_name – 要添加的资源名称

delete_permission(action_name, resource_name)[源代码]

删除链接操作 -> 资源对的权限。

不会删除底层操作或资源。

参数
  • action_name (str) – 现有操作的名称

  • resource_name (str) – 现有资源的名称

add_permission_to_role(role, permission)[源代码]

将现有的权限对添加到角色。

参数
  • role (airflow.providers.fab.auth_manager.models.Role) – 即将获得新权限的角色。

  • permission (airflow.providers.fab.auth_manager.models.Permission | None) – 要添加到角色的权限对。

remove_permission_from_role(role, permission)[源代码]

从角色中删除权限对。

参数
  • role (airflow.providers.fab.auth_manager.models.Role) – 包含权限的用户角色。

  • permission (airflow.providers.fab.auth_manager.models.Permission) – 表示资源 -> 操作对的对象

get_oid_identity_url(provider_name)[源代码]

返回 OIDC 身份提供程序 URL。

static get_user_roles(user=None)[源代码]

获取与用户关联的所有角色。

参数

user – FAB 模型中的 ab_user。

返回

与用户关联的角色列表。

auth_user_ldap(username, password)[源代码]

使用 LDAP 验证用户身份。

注意:这取决于 python-ldap 模块。

参数
  • username – 用户名

  • password – 密码

auth_user_db(username, password)[源代码]

验证用户身份,数据库验证方式。

参数
  • username – 用户名或注册的电子邮件地址

  • password – 密码,将针对数据库中的哈希密码进行测试

oauth_user_info_getter(func)[source]

获取所有提供者的 OAuth 用户信息。

接收提供者和响应,返回一个包含从提供者返回的信息的字典。返回的用户信息字典的键应与用户模型的名称相同。

像这样使用,以下是 GitHub 的示例:

@appbuilder.sm.oauth_user_info_getter
def my_oauth_user_info(sm, provider, response=None):
    if provider == "github":
        me = sm.oauth_remotes[provider].get("user")
        return {"username": me.data.get("login")}
    return {}
get_oauth_user_info(provider, resp)[source]

不同的 OAuth API 获取用户信息的方式不同。

所有提供者获取用户信息的方式都不同。

static oauth_token_getter()[source]

获取身份验证 (OAuth) 令牌。

check_authorization(perms=None, dag_id=None)[source]

检查已登录用户是否具有指定的权限。

set_oauth_session(provider, oauth_response)[source]

使用 OAuth 用户机密设置当前会话。

get_oauth_token_key_name(provider)[source]

返回 OAuth 提供者的 token_key 名称。

如果未配置,则默认为 oauth_token,这是使用 OAUTH_PROVIDERS 和 token_key 键配置的。

get_oauth_token_secret_name(provider)[source]

获取 OAuth 提供者的 token_secret 名称。

如果未配置,则默认为 oauth_secret。这是使用 OAUTH_PROVIDERStoken_secret 配置的。

auth_user_oauth(userinfo)[source]

使用 OAuth 验证用户身份。

Userinfo

包含用户信息的字典(键与用户模型列相同)

auth_user_oid(email)[source]

Openid 用户身份验证。

参数

email – 用于身份验证的用户的电子邮件

auth_user_remote_user(username)[source]

REMOTE_USER 用户身份验证。

参数

username – 用于远程身份验证的用户的用户名

get_user_menu_access(menu_names=None)[source]
static ldap_extract_list(ldap_dict, field_name)[source]
static ldap_extract(ldap_dict, field_name, fallback)[source]
filter_roles_by_perm_with_action(action_name, role_ids)[source]

查找具有权限的角色。

此条目是否有帮助?