部署工作負載


工作負載運算子可以將選項傳遞至 Confidential Space 工作負載 VM,以決定 VM 的執行前行為。雖然部分標記有不會變更的必要值,但您仍須做出下列選擇:

以下範例會根據最新的正式版 Confidential Space 映像檔,在 us-west1-b 可用區建立機密 VM,並執行名為 WORKLOAD_CONTAINER_NAME 的 Docker 容器:

gcloud compute instances create workload-vm-name \
    --confidential-compute-type=CONFIDENTIAL_COMPUTING_TECHNOLOGY \
    --machine-type=MACHINE_TYPE_NAME \
    --maintenance-policy=MAINTENANCE_POLICY \
    --shielded-secure-boot \
    --image-project=confidential-space-images \
    --image-family=IMAGE_FAMILY \
    --metadata="^~^tee-image-reference=us-docker.pkg.dev/WORKLOAD_AUTHOR_PROJECT_ID/REPOSITORY_NAME/WORKLOAD_CONTAINER_NAME:latest" \
    --service-account=WORKLOAD_SERVICE_ACCOUNT_NAME@WORKLOAD_OPERATOR_PROJECT_ID.iam.gserviceaccount.com \
    --scopes=cloud-platform \
    --zone=us-west1-b

下表詳細說明本範例中使用的選項。

旗標 說明
--confidential-compute-type

這是必要旗標,告知 Compute Engine 在建立機密 VM 執行個體時,要使用哪種機密運算技術。

CONFIDENTIAL_COMPUTING_TECHNOLOGY 替換為下列任一值:

  • SEV
  • TDX

機密運算技術應與您選取的映像檔系列相符。

--machine-type (選用步驟) 指定機密 VM 機器類型名稱。如要瞭解支援 AMD SEV 和 Intel TDX 的機器類型,請參閱「 支援的設定」。
--maintenance-policy 如果是使用 SEV 的 N2D 機器類型,請將此值設為 MIGRATE,以支援即時遷移。對於所有其他機型,請將這個值設為 TERMINATE,因為這些機型 不支援即時遷移
--shielded-secure-boot 這是必要旗標,告知 Compute Engine 為執行個體使用 安全啟動
--image-project=confidential-space-images 這是必要旗標,告知 Compute Engine 在 confidential-space-images 專案中尋找 Confidential Space 映像檔

--image-family

這是必要旗標,告知 Compute Engine 使用最新的 Confidential Space 映像檔,該映像檔屬於 confidential-space-images 專案。

如要使用正式版映像檔處理機密資料,請將 IMAGE_FAMILY 換成 confidential-space

如要使用偵錯映像檔進行 監控和偵錯,請將 IMAGE_FAMILY 替換為 confidential-space-debug

使用的映像檔系列應與所選的機密運算技術相符。

--metadata

這是必要旗標,透過傳遞變數,變更 Confidential Space VM 行為。tee-image-reference 鍵和值為必要項目,可告知 VM 執行個體在指定的 Confidential Space 映像檔上執行指定的 Docker 容器。

如需可用的鍵/值組合,請參閱「中繼資料變數」。

--service-account (選用步驟) 附加至執行工作負載的 VM 執行個體,並模擬其他專案中附加至工作負載身分集區的服務帳戶。服務帳戶如未指定,則會使用預設的 Compute Engine 服務帳戶。
--scopes=cloud-platform 這是必要旗標,設定 存取權範圍cloud-platform 範圍是 大多數 Google Cloud 服務的 OAuth 範圍,可讓 VM 與認證驗證器通訊。
--zone

這是必要旗標,VM 執行個體執行的可用區。機密空間需要下列服務,這些服務僅在特定地區提供:

附加的服務帳戶

服務帳戶必須附加至工作負載的 Confidential VM,才能執行工作負載。服務帳戶必須按照下列方式設定:

  • 具備下列角色:

  • 具備資料協作者儲存機密資料的位置讀取權限,例如 Cloud Storage 值區或 BigQuery 資料表。

  • 擁有工作負載應輸出資料的位置 (例如 Cloud Storage 值區) 的寫入權限。資料協作者應具備這個位置的讀取權限。

此外,資料協作者和工作負載運算子還需要設定下列項目:

  • 資料協作者必須將服務帳戶新增至工作負載身分集區供應商,做為屬性條件:

    'WORKLOAD_SERVICE_ACCOUNT_NAME@DATA_COLLABORATOR_PROJECT_ID.iam.gserviceaccount.com' in assertion.google_service_accounts
    
  • 工作負載運算子需要 roles/iam.serviceAccountUser 角色,才能模擬服務帳戶。這樣一來,他們就能將該磁碟掛接到工作負載 VM,以便執行工作負載。

中繼資料變數

