本文档介绍了机密虚拟机证明令牌中包含的项,这些项在机密虚拟机的 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 方案。 其值为 |
jwks_uri |
用于验证令牌签名的公钥的路径。您可以将这些密钥发布到 Cloud Storage 存储桶中。 您可以在以下网址中找到 示例值为
|
response_types_supported |
支持的机密虚拟机响应类型列表。机密虚拟机支持 id_token 。
|
scopes_supported |
机密虚拟机实例支持的
OAuth 2.0 范围值。Confidential Space 仅支持 openid 。 |
subject_types_supported |
机密虚拟机支持的正文标识符类型。机密虚拟机支持 public 。 |
顶级声明
下表介绍了证明令牌中受支持的顶级声明。
声明 | 类型 | 说明 |
---|---|---|
aud |
字符串 |
受众。对于与工作负载身份池搭配使用的默认令牌,受众群体为 对于具有自定义受众群体的令牌,受众群体会从令牌请求中的受众群体进行回显。长度上限为 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 |
字符串 |
硬件令牌的唯一标识符。标识符必须是以下值之一:
|
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 |
字符串 |
虚拟机的获批操作系统名称。 值始终为 |
子模组声明
下表介绍了证明令牌中的 submods
声明。
声明 | 类型 | 说明 |
---|---|---|
gce |
对象 | 请参阅 Compute Engine 声明。 |
Compute Engine 声明
下表介绍了证明令牌中的 gce
声明。
声明 | 类型 | 说明 |
---|---|---|
instance_id |
字符串 | 虚拟机实例 ID。 |
instance_name |
字符串 | 虚拟机实例名称。 |
project_id |
字符串 | 虚拟机运行所在项目的 项目 ID。 |
project_number |
字符串 | 虚拟机运行所在项目的项目编号。 |
zone |
字符串 | 机密虚拟机实例运行所在的 Compute Engine 可用区。 |
后续步骤
如需详细了解证明声明,请参阅 IETF 草稿实体证明令牌 (EAT)。
如需详细了解 OpenID 令牌声明,请参阅 OpenID Connect Core 1.0。
如需详细了解令牌及其检索,请参阅 vTPM 证明 Codelab。