通过治理工作流程管理变更请求

本文档介绍了请求者、审批者和工作流管理员如何在 Knowledge Catalog(以前称为 Dataplex Universal Catalog)中管理治理请求。

准备工作

如需使用治理工作流,请确保您已启用所需的 API,并且审批者和管理员具有必要的 Identity and Access Management (IAM) 角色和权限。

启用 Dataplex API(如果尚未启用)。

启用 API 所需的角色

如需启用 API,您需要拥有 serviceusage.services.enable 权限。如果您创建了项目,则可能已经通过 Owner 角色 (roles/owner) 拥有此权限。否则,您可以通过 Service Usage Admin 角色 (roles/serviceusage.serviceUsageAdmin) 获得此权限。了解如何授予角色。

启用 API

所需的角色

如需获得管理政府要求所需的权限,请让您的管理员向您授予项目的以下 IAM 角色:

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

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

如需详细了解角色和权限,请参阅 Knowledge Catalog IAM 角色。

以请求者身份管理请求

作为请求者,您可以发起变更请求,例如请求访问数据产品或提议元数据变更。提交请求后,您可以监控其进度、查看请求详情、修改待处理请求的详细信息,或在审批人处理请求之前删除处于 NEW 状态的请求。

查看撰写的请求

如需查看您创建的请求或检查特定请求,请执行以下操作:

控制台

  1. 在 Google Cloud 控制台中,前往 Knowledge Catalog 治理工作流页面。

    前往“治理工作流”

  2. 点击我的请求标签页,查看过去和待处理请求的列表。

REST

如需列出您撰写的请求,请使用 changeRequests.list 方法:

curl -X GET \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  "https://dataplex.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/changeRequests?filter=author=USER_EMAIL"

如需查看特定请求,请使用 changeRequests.get 方法:

curl -X GET \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  "https://dataplex.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/changeRequests/CHANGE_REQUEST_ID"

替换以下内容:

  • PROJECT_ID:您的Google Cloud 项目的 ID。
  • LOCATION:资源所在的区域,例如 us-central1。
  • USER_EMAIL:您的电子邮件地址。
  • CHANGE_REQUEST_ID:请求的唯一 ID。

对于批量元数据更改请求,请检查响应字段,以确定请求的创建方式:

  • 用户提交的请求:author 是请求者的电子邮件地址,batchChangeMetadataRequest.description.job 未设置。
  • 富化代理生成的请求:author 是富化代理服务账号,batchChangeMetadataRequest.description.job.name 设置为富化运行 ID。

修改请求

当待处理请求处于 NEW 或 FAILED 状态时,您可以使用 REST API 更新该请求。更新处于 FAILED 状态的请求会将其状态重置为 NEW,以便审批人可以再次审核。谁可以修改元数据更改请求取决于该请求的创建方式:

  • 用户提交的请求:只有原始作者可以发送 PATCH 请求来更新理由或请求载荷。
  • 由丰富代理生成的请求:除了作者之外,审核者和审批者还可以在请求处于 NEW 或 FAILED 状态时发送 PATCH 请求,以精选批次,例如修改建议的切面值或从 changes 数组中移除项。author 字段仍为富化代理服务账号。

如需更新待处理的更改请求,请使用 changeRequests.patch 方法。

如需仅更新请求理由,请发送以下 PATCH 请求:

curl -X PATCH \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "justification": "NEW_JUSTIFICATION"
  }' \
  "https://dataplex.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/changeRequests/CHANGE_REQUEST_ID?updateMask=justification"

如需更新批量元数据更改请求的载荷,请发送以下 PATCH 请求:

