機密 VM 權杖宣告

本文說明機密 VM 驗證權杖中包含的項目,如機密 VM 的 well-known 端點所定義。這些權杖是 JSON Web Token (JWT)。

權杖範例

以下是編碼的認證權杖範例。您可以使用 https://jwt.io/ 解碼:

eyJhbGciOiJSUzI1NiIsImtpZCI6IjFjNjdmYWVhYjRhYzE1ZDJmNmZmODMwY2E2ZmM1N2YyYmVhM2Y0YmIiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJcdTAwM2NZT1VSQVVESUVOQ0VcdTAwM2UiLCJleHAiOjE3MTU5NzE2OTcsImlhdCI6MTcxNTk2ODA5NywiaXNzIjoiaHR0cHM6Ly9jb25maWRlbnRpYWxjb21wdXRpbmcuZ29vZ2xlYXBpcy5jb20iLCJuYmYiOjE3MTU5NjgwOTcsInN1YiI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL2NvbXB1dGUvdjEvcHJvamVjdHMvcnVpZGV6aGFuZy0yL3pvbmVzL3VzLWNlbnRyYWwxLWMvaW5zdGFuY2VzL2N2bS10b2tlbi1jbGFpbXMiLCJlYXRfbm9uY2UiOlsidGhpc0lzQWN1c3RvbU5vbmNlIiwidGhpc0lzQU11Y2hMb25nZXJDdXN0b21Ob25jZVdpdGhQYWRkaW5nRm9yNzRCeXRlczAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiXSwic2VjYm9vdCI6ZmFsc2UsIm9lbWlkIjoxMTEyOSwiaHdtb2RlbCI6IkdDUF9BTURfU0VWIiwic3duYW1lIjoiR0NFIiwiZGJnc3RhdCI6ImVuYWJsZWQiLCJzdWJtb2RzIjp7ImdjZSI6eyJ6b25lIjoidXMtY2VudHJhbDEtYyIsInByb2plY3RfaWQiOiJydWlkZXpoYW5nLTIiLCJwcm9qZWN0X251bWJlciI6IjQ3MDY1MjQyNjMwNSIsImluc3RhbmNlX25hbWUiOiJjdm0tdG9rZW4tY2xhaW1zIiwiaW5zdGFuY2VfaWQiOiI3MzMzMjUxNTQ2ODE2NDQ2MDY5In19LCJnb29nbGVfc2VydmljZV9hY2NvdW50cyI6WyI0NzA2NTI0MjYzMDUtY29tcHV0ZUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSJdfQ.Z8CIreuWj8vQKe9L5f5Ol80LcWBI_pFWwfT8qsky8hjtH3OMmqfUCJJRx-dX5Rqm5n4qe4dHacLgSWQlT9MDYyrtWDuocA2WtfPZLvM0DNc4HuoNPZtVrgMMcZ93Xyl5-tJuI5PbPshiDBT06_QaRm5l37RRL2CsxXZGCkKsxV1vs0gF5xZgSNmhDqg3q1fONhA3VglZ-H0SHAvMNr1qwXDKrQxdYxyFfEMLkcsRxSXlR5mLCbMIFptGTPXt-k83xJzCipuKSiKJrwaRdZTmlapn7UtaTRLvG3YCmXPg6oOvNKtE8T4KeBY36EdzR0Fdmz_pXSbWL-q8-y90VxDxwQ

以下是解碼後的權杖範例:

{
  "alg": "RS256",
  "kid": "6e66f1aededf736581df2599ee20387718978dcd",
  "typ": "JWT"
}.
{
  "aud": "<YOURAUDIENCE>",
  "exp": 1715359550,
  "iat": 1715355950,
  "iss": "https://confidentialcomputing.googleapis.com",
  "nbf": 1698861565,
  "sub": "https://www.googleapis.com/compute/v1/projects/<YOURPROJECT>/zones/us-central1-c/instances/cvm-token-claims",
  "eat_nonce": [
    "thisIsAcustomNonce",
    "thisIsAMuchLongerCustomNonceWithPaddingFor74Bytes0000000000000000000000000"
  ],
  "secboot": true,
  "oemid": 11129,
  "hwmodel": "GCP_AMD_SEV",
  "swname": "Compute Engine",
  "dbgstat": "disabled-since-boot",
  "submods": {
    "gce": {
      "zone": "us-central1-c",
      "project_id": "<YOURPROJECT>",
      "project_number": "470652426305",
      "instance_name": "cvm-token-claims",
      "instance_id": "7333251546816446069"
    }
  },
  "google_service_accounts": [
    "470652426305-compute@developer.gserviceaccount.com"
  ]
}

