This document describes the items that are present in Confidential VM
attestation tokens, as defined in the  well-known 
endpoint 
for Confidential VM. The tokens are JSON web tokens (JWT).
Example token
The following is an example of an encoded attestation token. You can use https://jwt.io/ to decode it:
 eyJhbGciOiJSUzI1NiIsImtpZCI6IjFjNjdmYWVhYjRhYzE1ZDJmNmZmODMwY2E2ZmM1N2YyYmVhM2Y0YmIiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJcdTAwM2NZT1VSQVVESUVOQ0VcdTAwM2UiLCJleHAiOjE3MTU5NzE2OTcsImlhdCI6MTcxNTk2ODA5NywiaXNzIjoiaHR0cHM6Ly9jb25maWRlbnRpYWxjb21wdXRpbmcuZ29vZ2xlYXBpcy5jb20iLCJuYmYiOjE3MTU5NjgwOTcsInN1YiI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL2NvbXB1dGUvdjEvcHJvamVjdHMvcnVpZGV6aGFuZy0yL3pvbmVzL3VzLWNlbnRyYWwxLWMvaW5zdGFuY2VzL2N2bS10b2tlbi1jbGFpbXMiLCJlYXRfbm9uY2UiOlsidGhpc0lzQWN1c3RvbU5vbmNlIiwidGhpc0lzQU11Y2hMb25nZXJDdXN0b21Ob25jZVdpdGhQYWRkaW5nRm9yNzRCeXRlczAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiXSwic2VjYm9vdCI6ZmFsc2UsIm9lbWlkIjoxMTEyOSwiaHdtb2RlbCI6IkdDUF9BTURfU0VWIiwic3duYW1lIjoiR0NFIiwiZGJnc3RhdCI6ImVuYWJsZWQiLCJzdWJtb2RzIjp7ImdjZSI6eyJ6b25lIjoidXMtY2VudHJhbDEtYyIsInByb2plY3RfaWQiOiJydWlkZXpoYW5nLTIiLCJwcm9qZWN0X251bWJlciI6IjQ3MDY1MjQyNjMwNSIsImluc3RhbmNlX25hbWUiOiJjdm0tdG9rZW4tY2xhaW1zIiwiaW5zdGFuY2VfaWQiOiI3MzMzMjUxNTQ2ODE2NDQ2MDY5In19LCJnb29nbGVfc2VydmljZV9hY2NvdW50cyI6WyI0NzA2NTI0MjYzMDUtY29tcHV0ZUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSJdfQ.Z8CIreuWj8vQKe9L5f5Ol80LcWBI_pFWwfT8qsky8hjtH3OMmqfUCJJRx-dX5Rqm5n4qe4dHacLgSWQlT9MDYyrtWDuocA2WtfPZLvM0DNc4HuoNPZtVrgMMcZ93Xyl5-tJuI5PbPshiDBT06_QaRm5l37RRL2CsxXZGCkKsxV1vs0gF5xZgSNmhDqg3q1fONhA3VglZ-H0SHAvMNr1qwXDKrQxdYxyFfEMLkcsRxSXlR5mLCbMIFptGTPXt-k83xJzCipuKSiKJrwaRdZTmlapn7UtaTRLvG3YCmXPg6oOvNKtE8T4KeBY36EdzR0Fdmz_pXSbWL-q8-y90VxDxwQ 
 
The following is an example of a decoded token:
  { 
  
 "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" 
  
 ] 
 } 
 
 
The items within the token are further explained in the following sections.
Token items
The following table describes the high-level items in an attestation token. These items are compliant with the OpenID Connect 1.0 specification .
| well-knownendpoint values | Description | 
|---|---|
| claims_supported | See Top-level claims . | 
| id_token_signing_alg_values_supported | The signing algorithms ( algvalues) supported by the
        token. Confidential VM supports theRS256algorithm. | 
| issuer | The HTTPS scheme that Confidential VM uses as its issuer identifier. The value is  | 
| jwks_uri | The path to the public keys used to verify the token signature. You can publish these keys in a Cloud Storage bucket. You can find the  An example value is  | 
| response_types_supported | The list of supported Confidential VM response
        types. Confidential VM supports id_token. | 
| scopes_supported | The OAuth 2.0 
scope values that the Confidential VM instance supports.
        Confidential Space supports openidonly. | 
| subject_types_supported | The subject identifier types that Confidential VM
        supports. Confidential VM supports public. | 
Top-level claims
The following table describes the top-level supported claims in the attestation token.
aud 
The audience. For the default token used with a workload identity
          pool, the audience is https://sts.googleapis.com 
. This
          token is fetched every hour by the launcher in the Confidential VM
          instance.
For tokens with custom audiences, the audience is echoed from the audience in the token request. The maximum length is 512 bytes.
dbgstat 
disabled-since-boot 
. In debug images, the value is enabled 
.eat_nonce 
exp 
1970-01-01T0:0:0Z 
as measured
        in UTC until the expiry time.google_service_accounts 
hwmodel 
The unique identifier for the hardware token. The identifier must be one of the following values:
-  GCP_AMD_SEV
-  GCP_AMD_SEV_ES
-  GCP_SHIELDED_VM
-  GCP_INTEL_TDX
iat 
1970-01-01T0:0:0Z 
as measured
        in UTC until the issue time.iss 
https://confidentialcomputing.googleapis.com 
.nbf 
1970-01-01T0:0:0Z 
as measured
        in UTC.secboot 
true 
.sub 
https://www.googleapis.com/compute/v1/projects/ PROJECT_ID 
/zones/ ZONE 
/instances/ INSTANCE_ID 
 
.
        This format is known as the instance's selfLink 
.swname 
The name of the approved operating system for the VM.
The value is always GCE 
.
Submods claims
The following table describes the submods 
claims in the attestation token.
| Claim | Type | Description | 
|---|---|---|
| gce | Object | See Compute Engine claims . | 
Compute Engine claims
The following table describes the gce 
claims in the attestation token.
| Claim | Type | Description | 
|---|---|---|
| instance_id | String | The VM instance ID. | 
| instance_name | String | The VM instance name. | 
| project_id | String | The project ID for the project that the VM is running in. | 
| project_number | String | The project number for the project that the VM is running in. | 
| zone | String | The Compute Engine zone where the Confidential VM instance is running. | 
What's next
-  See the IETF draft for The Entity Attestation Token (EAT) for more information on attestation claims. 
-  See the OpenID Connect Core 1.0 for more information on OpenID token claims. 
-  For more information about tokens and retrieving them, see vTPM Attestation Codelab . 

