章节摘要:时间表不够用时,用 Dataset、传感器、可延迟算子把“数据就绪”写进调度。安全则把认证、RBAC、密钥从默认内网信任里拉出来。Provider 与插件是对接外部世界的正规入口,也是供应链风险入口。本章让你在会写 DAG 之后,学会等待、拒绝和扩展。
阅读完本章,你应当能够:
金句:高级调度是多写契约,不是多写 sleep。安全是少给钥匙,不是多加防火墙口号。
Dataset、传感器、延迟、分支与事件触发。
认证、RBAC、连接密码、执行侧任意代码风险。
正规扩展面、版本与供应链。
先让调度听懂数据,再决定谁能改图、谁能看密码,最后才加载额外算子。
5.1 听懂就绪 ──► 5.2 谁被允许 ──► 5.3 允许装什么插件
5.1 先给一条已有的跨 DAG 等待做减法:能不能改成一个数据集、一次整窗通知,而不是两个 cron 对钟。长传感器改 deferrable 之前,先量 poke 占用了多少槽位。5.2 安全从关掉公开角色开始,然后拆“读连接”和“读密码”,最后才谈 LDAP 花活。记住发布 DAG 等于在 Worker 上拥有代码执行权。5.3 新系统对接先查允许清单里的 Provider,禁止任务运行时安装包,禁止 sys.path 临时目录。
类比换成门禁与插座:Dataset 是房间门口的到位灯,RBAC 是门禁卡权限,Provider 是墙上的标准插座。私拉电线(运行时 pip、明文密码、公开角色)会让整栋楼的空开跳闸。
原文对未来路线(意图即服务、自然语言写 DAG)不做展开——那是演化史赛道。我们只取已经能写进 DAG 的部分:Dataset、可延迟、REST 触发、FAB 认证类型、Provider 包。
用每分钟 DAG 扫描对象存储冒充事件驱动:解析与写库成本会变成心跳盘。用跳过把失败变绿:审计看到的是伪证。用公开角色图省事:能打开 UI 的人都接近管理员。让作者在 UI 贴生产代码:发布权绕过 Git 与测试。运行时 pip install:供应链与可复现一起死。五条误判分别对应 5.1 到 5.3。高级二字在这里的意思是契约更细,不是功能更炫。
读本章时带着已上线的一条跨 DAG 链,真的改一次主触发或真的拆一次读密码权限,比记 Dataset 名词有用。安全配置必须分环境,开发大开的认证不可随镜像漂进生产。
第 6 章的密钥扫描与允许清单,是本章安全与 Provider 的自动化形态。没有清单,测试不知道该 import 哪些类。没有密钥扫描,RBAC 再细也会被 DAG 里的明文笑死。数据就绪调度的“应到未到”,要接到 4.3 的告警字段里,否则静默成功。本章不是彩蛋章,是让第 2 章的图在多人多系统下仍然可拒绝、可等待、可扩展。拒绝比等待更优先:先关上公开角色,再谈 Dataset 的优雅。优雅建立在拒绝之上。
公开角色、明文密码、运行时装包,三件在本章必须被拒绝。拒绝成功之前,Dataset 与 deferrable 都是装饰。装饰不能通过安全评审。评审先问谁能发 DAG,再问灯亮了没有。灯是数据就绪。发是特权。特权通道没有测试闸门,灯再亮也是在越权的集群里亮。越权的集群里,所有高级调度都可能被未授权触发。触发权比优雅更底层。底层先做。做完再谈灯。灯可以下周亮。门必须这周关。关门是 5.2 的活。5.1 和 5.3 在门内才有意义。
门没关,灯不要亮。门是公开角色与发布权。灯是 Dataset。灯亮在未关门的集群里,是给未知令牌准备的触发器。触发器很高级。高级在门内才是能力。门外是风险。风险用 5.2 先收。收完再 5.1。5.3 的清单同样在门内:门外装包是供应链洞。洞会在紧急窗口放大。放大前先关门。关门本周做。做完再谈灯。灯下周亮。亮之前写主触发声明。声明保证可解释。可解释才能监视应到未到。监视接到 4.3。4.3 在门内才有 owner 频道。频道在未关门时人人可触发,告警失去意义。意义从关门开始。开始在 5.2。5.2 是本章真正的第一节,尽管目录写在第二。目录服从教学。教学可以先讲灯。生产必须先关门。关门结束本章的优先级。优先级结束装饰。装饰结束于拒绝。拒绝结束公开角色。公开角色结束,才允许 Provider。Provider 结束于两侧同清单。同清单结束随机缺包。缺包结束全局导入失败。失败结束于清单。清单在门内。门内结束本章。本章结束于可拒绝。可拒绝才可扩展。扩展结束。