(已弃用)数据网格用户指南

Cortex Framework 的数据网格扩展了数据基础,可通过 BigQuery 元数据和 Knowledge Catalog 实现数据治理、可发现性和访问权限控制。这是通过提供一组基本的元数据资源和 BigQuery 资产注释来实现的,这些资源和注释可以自定义,并可选择与数据基础一起部署。这些基本规范提供自定义配置,这些配置是元数据基础,可补充 Cortex Framework Data Foundation。在继续阅读本指南之前,请先参阅数据网格概念。

本页中概述的步骤专为配置 Cortex Framework 的数据网格而设计。在数据网格目录部分中,找到每个工作负载专属文件夹中的数据网格配置文件。

Cortex Framework 的数据网格架构

图 1. Cortex Framework 的数据网格架构。

设计

Cortex 的数据网格设计与整体数据基础类似,由三个阶段组成,其中包含由 Cortex 或用户管理的不同子组件:

  1. 基础资源规范更新:每次发布时,Cortex 都会更新基础资源规范,为数据网格提供标准化的元数据基础。
  2. 资源规范自定义:在部署之前,用户可以根据其特定应用场景和要求定制资源规范。
  3. 数据网格部署和更新:用户可以在 Cortex 配置文件中启用数据网格。它在 Cortex 部署期间的数据资产之后部署。此外,用户还可以灵活地独立部署数据网格,以便进行进一步更新。

Cortex Framework 的数据网格设计

图 2. Cortex Framework 的数据网格设计。

数据网格目录

在以下位置查找每个工作负载和数据源的数据网格基本配置文件。请注意,目录包含不同的文件结构,但所有规范都位于 config 文件夹下。

工作负载 数据源 目录路径
可运行 SAP ECC src/SAP/SAP_REPORTING/config/ecc
SAP S/4 HANA src/SAP/SAP_REPORTING/config/s4
Salesforce Sales Cloud (SFDC) src/SFDC/config
Oracle EBS src/OracleEBS/config
营销 CM360 src/marketing/src/CM360/config
Google Ads src/marketing/src/GoogleAds/config
Meta src/marketing/src/Meta/config
Salesforce Marketing Cloud (SFMC) src/marketing/src/SFMC/config
TikTok src/marketing/src/TikTok/config
YouTube(通过 DV360) src/marketing/src/DV360/config
Google Analytics 4 src/marketing/src/GA4/config

元数据资源在数据源级别定义,每个 Google Cloud 项目有一个 YAML 文件,其中包含所有资源的列表。用户可以扩展现有文件,也可以根据需要在该目录中创建包含其他资源规范的其他 YAML 文件。

资产注解在资产级别定义,包含目录中的许多 YAML 文件,每个文件包含一个注解。

启用 API 并验证权限

通过修改 Data Mesh 的默认值,您可以实现说明之外的功能。如果您需要修改 config.json 中数据网格的默认值,以实现说明之外的功能,请确保设置了必要的 API 并确认权限,如下表所述。使用数据基础部署数据网格时,请向部署用户或 Cloud Build 账号授予权限。如果部署涉及不同的源项目和目标项目,请确保在两个项目中都启用了这些 API 和权限,无论这些功能在何处使用。

功能 权限角色 文档
BigQuery 资产和行访问权限 BigQuery Data Owner 如需了解详情,请参阅资产角色的所需角色,以及行角色的所需权限。
BigQuery 列访问权限 Policy Tag Admin 如需了解详情,请参阅用于列级访问权限控制的角色和使用列级访问权限控制限制访问权限文档。
目录标签 Data Catalog TagTemplate Owner 如需了解详情,请参阅使用 Data Catalog 标记 BigQuery 表和 Data Catalog IAM 文档。
Knowledge Catalog 数据湖 Dataplex Editor 如需了解详情,请参阅创建数据湖文档。

了解基本资源规范

用于为 Cortex 配置 Data Mesh 的主要接口是通过基本资源规范,这是一组开箱即用的 YAML 文件,用于定义部署的元数据资源和注解。基本规范提供了初始建议和语法示例,但旨在进一步自定义以满足用户需求。这些规范分为两类:

  • 可应用于各种数据资产的元数据资源。例如,目录标签模板定义了如何使用业务领域标记资产。
  • 注解,用于指定如何将元数据资源应用于特定数据资产。例如,将特定表与销售网域相关联的目录标记。

以下各部分将引导您了解每种规范类型的基本示例,并说明如何自定义这些示例。如果启用了关联的部署选项,则基本规范会标记为 ## CORTEX-CUSTOMER,应修改这些规范以适应部署。如需了解高级用法,请参阅 src/common/data_mesh/src/data_mesh_types.py 中这些规范架构的规范定义。

