本文档介绍了机密虚拟机证明令牌中包含的项,如机密虚拟机的 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 存储桶中发布这些密钥。 您可以在
https://www.googleapis.com/service_accounts/v1/metadata/jwk/signer@confidentialspace-sign.iam.gserviceaccount.com 中找到 示例值为 |
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 |
字符串 |
硬件令牌的唯一标识符。 当前值为 |
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 |
字符串 |
虚拟机获批的操作系统的名称。 值为 |
子模组版权主张
下表介绍了认证令牌中的 submods
声明。
声明 | 类型 | 说明 |
---|---|---|
gce |
对象 | 请参阅 Compute Engine 声明。 |
Compute Engine 声明
下表介绍了认证令牌中的 gce
声明。
声明 | 类型 | 说明 |
---|---|---|
instance_id |
字符串 | 虚拟机实例 ID。 |
instance_name |
字符串 | 虚拟机实例名称。 |
project_id |
字符串 | 虚拟机所运行项目的 项目 ID。 |
project_number |
字符串 | 虚拟机运行所在项目的项目编号。 |
zone |
字符串 | 机密虚拟机运行所在的 Compute Engine 可用区。 |
后续步骤
如需详细了解认证声明,请参阅 The Entity Attestation Token (EAT) 的 IETF 草稿。
如需详细了解 OpenID 令牌声明,请参阅 OpenID Connect Core 1.0。
如需详细了解令牌及其检索方式,请参阅 vTPM 认证 Codelab。