为 Workday Data Lake 设置跨云连接

通过与 Workday Data Lake 建立跨云连接,您可以在 Google Cloud中直接查询 Workday 数据。然后,您可以使用 Lakehouse 来管理对联邦数据的访问权限并分析这些数据,而无需复制或移动数据。

使用场景

将 Lakehouse 连接到 Workday Data Lake 可支持多种关键使用情形:

  • 统一分析:将 Workday 人力资源和薪酬数据与Google Cloud 数据相关联,例如,为销售和配额提供背景信息。
  • 充分利用 Google Cloud 生态系统:例如,将 Google 的代理框架与 BigQuery ML 和 Workday 人力资源数据搭配使用,以预测员工留存率。
  • 以流式传输实时、无复制数据:分析 Workday 采购和应付账款数据,以及存储在Google Cloud 中的物流和库存数据,以报告供应链效率低下的问题并优化供应商成本。

准备工作

  1. 查看湖仓一体概览,了解湖仓一体如何管理数据访问权限。
  2. 请参阅有关访问跨云数据的文章,了解其运作方式。
  3. 查看支持的目录以验证兼容性。
  4. 了解如何使用区域性 Secret Manager 密文向 Workday Data Lake 进行身份验证。
  5. 请与 Workday Data Lake 管理员联系,按照本文档中的说明设置身份验证。管理员可能需要与 Workday 支持团队联系,以启用 Data Lake 访问权限,这可能需要一段时间才能解决。
  6. 登录您的 Google Cloud 账号。如果您是 Google Cloud新手,请 创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
  7. Verify that billing is enabled for your Google Cloud project.

  8. Enable the BigLake, Secret Manager APIs.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

  9. Verify that billing is enabled for your Google Cloud project.

  10. Enable the BigLake, Secret Manager APIs.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

所需的角色

如需获得设置跨云访问所需的权限,请让管理员向您授予项目的以下 IAM 角色:

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

支持的目录详情

本文档介绍如何使用 Workday Data Lake 设置数据湖仓。如需访问其他目录,请参阅支持的目录

限制和注意事项

访问 Workday Data Lake 时,请注意以下几点:

  • 只读:Lakehouse 中的联合目录是远程目录的只读视图。如需创建、更新或删除资源,您必须直接使用 Workday。
  • 网络路由:连接和查询通过公共互联网安全地路由。
  • 数据新鲜度--refresh-interval 标志用于确定 Lakehouse 同步元数据的频率。该值必须为 0s(已停用)或至少为 300s(5 分钟)。随着目录中命名空间和表的数量增加,后台元数据刷新需要更长时间才能完成。如果上一次刷新超出其预定间隔,系统会跳过当前周期,并在下一个预定间隔恢复。
  • 托管:为避免连接性问题并尽量减少延迟时间和数据传输费用,请在最靠近 Workday 实例所在区域的Google Cloud 区域中创建联合目录和区域 Secret。

常规工作流程

如需在 Workday Data Lake 中访问跨云数据,请按以下一般步骤操作:

  1. 设置联合:在 Lakehouse 中配置基于 Secret 的身份验证并创建联合目录。
    1. 在 Workday 中,为集成创建集成系统用户 (ISU) 和 API 客户端。
    2. 在 Secret Manager 中创建包含 Workday API 凭据的 Secret。
    3. 在 Lakehouse 中创建联合目录,并向目录服务账号授予对密文的访问权限。
  2. 验证连接:验证 Lakehouse 是否可以连接到远程目录并同步元数据。
  3. 查询数据:使用 BigQuery 或 Managed Service for Apache Spark 针对联合数据运行查询。如需了解详情,请参阅查询远程数据
  4. 配置权限:使用 Identity and Access Management (IAM) 来管理哪些人可以查看和查询联合数据。

设置联合

如需查询数据,您必须设置一个 Lakehouse 联合目录,该目录可连接到远程 Workday 数据湖。

