机密虚拟机令牌声明

本文档介绍了机密虚拟机证明令牌中包含的项,如机密虚拟机的 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 存储桶中发布这些密钥。

您可以在 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 支持的机密虚拟机响应类型列表。机密虚拟机支持 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 字符串或字符串数组 一个或多个用于证明令牌的 Nonce。这些值是从自定义令牌请求中发送的令牌选项中回传的。每个 Nonce 必须介于 10 到 74 字节之间(包括这两个数值)。最多允许 6 个 Nonce。
exp Int,Unix 时间戳 令牌的到期时间,系统在此时间或之后不得接受该令牌进行处理。此值是一个 JSON 数字,表示从 1970-01-01T0:0:0Z(以世界协调时间 [UTC] 为单位)到过期时间的秒数。
google_service_accounts 字符串数组 运行 Confidential VM 工作负载且已通过验证的服务账号。
hwmodel 字符串

硬件令牌的唯一标识符。

当前值为 GCP_AMD_SEVGCP_AMD_SEV_ESGCP_SHIELDED_VM

iat Int,Unix 时间戳 JWT 的签发时间。此值是一个 JSON 数字,表示从 1970-01-01T0:0:0Z(以世界协调时间 [UTC] 为单位)到发行时间的秒数。
iss 字符串 令牌的颁发者,设置为 https://confidentialcomputing.googleapis.com
nbf Int,Unix 时间戳 JWT 在该时间之前无法用于处理。
oemid Uint64 Google Private Enterprise Number (PEN),即 11129
secboot 布尔值 是否启用了安全启动,这可确保在虚拟机启动过程中对固件和操作系统进行身份验证。
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 可用区。

后续步骤