DataHub Data Access Workflows:用集中化审批工作流统一管理数据访问请求

发布时间:2026/11/5 8:53:15

DataHub Data Access Workflows:用集中化审批工作流统一管理数据访问请求 DataHub Data Access Workflows用集中化审批工作流统一管理数据访问请求【免费下载链接】datahubThe Context Platform for your Data and AI Stack项目地址: https://gitcode.com/GitHub_Trending/da/datahub本文围绕 DataHub Cloud 的Data Access Workflows访问工作流功能展开它允许组织为所有数据访问请求建立集中化的审批流程通过自定义表单字段、入口点和多步审批链在合规可控的前提下简化申请与审批体验。读完本文你将掌握如何通过upsertActionWorkflowGraphQL mutation 以编程方式创建工作流、如何理解字段类型与动态审批人路由的完整配置、如何在 Task Center 中完成审批以及如何借助 DataHub Actions 框架监听工作流事件实现自动化的访问开通。说明Access Workflows 目前处于Private Beta阶段需要联系 DataHub 团队为你的实例开启该功能。核心能力概览Data Access Workflows 提供三类核心能力创建审批工作流Create Approval Workflows设计带自定义字段、入口点和多步审批流程的访问申请工作流。你可以限定用户可针对哪些类型的资产发起申请如数据集、仪表盘并为审批人配置路由规则。全员知情Keep Everyone in the Loop当有待审批请求或你提交的请求被批准/驳回时通过邮件或 Slack 接收通知所有打开状态的请求可以直接在 Task Center 中跟踪。实时、事件驱动集成Realtime, Event-Oriented Integration通过 DataHub Actions Framework 监听访问请求被创建/被审批时发出的事件实现实时自动开通访问权限。典型使用场景集中化访问申请针对表和仪表盘或更高层级的分组如 Domain、Data Product、Database发起访问申请——全部通过统一界面完成审计日志在一处查看全部访问请求的历史以便随时间审计授权记录、维持合规档案动态审批路由基于资产所有权或组织结构自动把请求路由给合适的审批人数据访问治理对敏感数据集实施受控访问配合合适的审批链和组织策略。典型角色角色职责Data Platform Administrators配置并管理工作流定义Data Stewards审批自己域Domain内的访问请求Data Consumers提交自己所需数据集的访问申请Integration Engineers基于工作流事件搭建自动化开通流程前置条件与权限要求前置条件Access Workflows 功能需由 DataHub 团队开启Private Beta具备 GraphQL API 访问权限的 DataHub 实例创建 workflow definition 所需的管理权限已配置的通知渠道Email/Slack用于工作流通知——此项默认启用。所需权限创建工作流Platform Admin或拥有Manage Workflows权限的用户提交请求任何已认证用户受工作流可见性规则约束审批请求被工作流定义指定为 reviewer 的用户配置通知各用户可自行配置自己的通知偏好。创建一个 Access Workflow每个 Access Workflow 可配置三个核心部分Form Fields表单字段定义访问申请中需要从用户那里收集哪些数据完全自主控制哪些字段必填、哪些选填以匹配组织需求Form Entry Points表单入口点精确指定工作流在哪里被激活——可以显示在首页也可以显示在特定资产 profile 页Approval Chain审批链指定有权审核并最终批准的个人或群组。审批人可以静态指定也可以动态解析为所选资产的 owner、Domain owner 或 Data Product owner。目前工作流的创建必须通过 GraphQL API 使用upsertActionWorkflowmutation 完成。下面是一个使用 DataHub Python 客户端创建基础数据集审批工作流的完整示例Python 客户端的入口为 DataHubGraphfrom datahub.ingestion.graph.client import DatahubClientConfig, DataHubGraph # Initialize DataHub client config DatahubClientConfig( serverhttp://your-datahub-instance, tokenYOUR_ACCESS_TOKEN ) graph DataHubGraph(config) # GraphQL mutation for creating an approval workflow CREATE_WORKFLOW_MUTATION mutation upsertActionWorkflow($input: UpsertActionWorkflowInput!) { upsertActionWorkflow(input: $input) { urn } } workflow_definition { name: Dataset Access Request, description: Request access to sensitive datasets, category: ACCESS, trigger: { type: FORM_SUBMITTED, form: { entityTypes: [DATASET], # Limit to dataset entities, but can apply to many types. entrypoints: [ { type: HOME, # Display on Home Page label: Request Dataset Access # Home Page CTA }, { type: ENTITY_PROFILE, # Display on Entity Profile Page label: Request Access # Entity Profile Page CTA } ], fields: [ { id: business_justification, name: Business Justification, description: Please explain why you need access to this dataset, valueType: RICH_TEXT, cardinality: SINGLE, required: True }, { id: access_duration, name: Access Duration, description: How long do you need access?, valueType: STRING, allowedValues: [ {stringValue: 30_DAYS}, {stringValue: 90_DAYS}, {stringValue: PERMANENT} ], cardinality: SINGLE, required: False }, # Create a conditionally visible field. Only visible based on previous field answer. { id: permanent_access_justification, name: Permanent Access Justification, description: Since youve requested permanent access, please provide additional justification for why this is necessary, valueType: RICH_TEXT, cardinality: SINGLE, required: True, condition: { type: SINGLE_FIELD_VALUE, singleFieldValueCondition: { field: access_duration, values: [PERMANENT], condition: EQUAL, negated: False } } } ] } }, steps: [ { id: data_steward_review, type: APPROVAL, description: Data steward review and approval, actors: { userUrns: [urn:li:corpuser:data.steward], groupUrns: [], roleUrns: [], dynamicAssignment: { type: ENTITY_OWNERS } } } ] } # Workflow definition workflow_input { input: workflow_definition } # Execute the mutation try: result graph.execute_graphql( queryCREATE_WORKFLOW_MUTATION, variablesworkflow_input ) print(fWorkflow created successfully: {result[upsertActionWorkflow][urn]}) print(fWorkflow name: {result[upsertActionWorkflow][name]}) except Exception as e: print(fError creating workflow: {e})该示例中的几个关键配置点值得注意entityTypes: [DATASET]将工作流限定在数据集实体上也可以应用于多种实体类型如果省略entityTypes字段则创建的是不依赖具体实体上下文的通用工作流。条件字段permanent_access_justification字段通过conditionSINGLE_FIELD_VALUE条件检查access_duration是否EQUAL于PERMANENTnegated: False实现仅在用户选择永久访问时才显示的条件可见性。静态 动态审批人混合actors中同时给出静态的userUrnsurn:li:corpuser:data.steward和dynamicAssignment: { type: ENTITY_OWNERS }即审批请求同时路由给指定用户和所申请实体的 owner。工作流核心概念速查入口点Entry Points——定义用户可以从哪里发起工作流HOME工作流对全体用户显示在首页ENTITY_PROFILE工作流显示在实体详情页。字段类型Field Types——表单字段支持的类型类型说明STRING单行文本输入RICH_TEXT多行富文本输入支持格式URN实体引用用户、群组、数据集等可配置实体类型DATE日期/时间值以毫秒级 epoch 时间戳表示NUMBER数值输入整数或浮点字段基数Field Cardinality——控制字段接受单值还是多值SINGLE仅接受一个值MULTIPLE接受多个值。审批人解析Assignee Resolution——配置谁审批工作流请求静态分配Static Assignment指定具体用户、群组、角色进行审批userUrns指定审批用户groupUrns指定审批群组roleUrns指定 DataHub 角色审批。动态分配Dynamic Assignment基于实体上下文自动解析审批人ENTITY_OWNERS分配给被申请实体的 ownerENTITY_DOMAIN_OWNERS分配给该实体所属 Domain 的 ownerENTITY_DATA_PRODUCT_OWNERS分配给该实体所属 Data Product 的 owner可选的 ownership type 过滤如 Technical Owner、Business Owner——文档 FAQ 中该过滤字段写作ownershipTypeUrns概念一节中表述为按 ownership types 过滤。类别CategoriesACCESS访问类工作流CUSTOM自定义工作流携带用户定义的customCategory字符串例如用于建模数据创建请求这类场景。提交访问工作流请求工作流创建完成后用户即可提交 Workflow Request 表单来触发审批流程。根据为该工作流配置的入口点用户可以从以下位置发起Home Page首页Entity Profile实体 profile 页。创建审批请求时用户只需为所有必填字段提供回答完成后点击Submit提交即可。提交后你的在途请求可在TasksRequestsMy Requests中随时查看。审批访问工作流请求被指定为 reviewer 的用户通过Task Center管理请求进入 Task Center从左侧导航栏点击 Tasks点击 Requests 标签页。审批一个请求查看请求详情在任一待处理请求上点击 View Details可以看到——申请人信息Requestor information所申请的实体Selected entity表单提交的答案Submitted form responses。做出决定对每个请求可以——Accept批准访问请求Reject拒绝请求可附可选评论。添加评论为你的决定提供上下文说明帮助申请人理解结果。配置工作流通知为及时掌握工作流动态可配置如下通知进入SettingsMy Notifications找到Workflow Notifications区域按以下场景启用通知Pending Reviews当你有待审批的请求时通知你Request Updates当你提交的请求被批准或拒绝时通知你。访问开通响应审批工作流事件通过 DataHub Actions 框架参见 DataHub Actions 文档监听工作流事件可以自动化访问开通。事件类型DataHub 在工作流生命周期的关键节点发出事件Approval Workflow Request Create Event工作流请求表单被提交时Approval Workflow Request Step Complete中间审批步骤完成时Approval Workflow Request Complete工作流请求被完全批准或拒绝时。各事件的 JSON 格式可参考 Entity Change Events 事件文档。搭建事件集成创建一个监听工作流事件的 DataHub Actions 自定义 listener即可触发自定义的访问开通动作。下面的配置演示了如何过滤出工作流表单请求生命周期事件并先打印出来该示例基于仓库内 hello_world 动作示例 的动作类型name: access-workflow-provisioner-action datahub: server: your-datahub-server token: your-access-token source: type: datahub-cloud # Add filter to filter down to just access request lifecycle events. filter: event_type: EntityChangeEvent_v1 event: entityType: actionRequest category: LIFECYCLE operation: COMPLETED # OR CREATE OR MODIFY parameters: actionRequestType: WORKFLOW_FORM_REQUEST action: type: hello_world config: {}过滤条件的含义是只接收entityType: actionRequest、category: LIFECYCLE的事件operation取COMPLETED也可改为CREATE或MODIFY以覆盖请求创建/修改时机并限定actionRequestType: WORKFLOW_FORM_REQUEST确保只匹配工作流表单请求的生命周期事件。在实际场景中这个 action 应当执行真正开通访问权限的动作例如把用户加入指定的 LDAP 群组为用户分配某个 Snowflake 角色生成一条授予 S3 bucket 访问权限的 AWS IAM policy。构建自定义 action 的完整方法参见 Developing an Action 指南。GraphQL API 速查工作流相关的核心 mutationMutation用途upsertActionWorkflow创建或更新工作流定义createActionWorkflowFormRequest提交工作流请求reviewActionWorkflowFormRequest审批工作流请求deleteActionWorkflow删除工作流定义完整的 schema 类型与文档可在你实例的 GraphiQLhttps://your-datahub-instance.acryl.io/api/graphiql中查看Mutation类型下的相关定义。FAQ如何为我的组织启用 Approval WorkflowsApproval Workflows 目前处于 Private Beta。请联系 DataHub 团队为你的实例申请开启该功能。能否创建不依赖实体上下文的工作流可以。在工作流定义中省略entityTypes字段即可创建不需要具体实体上下文的通用工作流。如何配置动态审批人解析在 workflow step 的actors部分使用dynamicAssignment字段。可用类型包括ENTITY_OWNERS路由到被申请实体的 ownerENTITY_DOMAIN_OWNERS路由到该实体所属 Domain 的 ownerENTITY_DATA_PRODUCT_OWNERS路由到该实体所属 Data Product 的 owner。可选地使用ownershipTypeUrns字段按具体 ownership type 过滤。工作流表单支持哪些字段类型支持STRING单行文本、RICH_TEXT多行富文本、URN实体引用可按实体类型配置、DATE毫秒级 epoch 时间戳、NUMBER整数或浮点数。每个字段都可通过cardinality属性配置为单值或多值。可以创建自定义工作流类别吗可以。使用CUSTOM类别并提供customCategory字符串即可在标准ACCESS类别之外对相关工作流进行分组。审批人不可用时怎么办可以在单个步骤中配置多个审批人提高每个步骤至少有人可审批的概率。创建之后可以修改工作流吗可以。使用现有 workflow URN 调用upsertActionWorkflowmutation 更新定义。注意变更只影响新请求不影响已存在的请求。如何处理需要多步审批的请求在工作流配置中定义多个 step。每个 step 可以有不同的审批人和审批要求。用户可以取消自己的请求吗目前请求取消通过审批流程管理。如有需要用户可联系其审批人撤回请求。【免费下载链接】datahubThe Context Platform for your Data and AI Stack项目地址: https://gitcode.com/GitHub_Trending/da/datahub创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/29 19:34:55

