このドキュメントでは、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 スキーム。 値は |
jwks_uri |
トークン署名の検証に使用する公開鍵のパスを指定します。これらの鍵は Cloud Storage バケットに公開できます。
値の例は |
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 |
文字列 |
ハードウェア トークンの一意の識別子。 現在の値は |
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 で承認されているオペレーティング システムの名前。 値は |
サブモッドの申し立て
次の表に、構成証明トークンの 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 ゾーン。 |
次のステップ
構成証明のクレームの詳細については、IETF ドラフトの The Entity Attestation Token (EAT) をご覧ください。
OpenID トークンのクレームの詳細については、OpenID Connect Core 1.0 をご覧ください。
トークンとその取得の詳細については、vTPM 構成証明 Codelab をご覧ください。