curl -X PATCH \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "justification": "NEW_JUSTIFICATION",
    "batchChangeMetadataRequest": {
      "name": "projects/PROJECT_ID/locations/LOCATION/entryGroups/ENTRY_GROUP_ID",
      "changes": [
        {
          "updateEntryRequest": {
            "entry": {
              "name": "projects/PROJECT_ID/locations/LOCATION/entryGroups/ENTRY_GROUP_ID/entries/EXISTING_ENTRY_ID",
              "aspects": {
                "ASPECT_PROJECT_ID.ASPECT_LOCATION.ASPECT_TYPE_ID": {
                  "data": {
                    "ASPECT_FIELD_NAME": "UPDATED_ASPECT_FIELD_VALUE"
                  }
                }
              }
            },
            "updateMask": "aspects",
            "aspectKeys": [
              "ASPECT_PROJECT_ID.ASPECT_LOCATION.ASPECT_TYPE_ID"
            ]
          }
        }
      ]
    }
  }' \
  "https://dataplex.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/changeRequests/CHANGE_REQUEST_ID?updateMask=batchChangeMetadataRequest.changes,justification"

替换以下内容:

  • PROJECT_ID:您的Google Cloud 项目的 ID。
  • LOCATION:变更请求所在的区域,例如 us-central1。
  • CHANGE_REQUEST_ID:变更请求的唯一 ID。
  • NEW_JUSTIFICATION:变更请求的更新理由。
  • ENTRY_GROUP_ID:目标条目群组的 ID。
  • EXISTING_ENTRY_ID:更新后的批量载荷中条目的 ID。
  • ASPECT_PROJECT_ID:包含切面类型的项目的 ID。
  • ASPECT_LOCATION:切面类型的位置,例如 us-central1 或 global。
  • ASPECT_TYPE_ID:要更新的切面类型的 ID。
  • ASPECT_FIELD_NAME:要更新的切面字段的名称。
  • UPDATED_ASPECT_FIELD_VALUE:切面字段的更新值。

删除请求

作为请求者,您只能删除处于 NEW 状态的请求。如需删除请求,请执行以下操作:

控制台

  1. 在 Google Cloud 控制台中,前往 Knowledge Catalog 治理工作流页面。

    前往“治理工作流”

  2. 点击我的请求标签页。

  3. 找到包含要删除的请求的行。如有必要,请应用过滤条件来隔离条目。

  4. 点击 操作,然后点击删除。

REST

如需删除请求,请使用 changeRequests.delete 方法。

例如,发送以下 DELETE 请求:

curl -X DELETE \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  "https://dataplex.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/changeRequests/CHANGE_REQUEST_ID"

替换以下内容:

  • PROJECT_ID:您的Google Cloud 项目的 ID。
  • LOCATION:资源所在的区域,例如 us-central1。
  • CHANGE_REQUEST_ID:要删除的请求的唯一 ID。

以审批者身份管理请求

作为审批者,您需要评估并处理针对您的数据资源提交的待处理请求。

通知

当您批准或拒绝请求时,Knowledge Catalog 会处理该决定,并向请求者发送一封包含您的审核意见的电子邮件通知。对于批量请求,Knowledge Catalog 会在更新流程完成后发送邮件通知。如果作者是服务账号,Knowledge Catalog 不会发送通知。

审批注意事项

您无法批准您自己的请求。审批人必须是不同的主体,并且拥有提议的更改所需的所有写入和类型使用权限。不过,丰富代理可以根据置信度自动批准自己的请求,也可以将请求提交给审批者进行审核。对于由富化代理生成的批量元数据更改请求,您可以在请求处于 NEW 或 FAILED 状态时修改请求载荷,然后再批准该请求。

查看待处理请求

如需查看待审核的请求,请执行以下操作:

控制台

  1. 在 Google Cloud 控制台中,前往 Knowledge Catalog 治理工作流页面。

    前往“治理工作流”

  2. 点击待审批标签页,查看待审核的请求。您可以按资源类型、请求类型或日期过滤请求。

REST

如需列出特定项目和位置中待审核的请求,请使用 changeRequests.list 方法。

例如,发送以下 GET 请求:

curl -X GET \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  "https://dataplex.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/changeRequests?filter=state=NEW"

替换以下内容:

  • PROJECT_ID:您的Google Cloud 项目的 ID。
  • LOCATION:资源所在的区域,例如 us-central1。

在返回的列表中,批量元数据更改请求的 changeType 字段设置为 BATCH_CHANGE_METADATA。由富化代理运行创建的请求在 batchChangeMetadataRequest.description.job.name 中包含富化运行 ID。

待处理批量更改请求的示例响应