配置身份验证

联合需要使用安全存储在区域级 Secret Manager Secret 中的凭据向远程 Workday Data Lake 进行身份验证。

  1. 在 Workday 中,完成以下设置:

    1. 创建集成系统用户 (ISU):运行创建集成系统用户任务,以创建 Lakehouse 用于同步资源的专用账号。
    2. 为 ISU 启用 Workday Data Lake 访问权限:向 ISU 授予对 Workday Data Lake 的访问权限。请与 Workday 支持团队联系,以启用此访问权限。您无法自行执行此步骤;请等待 Workday 在您的 Workday 租户中配置访问权限,然后再继续。
    3. 注册集成 API 客户端:运行注册集成 API 客户端任务。
    4. 保存客户端 ID 和密钥:保存 OAuth 客户端 ID 和密钥以供下一步使用。
    5. 生成永不过期的刷新令牌:在适用于集成的 API 客户端中,使用管理集成刷新令牌为 ISU 生成永不过期的刷新令牌。
    6. 保存刷新令牌:保存生成的刷新令牌以供下一步使用。
  2. 使用上一步中保存的数据创建一个名为 credentials.json 的 JSON 文件:

    {
      "client_id": "CLIENT_ID",
      "client_secret": "CLIENT_SECRET",
      "refresh_token": "REFRESH_TOKEN"
    }

    替换以下内容:

    • CLIENT_ID:Workday API 客户端(用于集成)中的 OAuth 客户端 ID。
    • CLIENT_SECRET:Workday API Client for Integrations 中的 OAuth 客户端密钥。
    • REFRESH_TOKEN:为您的 Workday ISU 生成的永不过期的刷新令牌。
  3. 为 Secret Manager 配置区域端点:

    默认情况下,Secret Manager 使用全球端点。为避免连接问题并最大限度地减少延迟时间和数据传输费用,请在同一区域中创建您的密钥和目录。如需使用区域级 Secret 替换默认的全局端点,请运行以下命令:

    gcloud config set api_endpoint_overrides/secretmanager https://secretmanager.REGION.rep.googleapis.com/

    替换以下内容:

    • REGION:您存储 Secret Manager Secret 的 Google Cloud 区域。例如 us-east4
  4. 将载荷上传到 Secret Manager:

    gcloud secrets create WORKDAY_SECRET_NAME \
      --location="REGION" \
      --project="PROJECT_ID" \
      --data-file=credentials.json
  5. 安全地删除 credentials.json 文件,以防止凭据泄露。

    替换以下内容:

    • WORKDAY_SECRET_NAME:Secret Manager 中 Workday Secret 的唯一名称,例如 workday-api-credentialsworkday-data-lake-secret
    • REGION:您创建 Secret 的 Google Cloud 区域,例如 us-east4
    • PROJECT_ID:您的 Google Cloud 项目 ID。

创建联合目录

如需使用 gcloud CLI 创建联合目录,请运行以下命令:

gcloud alpha biglake iceberg catalogs create FEDERATED_CATALOG_NAME \
    --project="PROJECT_ID" \
    --primary-location="REGION" \
    --catalog-type="federated" \
    --federated-catalog-type="workday" \
    --secret-name="projects/PROJECT_ID/locations/REGION/secrets/WORKDAY_SECRET_NAME" \
    --workday-base-url="WORKDAY_BASE_URL" \
    --workday-tenant="WORKDAY_TENANT" \
    --refresh-interval="REFRESH_INTERVAL" \
    --namespace-filters="NAMESPACE_FILTERS"

