【问题标题】:Airflow - DAG level access controlAirflow - DAG 级别的访问控制
【发布时间】:2021-07-06 13:30:28
【问题描述】:

我正在努力在 Airflow 2.1.0 中设置 DAG 级别的访问控制。目的是让用户查看和控制单个 DAG 及其运行,但仅此而已。尝试关注 docs on access control 并且几乎没有记录 access_control parameter of DAG 我正在设置一个最小场景:

  • 角色my_rolecan read on Website
  • 用户my_user,角色my_role
  • DAG my_dagDAG(..., access_control: {'my_role': ['can_read', 'can_edit']})

这部分有效。我可以以my_user 登录,在DAG 列表中只看到my_dag。但是,我无法查看 DAG 单击它、触发它或查看它的运行。我尝试添加额外的全局权限,例如read on DAG Runs / Task Instances,但没有帮助。唯一有效的是能够触发具有全局 create on DAG Runs 权限的 DAG(我不确定我现在是否能够通过发出正确的请求来触发 any DAG,没有检查)。

那么这有可能实现吗?我可能错过了什么吗?

【问题讨论】:

  • 嘿 Kombajn,你最终找到了在 DAG 级别使用 access_control 参数的方法吗?
  • 我发现的最佳方法是使用 UI,复制 Op 或 User 角色(取决于您想要的整体权限级别),然后在复制的角色中,删除所有 @987654334 @烫发。分配给每个人。然后在特定 DAG 上创建具有读取/编辑权限的单独角色,例如,您可能具有可以读取/编辑每个非敏感 DAG 的“通用”角色,第一组敏感 DAG 的“敏感1”角色,“敏感2”另一个组的角色等。您可以为每个用户分配多个角色,因此有些只有“一般”,有些还有“敏感1”,等等。
  • @alete - 是的,我现在回到这个问题上,并按照下面 aleksanderacai 的回答工作(在列出 dag 运行/任务实例方面存在一些问题)。

标签: authorization airflow


【解决方案1】:

您缺少以下权限 can read on DAG Runs, can read on Task Instances, can edit on DAG Runs, can read on DAG Code, can read on Task Logs 添加到 my_role

另请注意,DAG 中的 access_control 属性已过时,不再需要,因为您可以在角色级别设置该属性并获得权限 can xxx on DAG:dag_id 其中 xxx 是读取或编辑,dag_id 是您在 DAG 定义中设置的 ID

【讨论】:

  • 我不明白您为什么说 DAG 中的 access_control 属性已过时或不需要。它位于最新的文档中,并且是从代码中设置每个 dag 权限的唯一合理方法(并且具有高度动态性)。我不想在 UI 上逐个添加权限,我不想编写一段代码自动从源设置适当的访问控制。
  • 完全同意@alete 对access_control 的评论,但除此之外,我还添加了您提到的权限,它几乎 工作正常。 This reference 有助于了解各种操作所需的权限。用户只能查看和触发他通过 access_control 明确分配的 DAG。唯一的问题是“列出 DAG 运行”和“列出任务实例”没有显示任何记录——我想这可能是一个错误。
猜你喜欢
  • 2020-07-14
  • 2021-09-27
  • 1970-01-01
  • 1970-01-01
  • 2018-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多