元数据资源

元数据资源是存在于项目中的共享实体,可应用于许多数据资产。大多数规范都包含一个 display_name 字段,该字段需满足以下条件:

  • 仅包含 Unicode 字母、数字 (0-9)、下划线 (_)、短划线 (-) 和空格 ( )。
  • 不能以空格开头或结尾。
  • 长度上限为 200 个字符。

在某些情况下,display_name 也会用作 ID,这可能会引入其他要求。在这些情况下,我们会提供指向规范文档的链接。

如果部署引用了不同源项目和目标项目中的元数据资源,则必须为每个项目定义一个规范。例如,Cortex Salesforce (SFDC) 包含两个 Lake 规范。一个用于原始区域和 CDC 区域,另一个用于报告。

Knowledge Catalog 数据湖

Knowledge Catalog 数据湖、区域和资产用于从工程角度整理数据。数据湖具有 region,可用区具有 location_type,这两者都与 Cortex 位置(config.json > location)相关。Cortex 位置定义了 BigQuery 数据集的存储位置,可以是单区域或多区域。应将可用区 location_type 设置为 SINGLE_REGION | MULTI_REGION,以便与该可用区匹配。不过,数据湖区域必须始终为单个区域。如果 Cortex 位置和可用区 location_type 是多区域,请在该组中选择一个单区域作为数据湖区域。

  • 要求
    • display_name 湖用作 lake_id,必须符合官方要求。区域和资产 display_name 也是如此。区域 ID 在项目中的所有数据湖中必须是唯一的。
    • 数据湖规范必须与单个区域相关联。
    • asset_name 应与 BigQuery 数据集的 ID 匹配,但 display_name 可以是更人性化的标签。
  • 限制
    • Knowledge Catalog 仅支持将 BigQuery 数据集(而非单个表)注册为 Knowledge Catalog 资产。
    • 资产可能仅在一个可用区中注册。
    • Knowledge Catalog 仅在部分位置受支持。如需了解详情,请参阅 Knowledge Catalog 位置。

请参阅 lakes.yaml 中的以下示例。

这些资源在指定 data_mesh_types.Lakes 的 YAML 文件中定义。

目录标记模板

Data Catalog 标记模板可用于向 BigQuery 表或单个列添加上下文。它们可帮助您从技术和业务角度对数据进行分类和理解,并与 Knowledge Catalog 搜索工具集成。它们定义了您可用于为数据添加标签的具体字段,以及每个字段可包含的信息类型(例如文本、数字、日期)。 目录标记是具有实际字段值的模板实例。

模板字段 display_name 用作字段 ID,并且必须遵循类 TagTemplate 中指定的 TagTemplate.fields 要求。如需详细了解支持的字段类型,请参阅 Data Catalog 字段类型。

Cortex Data Mesh 会将所有标记模板创建为公开可读。它还为标记模板规范引入了额外的 level 概念,用于定义标记应应用于整个资产、资产中的各个字段还是两者,可能的值为:ASSET | FIELD | ANY。虽然目前并未严格强制执行此要求,但未来的验证检查可能会确保在部署期间在适当的级别应用标记。

请参阅以下示例。

模板在指定 data_mesh_types.CatalogTagTemplates 的 YAML 文件中定义。

目录标记是模板的实例,将在下文的“资产注释”中进行讨论。

使用标记模板进行资产和列级访问权限控制

Cortex Framework 能够对与目录标记模板关联的所有制品启用资产或列级访问权限控制。例如,如果用户希望根据业务线授予对资源的访问权限,则可以为 line_of_business 目录标记模板创建 asset_policies,并为每个业务网域指定不同的主账号。每项政策都接受 filters,可用于仅匹配具有特定值的标记。在这种情况下,我们可以匹配 domain 值。请注意,这些 filters 仅支持匹配相等性,不支持其他运算符。如果列出了多个过滤条件,则结果必须满足所有过滤条件(例如 filter_a AND filter_b)。最终的资产政策集是直接在注解中定义的政策与模板政策中的政策的并集。

使用目录标记的列级访问权限控制的行为类似,它会对匹配的字段应用政策标记。但是,由于一列只能应用一个政策标记,因此优先级如下:

  1. 直接政策标记:如果直接在列注解中定义了政策标记,则该标记优先。
  2. 匹配的标记模板政策:否则,访问权限由关联的 Catalog 标记模板中字段上定义的第一个匹配政策决定。

使用此功能时,我们强烈建议您同时启用或停用目录标记和访问控制列表 (ACL) 的部署。这样可确保 ACL 得到正确部署。

