机密虚拟机令牌声明

本文档介绍了机密虚拟机证明令牌中包含的项,这些项在机密虚拟机的 well-known 端点中定义。令牌是 JSON Web 令牌 (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 值)。机密虚拟机支持 RS256 算法。
issuer

机密虚拟机用作其签发者标识符的 HTTPS 方案。

其值为 https://confidentialcomputing.googleapis.com

jwks_uri

用于验证令牌签名的公钥的路径。您可以将这些密钥发布到 Cloud Storage 存储桶中。

您可以在以下网址中找到 jwks_uri 密钥: https://www.googleapis.com/service_accounts/v1/metadata/jwk/signer@confidentialspace-sign.iam.gserviceaccount.com

示例值为 https://example.storage.googleapis.com/jwks.json.

response_types_supported 支持的机密虚拟机响应类型列表。机密虚拟机支持 id_token
scopes_supported 机密虚拟机实例支持的 OAuth 2.0 范围值。Confidential Space 仅支持 openid
subject_types_supported 机密虚拟机支持的正文标识符类型。机密虚拟机支持 public

顶级声明

下表介绍了证明令牌中受支持的顶级声明。

声明 类型 说明
aud 字符串

受众。对于与工作负载身份池搭配使用的默认令牌,受众群体为 https://sts.googleapis.com。此令牌由机密虚拟机实例中的启动器每小时提取一次。

对于具有自定义受众群体的令牌,受众群体会从令牌请求中的受众群体进行回显。长度上限为 512 字节。

dbgstat 字符串 硬件的调试状态。在正式版映像中,该值为 disabled-since-boot。在调试映像中,该值为 enabled
eat_nonce 字符串或字符串数组 证明令牌的一个或多个随机数。这些值会从自定义令牌请求中发送的令牌选项回显。每个随机数必须介于 10 到 74 字节之间(含 10 和 74 字节)。最多允许使用 6 个随机数。
exp 整数,Unix 时间戳 令牌的过期时间,即在此时间或之后,不得接受令牌进行处理。该值是一个 JSON 数字,表示从 1970-01-01T0:0:0Z(以世界协调时间 [UTC] 为单位)到过期时间之间的秒数。
google_service_accounts 字符串数组 正在运行 Confidential VM 工作负载的经过验证的服务账号。
hwmodel 字符串

硬件令牌的唯一标识符。标识符必须是以下值之一:

  • GCP_AMD_SEV
  • GCP_AMD_SEV_ES
  • GCP_SHIELDED_VM
  • GCP_INTEL_TDX
iat 整数,Unix 时间戳 JWT 的签发时间。该值是一个 JSON 数字,表示从 1970-01-01T0:0:0Z(以世界协调时间 [UTC] 为单位)到问题发生时间所经过的秒数。
iss 字符串 令牌的颁发者,设置为 https://confidentialcomputing.googleapis.com
nbf 整数,Unix 时间戳 允许处理 JWT 的时间。该值是一个 JSON 数字,表示自 1970-01-01T0:0:0Z 以来经过的秒数(以世界协调时间 [UTC] 为单位)。
oemid Uint64 Google Private Enterprise Number (PEN),即 11129
secboot 布尔值 安全启动是否已启用,这可确保在虚拟机启动过程中对固件和操作系统进行身份验证。此值始终为 true
sub 字符串 正文,即机密虚拟机的完全限定虚拟机 ID。例如 https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_ID。 此格式称为实例的 selfLink。
submods 数组 各种版权主张的数组。请参阅子模块声明
swname 字符串

虚拟机的获批操作系统名称。

值始终为 GCE

子模组声明

下表介绍了证明令牌中的 submods 声明。

声明 类型 说明
gce 对象 请参阅 Compute Engine 声明

Compute Engine 声明

下表介绍了证明令牌中的 gce 声明。

声明 类型 说明
instance_id 字符串 虚拟机实例 ID。
instance_name 字符串 虚拟机实例名称。
project_id 字符串 虚拟机运行所在项目的 项目 ID
project_number 字符串 虚拟机运行所在项目的项目编号。
zone 字符串 机密虚拟机实例运行所在的 Compute Engine 可用区。

后续步骤