Revendications de jetons Confidential VM

Ce document décrit les éléments présents dans les jetons d'attestation Confidential VM, tels que définis dans le point de terminaison well-known pour Confidential VM. Il s'agit de jetons Web JSON (JWT).

Exemple de jeton

Voici un exemple de jeton d'attestation encodé. Vous pouvez utiliser https://jwt.io/ pour le décoder:

eyJhbGciOiJSUzI1NiIsImtpZCI6IjFjNjdmYWVhYjRhYzE1ZDJmNmZmODMwY2E2ZmM1N2YyYmVhM2Y0YmIiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJcdTAwM2NZT1VSQVVESUVOQ0VcdTAwM2UiLCJleHAiOjE3MTU5NzE2OTcsImlhdCI6MTcxNTk2ODA5NywiaXNzIjoiaHR0cHM6Ly9jb25maWRlbnRpYWxjb21wdXRpbmcuZ29vZ2xlYXBpcy5jb20iLCJuYmYiOjE3MTU5NjgwOTcsInN1YiI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL2NvbXB1dGUvdjEvcHJvamVjdHMvcnVpZGV6aGFuZy0yL3pvbmVzL3VzLWNlbnRyYWwxLWMvaW5zdGFuY2VzL2N2bS10b2tlbi1jbGFpbXMiLCJlYXRfbm9uY2UiOlsidGhpc0lzQWN1c3RvbU5vbmNlIiwidGhpc0lzQU11Y2hMb25nZXJDdXN0b21Ob25jZVdpdGhQYWRkaW5nRm9yNzRCeXRlczAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiXSwic2VjYm9vdCI6ZmFsc2UsIm9lbWlkIjoxMTEyOSwiaHdtb2RlbCI6IkdDUF9BTURfU0VWIiwic3duYW1lIjoiR0NFIiwiZGJnc3RhdCI6ImVuYWJsZWQiLCJzdWJtb2RzIjp7ImdjZSI6eyJ6b25lIjoidXMtY2VudHJhbDEtYyIsInByb2plY3RfaWQiOiJydWlkZXpoYW5nLTIiLCJwcm9qZWN0X251bWJlciI6IjQ3MDY1MjQyNjMwNSIsImluc3RhbmNlX25hbWUiOiJjdm0tdG9rZW4tY2xhaW1zIiwiaW5zdGFuY2VfaWQiOiI3MzMzMjUxNTQ2ODE2NDQ2MDY5In19LCJnb29nbGVfc2VydmljZV9hY2NvdW50cyI6WyI0NzA2NTI0MjYzMDUtY29tcHV0ZUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSJdfQ.Z8CIreuWj8vQKe9L5f5Ol80LcWBI_pFWwfT8qsky8hjtH3OMmqfUCJJRx-dX5Rqm5n4qe4dHacLgSWQlT9MDYyrtWDuocA2WtfPZLvM0DNc4HuoNPZtVrgMMcZ93Xyl5-tJuI5PbPshiDBT06_QaRm5l37RRL2CsxXZGCkKsxV1vs0gF5xZgSNmhDqg3q1fONhA3VglZ-H0SHAvMNr1qwXDKrQxdYxyFfEMLkcsRxSXlR5mLCbMIFptGTPXt-k83xJzCipuKSiKJrwaRdZTmlapn7UtaTRLvG3YCmXPg6oOvNKtE8T4KeBY36EdzR0Fdmz_pXSbWL-q8-y90VxDxwQ

Voici un exemple de jeton décodé:

{
  "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"
  ]
}

Les éléments du jeton sont expliqués plus en détail dans les sections suivantes.

Éléments de jeton

Le tableau suivant décrit les éléments de niveau supérieur d'un jeton d'attestation. Ces éléments sont conformes à la spécification OpenID Connect 1.0.

Valeurs de point de terminaison well-known Description
claims_supported Consultez la section Revendications compatibles.
id_token_signing_alg_values_supported Les algorithmes de signature (valeurs alg) compatibles avec le jeton. Confidential VM est compatible avec l'algorithme RS256.
issuer

Le schéma HTTPS que Confidential VM utilise comme identifiant d'émetteur.

La valeur est https://confidentialcomputing.googleapis.com.

jwks_uri

