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 がサポートするサブジェクト ID のタイプ。Confidential VM は public をサポートしています。

サポートされている申し立て

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

獲得 タイプ 説明
aud 文字列 オーディエンス。デフォルト トークン(Confidential VM 内のランチャーによって 1 時間ごとに取得される)の場合、オーディエンスは https://sts.googleapis.com です。カスタム トークンの場合、トークン リクエストのオーディエンスからオーディエンスがエコーされます。最大長は 512 バイトです。
dbgstat 文字列 ハードウェアのデバッグ ステータス。本番環境イメージでは、値は disabled-since-boot です。デバッグ画像では、値は enabled です。
eat_nonce 文字列または文字列配列 構成証明トークンのノンス。値は、カスタム トークン リクエストで送信されたトークン オプションからエコーされます。各ノンスは 10 ~ 74 バイトの範囲で指定する必要があります。使用できるノンスは最大 6 個です。
exp Int、Unix タイムスタンプ 有効期限。この日付を過ぎると、トークンの処理が拒否されます。この値は、1970-01-01T0:0:0Z から有効期限までの秒数(UTC で測定)を表す JSON 数値です。
google_service_accounts 文字列配列 Confidential VM ワークロードを実行している検証済みのサービス アカウント。
hwmodel 文字列

ハードウェア トークンの一意の識別子。

現在の値は GCP_AMD_SEVGCP_AMD_SEV_ESGCP_SHIELDED_VM です。

iat Int、Unix タイムスタンプ JWT が発行された時刻。この値は、1970-01-01T0:0:0Z から問題が発生した時刻までの秒数(UTC で測定)を表す JSON 数値です。
iss 文字列 トークンの発行者。https://confidentialcomputing.googleapis.com に設定されています。
nbf Int、Unix タイムスタンプ JWT を処理に使用できない時間。
oemid Uint64 Google の 限定公開エンタープライズ番号(PEN)11129)。
secboot ブール値 セキュアブート(VM ブートプロセス中にファームウェアとオペレーティング システムが認証される)が有効かどうか。
sub 文字列 サブジェクト。これは、Confidential VM の完全修飾仮想マシン ID です。たとえば、https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_ID です。 この形式は、インスタンスの selfLink と呼ばれます。
submods 配列 さまざまな申し立ての配列。Submod の申し立てをご覧ください。
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 ゾーン。

次のステップ