Confidential VM トークンのクレーム

このドキュメントでは、Confidential VM の well-known エンドポイントで定義されている Confidential VM 構成証明トークンに含まれる項目について説明します。トークンは JSON ウェブトークン(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 値)。Confidential VM は RS256 アルゴリズムをサポートしています。
issuer

Confidential VM が発行者 ID として使用する HTTPS スキーム。

値は https://confidentialcomputing.googleapis.com です。

jwks_uri

トークン署名の検証に使用される公開鍵のパス。これらの鍵は Cloud Storage バケットに公開できます。

jwks_uri 鍵は、 https://www.googleapis.com/service_accounts/v1/metadata/jwk/signer@confidentialspace-sign.iam.gserviceaccount.com で確認できます。

値の例は https://example.storage.googleapis.com/jwks.json. です。

response_types_supported サポートされている Confidential VM レスポンス タイプのリスト。Confidential VM は id_token をサポートしています。
scopes_supported Confidential VM インスタンスがサポートする OAuth 2.0 スコープ値。Confidential Space は openid のみをサポートしています。
subject_types_supported Confidential VM がサポートするサブジェクト識別子のタイプ。Confidential VM は public をサポートしています。

トップレベルの申し立て

次の表に、構成証明トークンでサポートされている最上位のクレームを示します。

クレーム タイプ 説明
aud 文字列

対象者。Workload Identity プールで使用されるデフォルトのトークンの場合、オーディエンスは https://sts.googleapis.com です。このトークンは、Confidential VM インスタンスのランチャーによって 1 時間ごとに取得されます。

カスタム オーディエンスを含むトークンでは、オーディエンスはトークン リクエストのオーディエンスからエコーされます。最大長は 512 バイトです。

dbgstat 文字列 ハードウェアのデバッグ ステータス。プロダクション イメージでは、値は disabled-since-boot です。デバッグ画像では、値は enabled です。
eat_nonce 文字列または文字列配列 認証トークンの 1 つ以上のノンス。値は、カスタム トークン リクエストで送信されたトークン オプションからエコーされます。各ノンスは 10 ~ 74 バイトの範囲内である必要があります。最大 6 個のノンスを指定できます。
exp 整数、Unix タイムスタンプ トークンが処理のために受け入れられなくなる有効期限。値は、1970-01-01T0:0:0Z から UTC で測定された有効期限までの秒数を表す JSON 数値です。
google_service_accounts 文字列配列 Confidential VM ワークロードを実行している検証済みのサービス アカウント。
hwmodel 文字列

ハードウェア トークンの一意の識別子。識別子は次のいずれかの値にする必要があります。

  • GCP_AMD_SEV
  • GCP_AMD_SEV_ES
  • GCP_SHIELDED_VM
  • GCP_INTEL_TDX
iat 整数、Unix タイムスタンプ JWT が発行された時刻。値は、1970-01-01T0:0:0Z から発行時刻までの秒数を UTC で測定した JSON 数値です。
iss 文字列 トークンの発行者。https://confidentialcomputing.googleapis.com に設定されます。
nbf 整数、Unix タイムスタンプ JWT の処理が許可される時刻。値は、UTC で測定された 1970-01-01T0:0:0Z からの秒数を表す JSON 数値です。
oemid Uint64 Google の プライベート エンタープライズ番号(PEN)11129)。
secboot ブール値 セキュアブートが有効になっているかどうか。セキュアブートが有効になっている場合、VM のブートプロセス中にファームウェアとオペレーティング システムが認証されます。この値は常に true です。
sub 文字列 サブジェクト。Confidential VM の完全修飾仮想マシン ID です。例: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_ID。この形式は、インスタンスの selfLink と呼ばれます。
submods 配列 さまざまな申し立ての配列。サブモジュールのクレームをご覧ください。
swname 文字列

VM の承認済みオペレーティング システムの名前。

値は常に GCE です。

サブモジュールの申し立て

次の表に、構成証明トークンの submods クレームを示します。

クレーム タイプ 説明
gce オブジェクト Compute Engine の請求をご覧ください。

Compute Engine の請求

次の表に、構成証明トークンの gce クレームを示します。

クレーム タイプ 説明
instance_id 文字列 VM インスタンス ID。
instance_name 文字列 VM インスタンス名。
project_id 文字列 VM が実行されているプロジェクトの プロジェクト ID
project_number 文字列 VM が実行されているプロジェクトのプロジェクト番号。
zone 文字列 Confidential VM インスタンスが実行されている Compute Engine ゾーン。

次のステップ