このドキュメントでは、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 がサポートするサブジェクト識別子のタイプ。Confidential VM は public をサポートしています。 |
トップレベルの申し立て
次の表に、構成証明トークンでサポートされている最上位のクレームを示します。
クレーム | タイプ | 説明 |
---|---|---|
aud |
文字列 |
対象者。Workload Identity プールで使用されるデフォルトのトークンの場合、オーディエンスは カスタム オーディエンスを含むトークンでは、オーディエンスはトークン リクエストのオーディエンスからエコーされます。最大長は 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 |
文字列 |
ハードウェア トークンの一意の識別子。識別子は次のいずれかの値にする必要があります。
|
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 の承認済みオペレーティング システムの名前。 値は常に |
サブモジュールの申し立て
次の表に、構成証明トークンの 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 をご覧ください。