以下各節會進一步說明權杖中的項目。

權杖項目

下表說明認證權杖中的高階項目。這些項目符合 OpenID Connect 1.0 規格

well-known 端點值 說明
claims_supported 請參閱「支援的聲明」。
id_token_signing_alg_values_supported 權杖支援的簽署演算法 (alg 值)。機密 VM 支援 RS256 演算法。
issuer

Confidential VM 用於做為簽發者 ID 的 HTTPS 配置。

值為 https://confidentialcomputing.googleapis.com

jwks_uri

用於驗證權杖簽章的公開金鑰路徑。您可以在 Cloud Storage bucket 中發布這些金鑰。

您可以在 https://www.googleapis.com/service_accounts/v1/metadata/jwk/signer@confidentialspace-sign.iam.gserviceaccount.com. 找到 jwks_uri 金鑰。

範例值為 https://example.storage.googleapis.com/jwks.json.

response_types_supported 支援的機密 VM 回應類型清單。機密 VM 支援 id_token
scopes_supported 機密 VM 執行個體支援的 OAuth 2.0 範圍值。機密空間僅支援 openid
subject_types_supported 機密 VM 支援的主體 ID 類型。機密 VM 支援 public

支援的著作權聲明

下表說明驗證權杖中支援的頂層聲明。

領取 類型 說明
aud 字串 目標對象。對於預設符記 (機密 VM 內的啟動器每小時會擷取一次),對象為 https://sts.googleapis.com。如果是自訂權杖,系統會從權杖要求中的目標對象,回應目標對象。長度上限為 512 個位元組。
dbgstat 字串 硬體的偵錯狀態。在正式版圖片中,這個值為 disabled-since-boot。在偵錯圖片中,該值為 enabled
eat_nonce 字串或字串陣列 驗證權杖的一或多個隨機值。這些值會從自訂權杖要求中傳送的權杖選項回呼。每個隨機值必須介於 10 到 74 個位元組之間 (含首尾)。最多可使用六個隨機碼。
exp Int,Unix 時間戳記 權杖的到期時間,系統不得在該時間或之後接受權杖進行處理。這個值是 JSON 數字,代表從 1970-01-01T0:0:0Z (世界標準時間) 起算,到期時間的秒數。
google_service_accounts 字串陣列 執行機密 VM 工作負載的已驗證服務帳戶。
hwmodel 字串

硬體權杖的專屬 ID。

目前的值為 GCP_AMD_SEVGCP_AMD_SEV_ESGCP_SHIELDED_VM

iat Int,Unix 時間戳記 JWT 的核發時間。這個值是 JSON 數字,代表從 1970-01-01T0:0:0Z (世界標準時間) 起算,到問題發生時間為止的秒數。
iss 字串 權杖的簽發者,設為 https://confidentialcomputing.googleapis.com
nbf Int,Unix 時間戳記 JWT 無法用於處理作業的時間。
oemid Uint64 Google 私人企業編號 (PEN),即 11129
secboot 布林值 是否已啟用安全啟動功能,確保 VM 啟動程序期間已驗證韌體和作業系統。
sub 字串 主體,也就是機密 VM 的完整虛擬機器 ID。例如: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_ID。 這個格式稱為「執行個體的 selfLink」
submods 陣列 一系列各種聲明。請參閱「子模組聲明」一文。
swname 字串

VM 的核准作業系統名稱。

值為 GCE

Submods claims

下表說明認證權杖中的 submods 聲明。

領取 類型 說明
gce 物件 請參閱 Compute Engine 聲明

Compute Engine 索賠

下表說明認證權杖中的 gce 聲明。

領取 類型 說明
instance_id 字串 VM 執行個體 ID。
instance_name 字串 VM 執行個體名稱。
project_id 字串 VM 執行的專案 專案 ID
project_number 字串 VM 執行的專案編號。
zone 字串 機密 VM 執行的 Compute Engine 區域。

後續步驟