{
"changeRequests": [
  {
    "name": "projects/my-project/locations/us-central1/changeRequests/b326114f-472b-457d-81e8-98b8ad89c608",
    "uid": "b326114f-472b-457d-81e8-98b8ad89c608",
    "justification": "Enrichment Agent Proposal: Batch Metadata Change",
    "author": "enrichment-agent@my-project.iam.gserviceaccount.com",
    "state": "NEW",
    "resource": "//dataplex.googleapis.com/projects/my-project/locations/us-central1/entryGroups/my-entry-group",
    "changeType": "BATCH_CHANGE_METADATA",
    "batchChangeMetadataRequest": {
      "name": "projects/my-project/locations/us-central1/entryGroups/my-entry-group",
      "description": {
        "job": {
          "name": "projects/123456789012/locations/us-central1/enrichmentTasks/my-enrichment-task/runs/55199e83-1a1e-4837-bb8c-c402c6bee641"
        }
      },
      "changes": [
        {
          "createEntryRequest": {
            "parent": "projects/my-project/locations/us-central1/entryGroups/my-entry-group",
            "entryId": "new-entry-id",
            "entry": {
              "entryType": "projects/my-project/locations/us-central1/entryTypes/my-entry-type"
            }
          }
        }
      ]
    }
  }
]
}

批准请求

如需批准请求,请执行以下操作:

控制台

  1. 在 Google Cloud 控制台中,前往 Knowledge Catalog 治理工作流页面。

    前往“治理工作流”

  2. 点击待批准标签页。

  3. 找到包含您要批准的请求的行。

  4. 点击 操作,然后点击批准。

REST

如需批准请求,请使用 changeRequests.approve 方法。

例如,发送以下 POST 请求:

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{}' \
  "https://dataplex.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/changeRequests/CHANGE_REQUEST_ID:approve"

替换以下内容:

  • PROJECT_ID:您的Google Cloud 项目的 ID。
  • LOCATION:资源所在的区域,例如 us-central1。
  • CHANGE_REQUEST_ID:您要批准的变更请求的唯一 ID。

当您批准用户或丰富代理提交的批量元数据更改请求时,Knowledge Catalog 会同步验证您的 IAM 权限和载荷规则:

  • 如果验证成功,该方法会返回处于 APPLYING 状态的 ChangeRequest,同时 Knowledge Catalog 会在后台执行批处理:
  {
    "name": "projects/my-project/locations/us-central1/changeRequests/b326114f-472b-457d-81e8-98b8ad89c608",
    "uid": "b326114f-472b-457d-81e8-98b8ad89c608",
    "justification": "Proposing new entry using RequestBatchMetadataChange",
    "author": "requester@example.com",
    "state": "APPLYING",
    "resource": "//dataplex.googleapis.com/projects/my-project/locations/us-central1/entryGroups/my-entry-group",
    "approver": "approver@example.com",
    "changeType": "BATCH_CHANGE_METADATA",
    "batchChangeMetadataRequest": {
      "name": "projects/my-project/locations/us-central1/entryGroups/my-entry-group",
      "changes": [
        {
          "createEntryRequest": {
            "parent": "projects/my-project/locations/us-central1/entryGroups/my-entry-group",
            "entryId": "new-entry-id",
            "entry": {
              "entryType": "projects/my-project/locations/us-central1/entryTypes/my-entry-type"
            }
          }
        }
      ]
    }
  }
  ```

* If synchronous payload validation fails (for example, with an
`INVALID_ARGUMENT` or `NOT_FOUND` error), the request immediately
transitions to the `FAILED` state instead of `APPLYING`.
* If permission validation fails with a `PERMISSION_DENIED` error, the request
remains in the `NEW` state.

After background execution finishes, poll `changeRequests.get` to check the
final state (`APPROVED` or `FAILED`). If any changes in the batch fail,
`batchChangeMetadataResponse.failedRequests` lists each failed change by its
position in `changes` (starting at `0`) along with the error details:

```json
{
  "name": "projects/my-project/locations/us-central1/changeRequests/b326114f-472b-457d-81e8-98b8ad89c608",
  "state": "APPROVED",
  "changeType": "BATCH_CHANGE_METADATA",
  "batchChangeMetadataResponse": {
    "failedRequests": {
      "1": {
        "code": 5,
        "message": "Entry not found."
      }
    }
  }
}