替换以下内容:

  • FEDERATED_CATALOG_NAME:Lakehouse 中联合目录的名称。
  • PROJECT_ID:您的 Google Cloud 项目 ID。
  • REGION:您创建联合目录的 Lakehouse 区域,例如 us-east4。为尽量缩短延迟时间和降低数据传输费用,请选择距离您的 Workday 实例最近的 Google Cloud区域。此区域必须与您存储 Secret 的区域相同。
  • WORKDAY_SECRET_NAME:Secret Manager 中 Workday Secret 的名称。
  • WORKDAY_BASE_URL:Workday 实例的基础网址。例如 impl-services1.wd12.myworkday.comwd501.myworkday.com
  • WORKDAY_TENANT:Workday 租户名称。
  • REFRESH_INTERVAL:可选:指定更新目录信息的频率。将此值设置为时长,例如 300s5m。较短的间隔时间会更频繁地更新数据,但可能会增加 API 调用费用。间隔时间越长,费用可能越低,但查询的数据可能无法反映您的最新数据集。如果省略,刷新间隔时间默认为 5 分钟 (300s)。将值设置为 0s 可停用后台元数据刷新。
  • NAMESPACE_FILTERS:可选:以英文逗号分隔的要进行联邦的命名空间列表,例如 finance,hr。如果省略,Lakehouse 会包含所有命名空间。

完成身份验证设置

创建目录后,Lakehouse 会为其预配一个唯一服务账号,该账号在资源说明中标识为 biglake-service-account

您必须向此服务账号授予您之前创建的密文的 Secret Manager Secret Accessor 角色 (roles/secretmanager.secretAccessor)。新的 IAM 政策可能需要几分钟才能生效。

控制台

  1. 在 Google Cloud 控制台中,前往 Lakehouse

    [前往 Lakehouse][5]

  2. 点击您为 Workday 创建的联合目录的名称。

  3. 目录详情页面上的提醒横幅中,点击授予 Secret 权限

    Lakehouse 向已配置的服务账号授予对相应 Secret 的 roles/secretmanager.secretAccessor 角色。

gcloud CLI

  1. 向目录的服务账号授予访问相应 Secret 的权限:

    gcloud config set api_endpoint_overrides/secretmanager https://secretmanager.REGION.rep.googleapis.com/
    gcloud secrets add-iam-policy-binding WORKDAY_SECRET_NAME \
      --project="PROJECT_ID" \
      --location="REGION" \
      --member="serviceAccount:$(gcloud alpha biglake iceberg catalogs describe FEDERATED_CATALOG_NAME \
          --project="PROJECT_ID" \
          --format='value(biglake-service-account)')" \
          --role="roles/secretmanager.secretAccessor"
  2. 如需验证联合目录服务账号是否具有对相应 Secret 的访问权限,请运行以下命令:

    gcloud config set api_endpoint_overrides/secretmanager https://secretmanager.REGION.rep.googleapis.com/
    gcloud secrets get-iam-policy WORKDAY_SECRET_NAME \
         --project="PROJECT_ID" \
         --location="REGION"

    在输出中,验证 biglake-service-account 服务账号是否具有 roles/secretmanager.secretAccessor 角色。

替换以下内容:

  • REGION:您存储 Secret Manager Secret 并创建联邦目录的 Google Cloud 区域,例如 us-east4
  • WORKDAY_SECRET_NAME:Secret Manager 中 Workday Secret 的名称。
  • PROJECT_ID:您的 Google Cloud 项目 ID。
  • FEDERATED_CATALOG_NAME:Lakehouse 中联合目录的名称。

验证连接

验证后台元数据刷新是否成功完成,以及您的命名空间和表是否已同步。

  1. 验证刷新状态是否显示成功:

    gcloud alpha biglake iceberg catalogs describe FEDERATED_CATALOG_NAME \
      --project="PROJECT_ID"
  2. 确认命名空间已同步:

    gcloud alpha biglake iceberg namespaces list \
      --project="PROJECT_ID" \
      --catalog="FEDERATED_CATALOG_NAME"

替换以下内容:

  • PROJECT_ID:您的 Google Cloud 项目 ID。
  • FEDERATED_CATALOG_NAME:Lakehouse 中您的联邦目录的名称。

后续步骤