security - 使用基于所有者的 LDAP 进行气流身份验证
问题描述
我正在尝试使用 RBAC 配置我的 Airflow(2.10 版)LDAP 身份验证。UI 访问受到 AD 组(Python Developer、ML Developer 等的多个组)的限制。属于特定组的成员应该能够查看其他组成员创建的 DAG,而其他组成员则不能。
能够通过 AD 组向用户提供访问权限,但所有用户都能够看到创建的所有 DAG。我想根据定义的所有者集限制此访问,(这可以通过关闭 LDAP 并直接在 Airflow 中创建用户来实现,但我希望它与 AD 组一起使用。)
添加fiter_by_owner=True
在airflow.cfg 文件中,似乎没有任何影响。
对此有任何想法。
EDIT1:从 FAB,我们可以配置角色,然后将其映射到 AD 组,如下所示:
FAB_ROLES = {
"ReadOnly_Altered": [
[".*", "can_list"],
[".*", "can_show"],
[".*", "menu_access"],
[".*", "can_get"],
[".*", "can_info"]
]
}
FAB_ROLES_MAPPING = {
1: "ReadOnly_Altered"
}
为了使用它,我假设我们需要从应用程序端创建类似于 , 的can_list
端点can_show
。
在 Airflow 的情况下,我无法找到基于所有者(或基于标签)提供访问权限的端点。我相信如果我们拥有它们,我可以将其映射到角色,然后相应地映射到 AD 组。
解决方案
使用较新版本的 Airlfow,您可以将 LDAP 组映射到 Airflow 组。
Owner 是一个旧的且当前已失效的功能,已被弃用。
您可以查看一些有关 FAB 配置的示例(Flask Application Builder 实现了所有身份验证功能):
https://flask-appbuilder.readthedocs.io/en/latest/security.html
请参阅开头的部分:
You can give FlaskAppBuilder roles based on LDAP roles (note, this requires AUTH_LDAP_SEARCH to be set):
从文档:
# a mapping from LDAP DN to a list of FAB roles
AUTH_ROLES_MAPPING = {
"cn=fab_users,ou=groups,dc=example,dc=com": ["User"],
"cn=fab_admins,ou=groups,dc=example,dc=com": ["Admin"],
}
# the LDAP user attribute which has their role DNs
AUTH_LDAP_GROUP_FIELD = "memberOf"
# if we should replace ALL the user's roles each login, or only on registration
AUTH_ROLES_SYNC_AT_LOGIN = True
# force users to re-auth after 30min of inactivity (to keep roles in sync)
PERMANENT_SESSION_LIFETIME = 1800
请参阅此处了解角色(包括自定义角色)https://airflow.apache.org/docs/apache-airflow/stable/security/access-control.html
推荐阅读
- c - 用户输入未保存到文件
- terraform - 是否有用于访问 aws 路由表中所有路由的 terraform 数据源?
- swift - 如何通过 Toggle 在 @EnvironmentObject var 中切换 var Bool
- frama-c - 在 FRAMA-C 中验证矩阵转置函数
- excel - Excel:获取前 3 个值和名称
- algorithm - 如何在 |V| 中找到图的 MST 给定生成树加上另一条边的时间
- c# - 如何下载电子邮件附件 asp.net 网络表单?
- php - Laravel 模型创建覆盖
- java - 是什么影响了 JVM 内存分配超出 -Xmx?
- python - 如何改进 textacy.extract.semistructured_statements() 结果