中国移动前端开发工程师(RN原生化方向)职位深度解析与面试指南

中国移动通信有限公司在线营销服务中心 开发工程师 (前端,RN原生化方向) 职位信息 岗位职责: 1、负责中国移动APP爱购商城系统RN原生开发,建立一套代码多端发布的前端框架体系,覆盖客户端RN、端外H5、微信小程序等多端场景,制定前端代码开发规范,搭建可扩展、多端适配的…

2026/11/3 11:18:58

Folo:用AI重塑你的信息阅读体验,告别信息过载的智能解决方案

Folo:用AI重塑你的信息阅读体验,告别信息过载的智能解决方案 在信息爆炸的时代,我们每天被数十个应用、上百条推送轰炸,真正有价值的内容往往淹没在噪音中。你是否也曾感到,虽然订阅了很多优质内容源,却总…

2026/11/5 16:51:33

EasyU优启通PE维护盘实战指南:制作、启动与核心操作全解析

1. 为什么一个PE维护盘值得单独拿出来聊装系统、修引导、救数据、清病毒,这些活儿但凡干过几次的人都知道,真正决定效率的往往不是你手速多快,而是手边那套PE环境靠不靠谱。EasyU(圈内习惯叫优启通)就是在这个场景下被…

2026/11/5 16:26:13