Chemin d'accès aux clés publiques utilisées pour valider la signature du jeton. Vous pouvez publier ces clés dans un bucket Cloud Storage.

Vous trouverez les clés jwks_uri sur la page https://www.googleapis.com/service_accounts/v1/metadata/jwk/signer@confidentialspace-sign.iam.gserviceaccount.com.

Exemple de valeur : https://example.storage.googleapis.com/jwks.json.

response_types_supported Liste des types de réponse Confidential VM compatibles. Confidential VM est compatible avec id_token.
scopes_supported Valeurs de portée OAuth 2.0 compatibles avec l'instance Confidential VM. Confidential Space n'est compatible qu'avec openid.
subject_types_supported Types d'identifiants d'objet compatibles avec Confidential VM. Confidential VM est compatible avec public.

Revendications acceptées

Le tableau suivant décrit les revendications de niveau supérieur compatibles dans le jeton d'attestation.

Affirmation Type Description
aud Chaîne L'audience. Pour le jeton par défaut (qui est extrait toutes les heures par le lanceur dans Confidential VM), l'audience est https://sts.googleapis.com. Pour les jetons personnalisés, l'audience est renvoyée dans la requête de jeton. La longueur maximale est de 512 octets.
dbgstat Chaîne État de débogage du matériel. Dans les images de production, la valeur est disabled-since-boot. Dans les images de débogage, la valeur est enabled.
eat_nonce Chaîne ou tableau de chaînes Un ou plusieurs nonces pour le jeton d'attestation. Les valeurs sont renvoyées à partir des options de jeton envoyées dans la requête de jeton personnalisé. Chaque nonce doit être compris entre 10 et 74 octets inclus. Vous ne pouvez pas inclure plus de six nonces.
exp Int, code temporel Unix Date d'expiration à partir de laquelle le jeton ne doit plus être accepté pour le traitement. La valeur est un nombre JSON qui représente le nombre de secondes écoulées depuis le 1er janvier 1970 à 00:00:00 UTC, mesuré en UTC, jusqu'à l'heure d'expiration.
google_service_accounts Tableau de chaînes. Comptes de service validés qui exécutent la charge de travail de la VM confidentielle.
hwmodel Chaîne

Identifiant unique du jeton matériel.

Les valeurs actuelles sont GCP_AMD_SEV, GCP_AMD_SEV_ES et GCP_SHIELDED_VM.

iat Int, code temporel Unix Heure à laquelle le jeton JWT a été émis. La valeur est un nombre JSON qui représente le nombre de secondes écoulées depuis le 1er janvier 1970 à 00:00:00 UTC, mesuré en UTC, jusqu'à l'heure d'émission.
iss Chaîne Émetteur du jeton, défini sur https://confidentialcomputing.googleapis.com.
nbf Int, code temporel Unix Heure avant laquelle le jeton JWT ne peut pas être utilisé pour le traitement.
oemid Uint64 Le numéro d'entreprise privé (PEN) Google, qui est 11129.
secboot Booléen Indique si le démarrage sécurisé est activé, ce qui garantit que le micrologiciel et le système d'exploitation ont été authentifiés lors du processus de démarrage de la VM.
sub Chaîne L'objet, qui correspond à l'ID de machine virtuelle complet de la Confidential VM. Par exemple : https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_ID Ce format est appelé selfLink de l'instance.
submods Tableau Différentes réclamations. Consultez Revendications de modérateurs secondaires.
swname Chaîne

Nom du système d'exploitation approuvé pour la VM.

La valeur est GCE.

Revendications de sous-modérateurs

Le tableau suivant décrit les revendications submods dans le jeton d'attestation.

Affirmation Type Description
gce Objet Consultez la page Revendications Compute Engine.

Revendications Compute Engine

Le tableau suivant décrit les revendications gce dans le jeton d'attestation.

Affirmation Type Description
instance_id Chaîne ID de l'instance de VM.
instance_name Chaîne Nom de l'instance de VM.
project_id Chaîne ID de projet du projet dans lequel la VM s'exécute.
project_number Chaîne Numéro du projet dans lequel la VM s'exécute.
zone Chaîne Zone Compute Engine dans laquelle la VM Confidential s'exécute.

Étape suivante