建立 VM 時,您可以將變數傳遞至 --metadata 選項,變更 Confidential Space 工作負載 VM 的行為。

如要傳遞多個變數,請先在 --metadata 值加上 ^~^ 前置字元,設定分隔符號。這會將分隔符號設為 ~,因為變數值中會使用 ,

例如:

metadata="^~^tee-restart-policy=Always~tee-image-reference=us-docker.pkg.dev/WORKLOAD_AUTHOR_PROJECT_ID/REPOSITORY_NAME/WORKLOAD_CONTAINER_NAME:latest"

下表詳細列出可為工作負載 VM 設定的中繼資料變數。

中繼資料鍵 類型 說明和值

tee-image-reference

互動對象:

字串

這是必要旗標,這會指向工作負載容器的位置。

範例
tee-image-reference=us-docker.pkg.dev/WORKLOAD_AUTHOR_PROJECT_ID/REPOSITORY_NAME/WORKLOAD_CONTAINER_NAME:latest

tee-added-capabilities

互動對象:

JSON 字串陣列

為工作負載容器新增其他 Linux 功能

範例
tee-added-capabilities="[\"CAP_SYS_ADMIN\", \"CAP_SYS_CHROOT\"]"

tee-cgroup-ns

互動對象:

布林值

預設值為 false。設為 true 時,會在 /sys/fs/cgroup 啟用命名空間 cgroup 掛接。

範例
tee-cgroup-ns=true

tee-cmd

互動對象:

JSON 字串陣列

覆寫工作負載容器 Dockerfile 中指定的 CMD 指令。

範例
tee-cmd="[\"params1\", \"params2\"]"

tee-container-log-redirect

互動對象:

定義的字串

將工作負載容器的輸出內容 STDOUTSTDERR 傳送至 Cloud Logging 或序列埠主控台,位於 confidential-space-launcher 欄位下方。

有效值如下:

  • false:(預設) 不會記錄任何內容。
  • true:輸出至序列埠主控台和 Cloud Logging。
  • cloud_logging:僅輸出至 Cloud Logging。
  • serial:僅輸出至序列主控台。

序列主控台中的記錄量過高可能會影響工作負載效能。

範例
tee-container-log-redirect=true

tee-dev-shm-size-kb

整數

設定 /dev/shm 共用記憶體掛接的大小 (以 kB 為單位)。

範例
tee-dev-shm-size-kb=65536

tee-env-ENVIRONMENT_VARIABLE_NAME

互動對象:

字串

設定工作負載容器中的環境變數。工作負載作者也必須將環境變數名稱新增至 allow_env_override 啟動政策,否則系統不會設定這些變數。

範例
tee-env-example-env-1='value-1'~tee-env-example-env-2='value-2'

tee-impersonate-service-accounts

互動對象:

字串

工作負載運算子可模擬的服務帳戶清單。工作負載運算子必須 獲准模擬服務帳戶

您可以列出多個服務帳戶,並以半形逗號分隔。

範例
tee-impersonate-service-accounts=SERVICE_ACCOUNT_NAME_1@WORKLOAD_OPERATOR_PROJECT_ID.iam.gserviceaccount.com,SERVICE_ACCOUNT_NAME_2@WORKLOAD_OPERATOR_PROJECT_ID.iam.gserviceaccount.com

tee-monitoring-memory-enable

互動對象:

布林值

預設值為 false。設為 true 時,會啟用記憶體用量監控功能。機密 VM 收集的指標屬於 guest/memory/bytes_used 類型,可在 Cloud LoggingMetrics Explorer 中查看。

範例
tee-monitoring-memory-enable=true

tee-mount

互動對象:

字串

以半形分號分隔的掛接定義清單。掛接定義是由以半形逗號分隔的鍵/值組合清單組成,需要 typesourcedestinationdestination 必須是絕對路徑,且 type/source 必須是 tmpfs

範例
type=tmpfs,source=tmpfs,destination=/tmp/tmpfs,size=12345;type=tmpfs,source=tmpfs,destination=/run/workload

tee-restart-policy

互動對象:

定義的字串

工作負載停止時,容器啟動器的重新啟動政策

有效值如下:

  • Never (預設)
  • Always
  • OnFailure

這個變數僅適用於正式版機密空間映像檔。

範例
tee-restart-policy=OnFailure

tee-signed-image-repos

互動對象:

字串

以半形逗號分隔的容器存放區清單,用於儲存 Sigstore Cosign 產生的簽章。

範例
tee-signed-image-repos=us-docker.pkg.dev/projectA/repo/example,us-docker.pkg.dev/projectB/repo/example,us-docker.pkg.dev/projectC/repo/example

資源調度

如要為正式環境的 Confidential Space 工作負載調度資源並確保高可用性,請參閱「代管執行個體群組」。