Rust原来很简单二:所有权系统

Part 2 核心篇 —— 所有权系统 本篇覆盖 第 6 ~ 10 章:所有权、借用与引用、生命周期、字符串与切片、内存模型。 ⚠️ 这是全书最重要的一篇。 把它吃透,Rust 从此“很简单”;跳过它,你会处处碰壁。请慢下来,动手敲每一段代码。 第 6 章 所有权:Rust 的第一性原理 6…

2026/11/5 15:00:49

基于Hadoop+Spark的民宿智能推荐系统设计与实现

1. 项目概述:大数据时代的民宿智能推荐这个毕业设计项目融合了当前大数据领域最主流的技术栈,构建了一个完整的民宿推荐系统解决方案。作为一名长期从事大数据系统开发的工程师,我认为这个选题非常贴合实际应用场景——随着旅游业的复苏和共享…

2026/11/5 14:10:30

ADS122U04IPWR+STM32F427ZI工业级温度测量信号链设计

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 14:10:30

UART接口24位ADC搭配RS485,解决远距离温度监控难题

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 14:10:30

UART接口24位ADC搭配PIC18F46K22的RTD与热电偶测温实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 15:39:06

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/4 21:04:25

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 0:02:07

多智能体协作系统架构设计与实践优化

1. 多智能体协作系统的时代背景2017年Transformer架构的诞生彻底改变了人工智能的发展轨迹。当行业还沉浸在单一大模型带来的性能突破时,Anthropic的研究团队已经将目光投向了更前沿的领域——如何让多个智能体通过协作产生超越单体能力的系统智能。这就像交响乐团中…

2026/11/5 0:02:07

大模型系统性入门实战指南:从原理到部署微调的全链路路线

提到大模型的系统性入门,我先说个结论:这事真不难,难的是资料太散、路线太多,今天这个框架明天那个工具,新人很容易在“收藏夹吃灰”和“教程看到一半放弃”之间反复横跳。市面上关于大模型的内容少说有几十万篇&#…

2026/11/5 0:02:07

鸿蒙文件系统沙箱机制解析与开发实践

1. 鸿蒙文件系统沙箱机制深度解析作为一名从Android转向鸿蒙开发的工程师,我深刻体会到文件系统访问是迁移过程中最先遇到的"拦路虎"。在Android上运行良好的文件读写代码,在鸿蒙真机环境却频频出现文件写入后神秘消失或直接抛出权限拒绝错误的…

2026/11/5 15:39:06

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/4 21:04:25

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