本文說明機密 VM 認證權杖中的項目,如機密 VM 的 well-known
端點所定義。這些權杖是 JSON Web Token (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 值)。機密 VM 支援 RS256 演算法。 |
issuer |
Confidential VM 用於做為簽發者 ID 的 HTTPS 配置。 值為 |
jwks_uri |
用於驗證權杖簽章的公開金鑰路徑。您可以在 Cloud Storage bucket 中發布這些金鑰。 您可以在
https://www.googleapis.com/service_accounts/v1/metadata/jwk/signer@confidentialspace-sign.iam.gserviceaccount.com.
找到 範例值為
|
response_types_supported |
支援的機密 VM 回應類型清單。機密 VM 支援 id_token 。
|
scopes_supported |
機密 VM 執行個體支援的 OAuth 2.0 範圍值。機密空間僅支援 openid 。 |
subject_types_supported |
機密 VM 支援的主體 ID 類型。機密 VM 支援
public 。 |
頂層著作權聲明
下表說明驗證權杖中支援的頂層聲明。
權杖附加資訊 | 類型 | 說明 |
---|---|---|
aud |
字串 |
目標對象。對於搭配工作負載身分集區使用的預設權杖,對象為 如果是含有自訂目標對象的權杖,目標對象會從權杖要求中的目標對象回傳。長度上限為 512 個位元組。 |
dbgstat |
字串 |
硬體的偵錯狀態。在正式版圖片中,這個值為 disabled-since-boot 。在偵錯圖片中,該值為 enabled 。 |
eat_nonce |
字串或字串陣列 | 驗證權杖的一或多個隨機值。這些值會從自訂權杖要求中傳送的權杖選項回傳。每個隨機值必須介於 10 到 74 個位元組之間 (含首尾)。最多可使用六個隨機碼。 |
exp |
Int,Unix 時間戳記 |
權杖的到期時間,在此時間之後不得接受權杖進行處理。這個值是 JSON 數字,代表從 1970-01-01T0:0:0Z (以世界標準時間為準) 到到期時間的秒數。 |
google_service_accounts |
字串陣列 | 執行機密 VM 工作負載的已驗證服務帳戶。 |
hwmodel |
字串 |
硬體權杖的專屬 ID。ID 必須是下列其中一個值:
|
iat |
Int,Unix 時間戳記 |
JWT 的核發時間。這個值是 JSON 數字,代表從 1970-01-01T0:0:0Z (以世界標準時間為準) 到問題發生時間的秒數。 |
iss |
字串 |
權杖的簽發者,設為 https://confidentialcomputing.googleapis.com 。 |
nbf |
Int,Unix 時間戳記 |
JWT 可處理的時間。這個值是 JSON 數字,代表從 1970-01-01T0:0:0Z 起算的時間 (以秒為單位),並以世界標準時間為準。
|
oemid |
Uint64 |
Google
私人企業編號 (PEN),即 11129 。
|
secboot |
布林值 |
是否啟用安全啟動功能,確保 VM 啟動程序期間驗證韌體和作業系統。這個值一律為 true 。 |
sub |
字串 |
主體,也就是機密 VM 的完整虛擬機器 ID。例如:
https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_ID 。
這個格式稱為「執行個體的 selfLink」。 |
submods |
陣列 | 一系列各種聲明。請參閱「子模組聲明」一文。 |
swname |
字串 |
VM 的核准作業系統名稱。 此值一律為 |
Submods claims
下表說明認證權杖中的 submods
聲明。
權杖附加資訊 | 類型 | 說明 |
---|---|---|
gce |
物件 | 請參閱 Compute Engine 聲明。 |
Compute Engine 索賠
下表說明認證權杖中的 gce
聲明。
權杖附加資訊 | 類型 | 說明 |
---|---|---|
instance_id |
字串 | VM 執行個體 ID。 |
instance_name |
字串 | VM 執行個體名稱。 |
project_id |
字串 | VM 執行的專案 專案 ID。 |
project_number |
字串 | VM 執行的專案編號。 |
zone |
字串 | 機密 VM 執行個體執行的 Compute Engine 區域。 |
後續步驟
如要進一步瞭解認證聲明,請參閱 IETF 草案「實體認證權杖 (EAT)」。
如要進一步瞭解 OpenID 符記聲明,請參閱 OpenID Connect Core 1.0。
如要進一步瞭解權杖和如何擷取權杖,請參閱 vTPM 認證程式碼研究室。