透過管理工作流程管理變更要求

本文說明要求者、核准者和工作流程管理員,如何在 Knowledge Catalog (舊稱 Dataplex Universal Catalog) 管理治理要求。

事前準備

如要使用控管工作流程,請確認您已啟用必要的 API,且核准者和管理員具備必要的 Identity and Access Management (IAM) 角色和權限。

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

啟用 API 所需的角色

您必須具備 serviceusage.services.enable 權限,才能啟用 API。如果您建立了專案,可能已透過擁有者角色 (roles/owner) 取得這項權限。否則,您可以透過 Service Usage 管理員角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。

啟用 API

必要的角色

如要取得管理治理要求的權限,請要求管理員在專案中授予您下列 IAM 角色:

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

您或許也能透過自訂角色或其他預先定義的角色,取得必要權限。

如要進一步瞭解角色和權限,請參閱「Knowledge Catalog IAM 角色」。

以要求者身分管理要求

要求者可以提出變更要求,例如要求存取資料產品或提議變更中繼資料。提交要求後,您可以監控進度、查看要求詳細資料、編輯待處理要求的詳細資料,或在核准者採取行動前刪除處於 NEW 狀態的要求。

查看建立的要求

如要查看您建立的要求或檢查特定要求,請按照下列步驟操作:

控制台

  1. 前往 Google Cloud 控制台的 Knowledge Catalog「Governance Workflows」(管理工作流程) 頁面。

    前往「Governance Workflows」(管理工作流程)

  2. 按一下「My Requests」(我的要求) 分頁標籤,即可查看過去和待處理的要求清單。

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「Governance Workflows」(管理工作流程) 頁面。

    前往「Governance Workflows」(管理工作流程)

  2. 按一下「我的要求」分頁標籤。

  3. 找出要刪除的要求所在的資料列。如有需要,請套用篩選器來找出該項目。

  4. 按一下 「Actions」(動作),然後按一下「Delete」(刪除)。

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「Governance Workflows」(管理工作流程) 頁面。

    前往「Governance Workflows」(管理工作流程)

  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「Governance Workflows」(管理工作流程) 頁面。

    前往「Governance Workflows」(管理工作流程)

  2. 按一下「待核准」分頁標籤。

  3. 找到要核准的要求所在的資料列。

  4. 按一下 「Actions」(動作),然後點選「Approve」(核准)。

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「Governance Workflows」(管理工作流程) 頁面。

    前往「Governance Workflows」(管理工作流程)

  2. 按一下「待核准」分頁標籤。

  3. 找到要拒絕的要求所在的資料列。

  4. 按一下 「Actions」(動作),然後按一下「Reject」(拒絕)。

  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「Governance Workflows」(管理工作流程) 頁面。

    前往「Governance Workflows」(管理工作流程)

  2. 按一下「Approval Log」(核准記錄) 分頁標籤,即可查看已完成的核准、拒絕和歷來稽核追蹤記錄。

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 方法,刪除任何狀態的要求。如需操作說明,請參閱「刪除要求」。

後續步驟