במסמך הזה מתוארים הפריטים שמופיעים באסימוני אימות (attestation) של 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 |
סכמת ה-HTTPS שמשמשת את Confidential VM כמזהה המנפיק שלה. הערך הוא |
jwks_uri |
הנתיב למפתחות הציבוריים שמשמשים לאימות חתימת האסימון. אתם יכולים לפרסם את המפתחות האלה בקטגוריה של Cloud Storage. אפשר למצוא את המפתחות ערך לדוגמה:
|
response_types_supported |
רשימת סוגי התגובות הנתמכים של Confidential VM. Confidential VM תומך ב-id_token.
|
scopes_supported |
ערכי ההיקף של
OAuth 2.0 שמופע המכונה הווירטואלית הסודית תומך בהם.
Confidential Space תומך רק ב-openid. |
subject_types_supported |
סוגי מזהי הנושא שנתמכים במכונה וירטואלית חסויה. Confidential VM תומך ב-
public. |
תלונות ברמה העליונה
בטבלה הבאה מתוארים התביעות הנתמכות ברמה העליונה באסימון האימות.
| הצהרה | סוג | תיאור |
|---|---|---|
aud |
String |
הקהל. באסימון ברירת המחדל שמשמש עם מאגר זהויות של כוח עבודה, הקהל הוא באסימונים עם קהלים בהתאמה אישית, הקהל משוכפל מהקהל בבקשת האסימון. האורך המקסימלי הוא 512 בייטים. |
dbgstat |
String | סטטוס ניפוי הבאגים של החומרה. לא זמין ל-AMD SEV. |
eat_nonce |
מחרוזת או מערך מחרוזות | ערך nonce אחד או יותר עבור טוקן האימות. הערכים מוחזרים מאפשרויות האסימון שנשלחו בבקשה לאסימון מותאם אישית. כל ערך nonce חייב להיות בין 10 ל-74 בייט, כולל. אפשר להוסיף עד שישה ערכי nonce. |
exp |
מספר שלם, חותמת זמן של Unix |
תאריך התפוגה שאחריו אסור לקבל את הטוקן לעיבוד. הערך הוא מספר JSON שמייצג את מספר השניות מ-1970-01-01T0:0:0Z, שנמדד ב-UTC, עד למועד התפוגה.
|
google_service_accounts |
מערך מחרוזות | חשבונות השירות שאומתו ומריצים את עומס העבודה של Confidential VM. |
hwmodel |
String |
המזהה הייחודי של אסימון החומרה. המזהה צריך להיות אחד מהערכים הבאים:
|
iat |
מספר שלם, חותמת זמן של Unix |
השעה שבה הונפק ה-JWT. הערך הוא מספר JSON שמייצג את מספר השניות מ-1970-01-01T0:0:0Z שנמדד ב-UTC עד לזמן ההנפקה.
|
iss |
String |
המנפיק של הטוקן, שמוגדר לערך
https://confidentialcomputing.googleapis.com.
|
nbf |
מספר שלם, חותמת זמן של Unix |
הזמן שאחריו מותר לעבד את ה-JWT. הערך הוא מספר JSON שמייצג את מספר השניות מאז 1970-01-01T0:0:0Z, שנמדד ב-UTC.
|
oemid |
Uint64 |
מספר הארגון הפרטי (PEN) של Google, שהוא 11129.
|
secboot |
בוליאני |
האם ההפעלה המאובטחת מופעלת, כדי לוודא שהקושחה ומערכת ההפעלה מאומתות במהלך תהליך האתחול של המכונה הווירטואלית. הערך הזה תמיד יהיה true.
|
sub |
String |
הנושא, שהוא מזהה המכונה הווירטואלית המוגדר במלואו של המכונה הווירטואלית הסודית. לדוגמה,
https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_ID.
הפורמט הזה נקרא
instance's selfLink.
|
submods |
מערך | מערך של תלונות שונות. מידע על תלונות בנושא תוכן שנוצר על ידי משתמשים |
swname |
String |
השם של מערכת ההפעלה שאושרה למכונת ה-VM. הערך הוא תמיד |
תלונות לגבי תת-מודים
בטבלה הבאה מתוארות ההצהרות submods באסימון האימות.
| הצהרה | סוג | תיאור |
|---|---|---|
gce |
אובייקט | מידע נוסף על טענות ב-Compute Engine |
טענות לגבי Compute Engine
בטבלה הבאה מתוארות ההצהרות gce באסימון האימות.
| הצהרה | סוג | תיאור |
|---|---|---|
instance_id |
String | מזהה מכונת ה-VM. |
instance_name |
String | שם מכונת ה-VM. |
project_id |
String | מזהה הפרויקט של הפרויקט שבו המכונה הווירטואלית פועלת. |
project_number |
String | מספר הפרויקט שבו מכונת ה-VM פועלת. |
zone |
String | התחום (zone) של Compute Engine שבו פועלת מכונת Confidential VM. |
המאמרים הבאים
מידע נוסף על הצהרות אימות זמין בטיוטה של IETF בנושא The Entity Attestation Token (EAT).
למידע נוסף על טענות באסימוני OpenID, אפשר לעיין במאמר בנושא OpenID Connect Core 1.0.
מידע נוסף על אסימונים ועל אחזור שלהם זמין במאמר vTPM Attestation Codelab.