本文說明機密 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 |
字串 | 目標對象。對於預設符記 (機密 VM 內的啟動器每小時會擷取一次),對象為 https://sts.googleapis.com 。如果是自訂權杖,系統會從權杖要求中的目標對象,回應目標對象。長度上限為 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。 目前的值為 |
iat |
Int,Unix 時間戳記 | JWT 的核發時間。這個值是 JSON 數字,代表從 1970-01-01T0:0:0Z (世界標準時間) 起算,到問題發生時間為止的秒數。 |
iss |
字串 | 權杖的簽發者,設為 https://confidentialcomputing.googleapis.com 。 |
nbf |
Int,Unix 時間戳記 | JWT 無法用於處理作業的時間。 |
oemid |
Uint64 | Google
私人企業編號 (PEN),即 11129 。
|
secboot |
布林值 | 是否已啟用安全啟動功能,確保 VM 啟動程序期間已驗證韌體和作業系統。 |
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 認證程式碼研究室。