如需了解此高级功能的规范,请参阅 data_mesh_types.CatalogTagTemplate 中 asset_policies 和 field_policies 参数的定义。

目录术语表

术语库是一种工具,可用于提供数据资产中特定列所使用的术语字典,这些术语可能不被普遍理解。用户可以在控制台中手动添加字词,但资源规范不支持此操作。

政策分类和标记

通过政策分类和标记,您可以以标准化方式对敏感数据资产进行列级访问权限控制。例如,可以有一个用于控制特定业务线上的 PII 数据的标记分类,其中只有特定群组可以读取遮盖的数据、未遮盖的数据或根本没有读取权限。

如需详细了解政策分类和标记,请参阅列数据遮盖简介文档。以下部分尤为重要:

Cortex Framework 提供了示例政策标记,以演示如何指定这些标记以及潜在用途,但默认情况下,数据网格部署中不会启用影响访问权限控制的资源。

请参阅以下示例。

政策分类在指定 data_mesh_types.PolicyTaxonomies 的 YAML 文件中定义。

素材资源注释

注释指定适用于特定资产的元数据,并可引用已定义的共享元数据资源。注释包括:

  • 资产说明
  • 字段说明
  • 目录标签
  • 资产、行和列级访问权限控制

Cortex Framework 数据基础为以下工作负载提供预配置的注释(说明)。

  • SAP ECC(原始、CDC 和报告)
  • SAP S4 HANA(原始、CDC 和报告)
  • SFDC(仅用于报告)
  • Oracle EBS(仅限报告)
  • CM360(仅用于报告)
  • Google Ads(仅用于报告)
  • Meta(仅限报告)
  • SFMC(仅用于报告)
  • TikTok(仅用于报告)
  • YouTube(通过 DV360)(仅用于报告)
  • Google Analytics 4(仅用于报告)

请参阅以下示例。

注解在指定 data_mesh_types.BqAssetAnnotation 的 YAML 文件中定义。

目录标签

目录标记是已定义模板的实例,其中分配了适用于特定资产的字段值。请务必分配与关联模板中声明的字段类型相匹配的值。

TIMESTAMP 值应采用以下格式之一:

  "%Y-%m-%d %H:%M:%S%z"
  "%Y-%m-%d %H:%M:%S"
  "%Y-%m-%d"

请参阅以下示例。

请参阅 data_mesh_types.CatalogTag 中的规范定义。

指定访问权限政策读取者和主账号

使用访问权限政策控制对 Cortex Framework 中 BigQuery 数据的访问权限。这些政策定义了哪些人(主账号)可以访问特定数据资产、资产中的行,甚至单个列。主账号必须遵循 IAM 政策绑定成员定义的特定格式。

素材资源级访问权限

您可以授予对整个 BigQuery 资产的访问权限,并提供各种权限:

  • READER:查看资产中的数据。
  • WRITER:修改资产并向其添加数据。
  • OWNER:对资产拥有完全控制权,包括管理访问权限。

这些权限等同于 SQL 中的 GRANT DCL 语句。

与大多数资源和注释的行为不同,覆盖标志不会移除具有 OWNERS 角色的现有主账号。在启用覆盖的情况下添加新所有者时,这些所有者只会附加到现有所有者。这是一项安全措施,旨在防止意外失去访问权限。 如需移除资产所有者,请使用控制台。覆盖会移除具有 READER 或 WRITER 角色的现有主账号。

请参阅以下示例。

请参阅 data_mesh_types.BqAssetPolicy 中的规范定义。

行级访问权限

您可以根据特定列值过滤条件授予对行集的访问权限。指定行访问权限政策时,提供的过滤条件字符串将插入到 CREATE DDL statement 中。如果启用了 overwrite 标志,则会在应用新政策之前删除所有现有行访问权限政策。

请考虑以下有关行级访问权限的事项:

  • 添加任何行访问权限政策意味着,这些政策中未指定的任何用户都无权查看任何行。
  • 行政策仅适用于表,不适用于视图。
  • 避免在行访问权限政策过滤条件中使用分区列。如需了解资产类型和分区列,请参阅关联的报告设置 YAML 文件。

如需详细了解行级访问权限政策,请参阅行级安全性最佳实践。

请参阅以下示例。

请参阅 data_mesh_types.BqRowPolicy 中的规范定义。

列级访问权限

如需启用列级访问权限,请使用由政策标记名称和分类名称标识的政策标记为各个字段添加注解。更新政策标记元数据资源以配置访问权限控制。

请参阅以下示例。

请参阅 data_mesh_types.PolicyTagId 中的规范定义。

部署数据网格

