טענות לגבי טוקנים של Confidential VM

במסמך הזה מתוארים הפריטים שמופיעים באסימוני אימות (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 כמזהה המנפיק שלה.

הערך הוא https://confidentialcomputing.googleapis.com.

jwks_uri

הנתיב למפתחות הציבוריים שמשמשים לאימות חתימת האסימון. אתם יכולים לפרסם את המפתחות האלה בקטגוריה של Cloud Storage.

אפשר למצוא את המפתחות jwks_uri בכתובת https://www.googleapis.com/service_accounts/v1/metadata/jwk/signer@confidentialspace-sign.iam.gserviceaccount.com.

ערך לדוגמה: https://example.storage.googleapis.com/jwks.json.

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

הקהל. באסימון ברירת המחדל שמשמש עם מאגר זהויות של כוח עבודה, הקהל הוא https://sts.googleapis.com. הטוקן הזה מאוחזר כל שעה על ידי מרכז הבקרה במופע של מכונה וירטואלית חסויה.

באסימונים עם קהלים בהתאמה אישית, הקהל משוכפל מהקהל בבקשת האסימון. האורך המקסימלי הוא 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

המזהה הייחודי של אסימון החומרה. המזהה צריך להיות אחד מהערכים הבאים:

  • GCP_AMD_SEV
  • GCP_AMD_SEV_ES
  • GCP_SHIELDED_VM
  • GCP_INTEL_TDX
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.

הערך הוא תמיד GCE.

תלונות לגבי תת-מודים

בטבלה הבאה מתוארות ההצהרות 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.

המאמרים הבאים