Cloud Run 沙箱提供快速、安全且獨立的環境,可在工作站集區中執行代理程式工作流程、執行不受信任的酬載,以及處理獨立事件。沙箱經過高度最佳化,可降低延遲,並與容器在同一個執行個體中執行,共用分配到的 CPU 和記憶體。
本頁面說明如何在容器中設定沙箱。如要瞭解如何編寫程式碼,透過 CLI 與沙箱互動,請參閱「在 Cloud Run 中執行程式碼」。
事前準備
- 登入 Google Cloud 帳戶。如果您是 Google Cloud新手,歡迎 建立帳戶,親自評估產品在實際工作環境中的成效。新客戶還能獲得價值 $300 美元的免費抵免額,可用於執行、測試及部署工作負載。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- 安裝並初始化 gcloud CLI。
- 部署 Cloud Run worker 集區。
必要的角色
如要取得設定及部署 Cloud Run worker 集區所需的權限,請要求管理員授予您下列 IAM 角色:
- Cloud Run 開發人員 (
roles/run.developer) 在 Cloud Run worker 集區上 - 服務身分上的服務帳戶使用者 (
roles/iam.serviceAccountUser)
如需與 Cloud Run 相關聯的 IAM 角色和權限清單,請參閱「Cloud Run IAM 角色」和「Cloud Run IAM 權限」。如果 Cloud Run 工作人員集區與Google Cloud API (例如 Cloud 用戶端程式庫) 介接,請參閱服務身分設定指南。 如要進一步瞭解如何授予角色,請參閱「部署權限」和「管理存取權」。
啟用沙箱
變更任何設定都會建立新的修訂版本。除非您明確做出更新,改變這項設定,否則後續的修訂版本也會自動取得這個設定。
如要在 Cloud Run worker 集區中啟用沙箱,請使用 Google Cloud CLI 或 YAML 設定:
gcloud
如要部署或更新工作站集區,請指定 --sandbox-launcher 旗標:
如要部署新的工作站集區,請執行下列指令:
gcloud beta run worker-pools deploy WORKER_POOL --image IMAGE_URL --sandbox-launcher
更改下列內容:
- WORKER_POOL:Cloud Run worker 集區的名稱。
IMAGE_URL:包含工作站集區的容器映像檔參照,例如us-docker.pkg.dev/cloudrun/container/worker-pool:latest
如要更新現有工作站集區,請執行下列指令:
gcloud beta run worker-pools update WORKER_POOL --sandbox-launcher
YAML
如要建立新的工作站集區,請略過這個步驟。 如要更新現有工作站集區,請下載 YAML 設定:
gcloud run worker-pools describe WORKER_POOL --format export > worker-pool.yaml
更新 YAML 檔案,在容器設定中加入設為
true的sandboxLauncher屬性:apiVersion: run.googleapis.com/v1 kind: WorkerPool metadata: name: WORKER_POOL annotations: run.googleapis.com/launch-stage: BETA spec: template: spec: containers: - name: CONTAINER image: IMAGE_URL sandboxLauncher: true更改下列內容:
- WORKER_POOL:Cloud Run worker 集區的名稱。
- CONTAINER:容器名稱。
IMAGE_URL:包含工作站集區的容器映像檔參照,例如us-docker.pkg.dev/cloudrun/container/worker-pool:latest
使用下列指令建立或更新工作站集區:
gcloud run worker-pools replace worker-pool.yaml
如果存在
worker-pool.yaml檔案,gcloud run worker-pools replace指令預設會使用該檔案。
沙箱會共用分配給主機容器的 CPU 和記憶體。請確認主要容器的 CPU 和記憶體上限,可同時容納應用程式和您執行的所有有效沙箱。
停用沙箱
如要停用在工作站集區中啟動沙箱的功能,請使用 Google Cloud CLI 或 YAML 設定:
gcloud
執行下列指令,使用 --no-sandbox-launcher 旗標更新工作站集區:
gcloud beta run worker-pools update WORKER_POOL --no-sandbox-launcher
將 WORKER_POOL 替換為工作站集區的名稱。
YAML
如要建立新的工作站集區,請略過這個步驟。 如要更新現有工作站集區,請下載 YAML 設定:
gcloud run worker-pools describe WORKER_POOL --format export > worker-pool.yaml
更新 YAML 檔案,移除容器設定中的
sandboxLauncher屬性:apiVersion: run.googleapis.com/v1 kind: WorkerPool metadata: name: WORKER_POOL spec: template: spec: containers: - name: CONTAINER image: IMAGE_URL更改下列內容:
- WORKER_POOL:Cloud Run worker 集區的名稱。
- CONTAINER:容器名稱。
IMAGE_URL:包含工作站集區的容器映像檔參照,例如us-docker.pkg.dev/cloudrun/container/worker-pool:latest
使用下列指令建立或更新工作站集區:
gcloud run worker-pools replace worker-pool.yaml
如果存在
worker-pool.yaml檔案,gcloud run worker-pools replace指令預設會使用該檔案。
查看沙箱設定
如要查看 Cloud Run worker 集區目前的沙箱設定:
控制台
前往 Google Cloud 控制台的 Cloud Run「工作站集區」頁面:
按一下工作站集區,開啟「工作站集區詳細資料」頁面。
點選「修訂版本」分頁標籤。
在「Containers」(容器) 分頁中,找到「Sandbox launcher」(沙箱啟動器) 設定,查看沙箱容器是否已啟用或停用。
gcloud
使用下列指令:
gcloud run worker-pools describe WORKER_POOL
將 WORKER_POOL 替換為工作站集區的名稱。
如要確認已啟用沙箱化容器,請在傳回的設定中找出
sandboxLauncher: true屬性。
如要在工作站集區的沙箱中執行不信任的程式碼,請參閱「在 Cloud Run 中執行程式碼」。