工作負載運算子可以將選項傳遞至 Confidential Space 工作負載 VM,以決定 VM 的執行前行為。雖然部分標記有不會變更的必要值,但您仍須做出下列選擇:
是否使用 AMD SEV 或 Intel TDX 機密運算技術。
需要傳遞哪些 VM 中繼資料變數,包括要執行的工作負載容器映像檔、是否要記錄到 Cloud Logging,以及要設定哪些環境變數等詳細資料。
要附加至 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 執行個體時,要使用哪種機密運算技術。
將
機密運算技術應與您選取的映像檔系列相符。 |
--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 映像檔。 |
|
這是必要旗標,告知 Compute Engine 使用最新的 Confidential Space 映像檔,該映像檔屬於
如要使用正式版映像檔處理機密資料,請將
如要使用偵錯映像檔進行
監控和偵錯,請將 使用的映像檔系列應與所選的機密運算技術相符。 |
--metadata |
這是必要旗標,透過傳遞變數,變更 Confidential Space VM 行為。 如需可用的鍵/值組合,請參閱「中繼資料變數」。 |
--service-account |
(選用步驟) 附加至執行工作負載的 VM 執行個體,並模擬其他專案中附加至工作負載身分集區的服務帳戶。服務帳戶如未指定,則會使用預設的 Compute Engine 服務帳戶。 |
--scopes=cloud-platform |
這是必要旗標,設定
存取權範圍。
cloud-platform 範圍是
大多數 Google Cloud 服務的 OAuth 範圍,可讓 VM 與認證驗證器通訊。
|
--zone |
這是必要旗標,VM 執行個體執行的可用區。機密空間需要下列服務,這些服務僅在特定地區提供: |
附加的服務帳戶
服務帳戶必須附加至工作負載的 Confidential VM,才能執行工作負載。服務帳戶必須按照下列方式設定:
具備下列角色:
roles/confidentialcomputing.workloadUser
產生認證權杖。roles/artifactregistry.reader
,從 Artifact Registry 擷取儲存的工作負載容器映像檔。roles/logging.logWriter
如要將STDOUT
和STDERR
重新導向至 Cloud Logging。
具備資料協作者儲存機密資料的位置讀取權限,例如 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 設定的中繼資料變數。
中繼資料鍵 | 類型 | 說明和值 |
---|---|---|
互動對象:
|
字串 |
這是必要旗標,這會指向工作負載容器的位置。 範例
|
互動對象:
|
JSON 字串陣列 |
為工作負載容器新增其他 Linux 功能。 範例
|
互動對象:
|
布林值 |
預設值為 範例
|
互動對象:
|
JSON 字串陣列 |
覆寫工作負載容器 範例
|
互動對象:
|
定義的字串 |
將工作負載容器的輸出內容 有效值如下:
序列主控台中的記錄量過高可能會影響工作負載效能。 範例
|
|
整數 |
設定 範例
|
互動對象:
|
字串 |
設定工作負載容器中的環境變數。工作負載作者也必須將環境變數名稱新增至
範例
|
互動對象:
|
字串 |
工作負載運算子可模擬的服務帳戶清單。工作負載運算子必須 獲准模擬服務帳戶。 您可以列出多個服務帳戶,並以半形逗號分隔。 範例
|
互動對象:
|
布林值 |
預設值為 範例
|
互動對象:
|
字串 |
以半形分號分隔的掛接定義清單。掛接定義是由以半形逗號分隔的鍵/值組合清單組成,需要 範例
|
互動對象:
|
定義的字串 |
工作負載停止時,容器啟動器的重新啟動政策 有效值如下:
這個變數僅適用於正式版機密空間映像檔。 範例
|
互動對象:
|
字串 |
以半形逗號分隔的容器存放區清單,用於儲存 Sigstore Cosign 產生的簽章。 範例
|
資源調度
如要為正式環境的 Confidential Space 工作負載調度資源並確保高可用性,請參閱「代管執行個體群組」。