数据网格可以作为数据基础部署的一部分进行部署,也可以单独部署。无论哪种情况,它都会使用 Cortex config.json 文件来确定相关变量,例如 BigQuery 数据集名称和部署选项。默认情况下,部署数据网格不会移除或覆盖任何现有资源或注释,以防止任何意外损失。不过,在单独部署时,也可以覆盖现有资源。

部署方案

您可以根据用户在 config.json > DataMesh 中的需求和支出限制,启用或停用以下部署选项。

选项 备注
deployDescriptions 这是默认启用的唯一选项,它会部署包含资产和列说明的 BigQuery 注解。它不需要启用任何其他 API 或权限。
deployLakes 部署数据湖和区域。
deployCatalog 在资产注释中部署目录模板资源及其关联的标记。
deployACLs 通过资产注释部署政策分类资源以及资产、行和列级访问权限控制政策。日志包含指示访问权限政策如何更改的消息。

使用数据基础进行部署

默认情况下,config.json > deployDataMesh 会在每个工作负载构建步骤结束时启用部署数据网格资产说明。此默认配置不需要启用任何其他 API 或角色。通过启用部署选项、所需的 API 和角色以及修改关联的资源规范,可以部署数据网格的其他功能。

单独部署

如需单独部署数据网格,用户可以使用 common/data_mesh/deploy_data_mesh.py 文件。此实用程序在构建过程中用于一次部署一个工作负载的数据网格,但直接调用时,它也可用于一次部署多个工作负载。应在 config.json 文件中启用要部署的规范的工作负载。例如,如果部署 Data Mesh for SAP,请确保 deploySAP=true。

为确保您使用所需的软件包和版本进行部署,您可以使用以下命令从 Cortex 部署过程使用的同一映像运行该实用程序:

  # Run container interactively
  docker container run -it gcr.io/kittycorn-public/deploy-kittycorn:v2.0

  # Clone the repo
  git clone https://github.com/GoogleCloudPlatform/cortex-data-foundation

  # Navigate into the repo
  cd cortex-data-foundation

如需获取有关可用参数及其用法的帮助,请运行以下命令:

  python src/common/data_mesh/deploy_data_mesh.py -h

以下是 SAP ECC 的调用示例:

  python src/common/data_mesh/deploy_data_mesh.py \
    --config-file config/config.json \
    --lake-directories \
        src/SAP/SAP_REPORTING/config/ecc/lakes \
    --tag-template-directories \
        src/SAP/SAP_REPORTING/config/ecc/tag_templates \
    --policy-directories \
        src/SAP/SAP_REPORTING/config/ecc/policy_taxonomies \
    --annotation-directories \
        src/SAP/SAP_REPORTING/config/ecc/annotations

如需了解目录位置,请参阅数据网格目录部分。

覆盖

默认情况下,部署数据网格不会覆盖任何现有资源或注解。不过,在单独部署数据网格时,可以启用 --overwrite 标志,以通过以下方式更改部署。

覆盖湖、目录标记模板和政策标记等元数据资源会删除具有相同名称的所有现有资源,但不会修改具有不同名称的现有资源。这意味着,如果从 YAML 文件中完全移除某个资源规范,然后在启用覆盖的情况下重新部署数据网格,则该资源规范不会被删除,因为不会发生名称冲突。这样,Cortex 数据网格部署就不会影响可能正在使用的现有资源。

对于湖泊和可用区等嵌套资源,覆盖资源会移除其所有子资源。例如,覆盖数据湖也会移除其现有区域和资产引用。对于被覆盖的目录标记模板和政策标记,系统也会从资产中移除现有的关联注解引用。覆盖资产注解上的目录标记只会覆盖共享同一模板的目录标记的现有实例。

只有在提供的新说明有效、不为空且与现有说明冲突时,素材资源和字段说明覆盖才会生效。

另一方面,ACL 的行为有所不同。覆盖 ACL 会移除所有现有主账号(素材资源级所有者除外)。这是因为,从访问权限政策中省略的主账号与被授予访问权限的主账号同样重要。

探索数据网格

部署数据网格后,用户可以使用 Data Catalog 搜索和查看数据资产。这包括根据已应用的目录标记值发现资产的能力。用户还可以根据需要手动创建和应用 Catalog Glossary 术语。

您可以在 BigQuery 架构页面上查看已部署的访问权限政策,以了解在每个级别应用于特定资产的政策。

数据沿袭

用户可能会发现启用和直观呈现 BigQuery 资产之间的沿袭非常有用。您还可以通过 API 以编程方式访问沿袭。数据沿袭仅支持资产级沿袭。数据沿袭不与 Cortex 数据网格交织在一起,但未来可能会引入利用沿袭的新功能。

对于任何 Cortex 数据网格或 Cortex Framework 请求,请前往支持部分。