使用 VPC Service Controls 保護 Cron 工作

VPC Service Controls 是一項 Google Cloud 功能,可用來設定安全 perimeter 以防範資料遭竊。本指南說明如何在 VPC Service Controls 範圍中納入 Cloud Scheduler 工作。

限制

VPC Service Controls 對 Cloud Scheduler 的支援有以下限制。

強制執行的動作

系統會在下列動作中強制執行 VPC Service Controls:

  • 建立 Cloud Scheduler 工作
  • Cloud Scheduler 工作更新

為什麼這一點很重要?

由於 VPC Service Controls 只會在建立及更新作業時強制執行,因此如果您在將 Cloud Scheduler 新增至 VPC Service Controls 服務範圍前建立作業,VPC Service Controls 不會自動強制執行。即使作業目標不屬於 VPC Service Controls 範圍,或不是支援的目標,作業仍會繼續執行。如要對所有 Cloud Scheduler 工作強制執行 VPC Service Controls,請按照下列步驟操作:

支援的目標

Cloud Scheduler 與 VPC Service Controls 整合後,可支援下列目標。如果列出 HTTP 端點,則支援這些端點;不過,支援任意 HTTP 端點。

  • Cloud Run 服務:必須使用標準預設 run.app 網域。系統不支援自訂網域和自訂 DNS,否則會導致工作建立失敗。
  • Cloud Run 函式:必須使用標準預設 cloudfunctions.netrun.app 網域。不支援自訂網域和自訂 DNS,否則會導致工作建立失敗。
  • Google Cloud 符合 VPC Service Controls 規範的 API (處於搶先版或正式版) 可以與 Cloud Scheduler 工作位於不同的 Google Cloud 專案。

    • 您必須使用全域端點格式 (https://SERVICE.googleapis.com)。系統會拒絕區域端點 (例如 *.rep.googleapis.comLOCATION.SERVICE.googleapis.comREGION-SERVICE.googleapis.com) 和 mTLS 端點 (*.mtls.googleapis.com)。
    • 如果是 Cloud Run 工作,支援的 URI 格式如下: https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/jobs/JOB_NAME:run

      如要瞭解 Cloud Run 服務和工作資源之間的差異,請參閱「服務、工作、worker 集區和執行個體:四種執行程式碼的方式」。

  • Pub/Sub

不支援的目標

如果 Cloud Scheduler 是 VPC Service Controls 範圍內的受限服務,任何嘗試建立或更新工作 (使用不支援的目標) 的作業都會失敗,並顯示 TARGET_TYPE_NOT_PERMITTED_FOR_VPC 錯誤代碼。使用模擬測試模式時,這項動作不會產生違規記錄。

無伺服器端點不支援自訂網域 (例如外部應用程式負載平衡器或自訂 DNS) 做為目標。由於缺少範圍內憑證,即使是註冊範圍前建立的現有作業,目的地服務也會封鎖對自訂網域的執行階段呼叫。

為避免工作負載遭到意外封鎖,請先刪除所有目標不受支援的作業,或目標位於您打算使用的 VPC Service Controls 範圍外的作業,再將範圍移至強制模式

刪除不符規定的工作

(建議使用) 刪除目標為下列項目的 Cloud Scheduler 工作:

  • 不支援 (請參閱「支援的目標」)
  • 您打算使用的 VPC Service Controls 範圍外

如需刪除工作的操作說明,請參閱刪除工作

如果您未在將 Cloud Scheduler 新增至 VPC Service Controls 範圍前刪除這些工作,工作會繼續執行,但系統不會對這些工作強制執行 VPC Service Controls。請參閱本文「強制執行的動作」一節。

舉例來說,如果您有以不支援的目標 (例如任意 HTTP 端點) 為目標的 Cloud Scheduler 工作,在您將 Cloud Scheduler 新增至 VPC Service Controls 範圍後,該工作會繼續執行,但不會受到 VPC Service Controls 保護。如果現有作業的目標位於 VPC Service Controls 範圍外,也會發生相同情況。不過,如果現有工作以 perimeter 內的無伺服器自訂網域為目標,目的地服務會封鎖執行階段叫用。

新增必要的 IAM 角色

這是必要旗標,如要使用 VPC Service Controls,Cloud Scheduler 服務帳戶必須具備 Cloud Scheduler Service Agent 身分與存取權管理角色。系統會自動為您的專案建立 Cloud Scheduler 服務帳戶。如要確認或授予 Cloud Scheduler 服務代理 IAM 角色,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「IAM」

    前往「IAM」(身分與存取權管理) 頁面

  2. 勾選「包含 Google 提供的角色授予項目」核取方塊。

  3. 在篩選器中輸入「Cloud Scheduler Service Account」(Cloud Scheduler 服務帳戶),然後選取這個主體。

  4. 查看「Cloud Scheduler 服務帳戶」主體的「角色」欄。如果列出下列角色,即可繼續:

    • Cloud Scheduler 服務代理

    如果未列出 Cloud Scheduler 服務帳戶角色,請按一下「編輯」圖示,然後將「Cloud Scheduler 服務代理人」角色授予 Cloud Scheduler 服務帳戶主體。

指定 VPC Service Controls perimeter

這是必要旗標,您可以透過現有或新建的邊界,保護支援目標的 Cloud Scheduler 工作。這兩種做法都能讓您指定要限制的服務。 指定 Cloud Scheduler API

  • 現有範圍:如要更新現有的 VPC Service Controls 範圍,將 Cloud Scheduler 納入其中,請按照更新服務範圍的步驟操作。

  • 新範圍:如要為 Cloud Scheduler 建立新範圍,請按照建立服務範圍的步驟操作。

對現有工作強制執行 VPC Service Controls

(建議使用) 如要對在將 Cloud Scheduler 新增至 VPC Service Controls 範圍前建立的 Cloud Scheduler 工作強制執行 VPC Service Controls,請對該工作執行 update。您不必變更工作,但必須執行更新,VPC Service Controls 才會套用至工作和日後執行作業。

您可以使用 Google Cloud 控制台 (選取工作並按一下「編輯」)、API 或 gcloud CLI,更新工作。

如要使用 gcloud CLI 對現有作業強制執行 VPC Service Controls,請執行下列指令:

HTTP 目標

gcloud scheduler jobs update http JOB_ID

JOB_ID 替換為工作 ID。

Pub/Sub 目標

gcloud scheduler jobs update pubsub JOB_ID

JOB_ID 替換為工作 ID。