如需详细了解请求状态,请参阅治理工作流处理路径。

拒绝请求

如需拒绝请求,请执行以下操作:

控制台

  1. 在 Google Cloud 控制台中,前往 Knowledge Catalog 治理工作流页面。

    前往“治理工作流”

  2. 点击待批准标签页。

  3. 找到包含您要拒绝的请求的行。

  4. 点击 操作,然后点击拒绝。

  5. 在对话框中,输入拒绝理由。

  6. 点击拒绝进行确认。

REST

如需拒绝请求,请使用 changeRequests.reject 方法。

例如,发送以下 POST 请求:

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "comment": "REJECTION_REASON"
  }' \
  "https://dataplex.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/changeRequests/CHANGE_REQUEST_ID:reject"

替换以下内容:

  • PROJECT_ID:您的Google Cloud 项目的 ID。
  • LOCATION:资源所在的区域,例如 us-central1。
  • CHANGE_REQUEST_ID:要拒绝的变更请求的唯一 ID。
  • REJECTION_REASON:拒绝的理由。

提供明确的拒绝评论有助于请求者了解决策,并在重新提交请求之前优化其理由。

以工作流管理员身份管理请求

作为工作流管理员,您可以监督整个组织的治理请求、配置审批者电子邮件通知、审核审批历史记录,以及删除处于任何状态的请求。

配置审批者电子邮件通知

您可以在条目组或业务术语库中配置审批人电子邮件通知,最多可指定 10 个电子邮件地址,以便在针对该资源创建单个或批量元数据更改请求时自动通知这些地址。

如需在条目组上配置通知,请使用 entryGroups.patch 方法:

curl -X PATCH \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "changeRequestConfig": {
      "approverEmails": [
        "APPROVER_EMAIL_1",
        "APPROVER_EMAIL_2"
      ]
    }
  }' \
  "https://dataplex.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/entryGroups/ENTRY_GROUP_ID?updateMask=changeRequestConfig"

如需在业务术语库中配置通知,请使用 glossaries.patch 方法:

curl -X PATCH \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "changeRequestConfig": {
      "approverEmails": [
        "APPROVER_EMAIL_1",
        "APPROVER_EMAIL_2"
      ]
    }
  }' \
  "https://dataplex.googleapis.com/v1/projects/PROJECT_ID/locations/global/glossaries/GLOSSARY_ID?updateMask=changeRequestConfig"

替换以下内容:

  • PROJECT_ID:您的Google Cloud 项目的 ID。
  • LOCATION:条目组的位置,例如 us-central1 或 global。
  • ENTRY_GROUP_ID:条目组的 ID。
  • GLOSSARY_ID:业务术语库的 ID。
  • APPROVER_EMAIL_1、APPROVER_EMAIL_2:创建变更请求时要通知的潜在审批者的邮箱。您最多可以指定 10 个邮箱。

查看所有请求并跟踪审批记录

您可以查看各种状态下的所有有效请求和历史请求,以监控工作流并审核数据产品访问权限和元数据更改:

控制台

  1. 在 Google Cloud 控制台中,前往 Knowledge Catalog 治理工作流页面。

    前往“治理工作流”

  2. 点击审批日志标签页,查看已完成的审批、拒绝和历史审核跟踪记录。

REST

如需列出特定项目和位置中的所有活跃请求和历史请求,请使用 changeRequests.list 方法。

例如,发送以下 GET 请求:

curl -X GET \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  "https://dataplex.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/changeRequests"

替换以下内容:

  • PROJECT_ID:您的Google Cloud 项目的 ID。
  • LOCATION:资源所在的区域,例如 us-central1。

删除处于任何状态的请求

与只能删除处于 NEW 状态的请求的请求者不同,工作流管理员可以使用 Google Cloud 控制台或 changeRequests.delete 方法删除处于任何状态的请求。如需查看相关说明,请参阅删除请求。

后续步骤