הצהרות אימות (attestation)

מידע נוסף על שימוש בטענות נכונות (assertion) לאימות זמין במאמר יצירת מדיניות אימות.

בטבלה הבאה מפורטות ההצהרות הזמינות ליצירת מדיניות אימות. כללי המדיניות יכולים לאמת טענות נכוֹנוּת (assertions) שנוצרו על ידי קובץ האימג' של Confidential Space, קונטיינר עומס העבודה והמכונה הווירטואלית.

הצהרות לגבי תמונות

טענת נכוֹנוּת (assertion) סוג תיאור

assertion.dbgstat

אינטראקציה עם:

ערכי ספירה

מאמת שהתמונה של Confidential Space היא גרסת ניפוי הבאגים או גרסת הייצור.

הערכים התקינים הם:

  • ‫enable: מוודאים שנעשה שימוש בתמונת ניפוי הבאגים.
  • disabled-since-boot: מוודאים שמשתמשים בתמונת הייצור.
דוגמאות

הקוד הבא מאמת שנעשה שימוש בגרסת ניפוי הבאגים של קובץ האימג' של Confidential Space:

assertion.dbgstat == "enable"

הקוד הבא מאמת שנעשה שימוש בגרסת הייצור של קובץ האימג' של Confidential Space:

assertion.dbgstat == "disabled-since-boot"
assertion.submods.confidential_space.support_attributes מערך של מחרוזות

אימות שגרסת האבטחה של ה-TEE היא תמונה של Confidential Space בסביבת ייצור. לתמונות של Confidential Space לניפוי באגים אין מאפיין תמיכה מוגדר.

בטבלה הבאה מתוארים מאפייני התמיכה שנמצאים בתמונות של Confidential Space בסביבת הייצור.

מאפיין תמיכה תיאור

LATEST

לתמונות של LATEST יש גם את מאפייני התמיכה הבאים:

  • STABLE
  • USABLE

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

זו הגרסה העדכנית של התמונה של Confidential Space, והיא נתמכת ומנוטרת כדי לאתר נקודות חולשה.

בעומסי עבודה שפועלים לאורך זמן, מומלץ לא לציין את LATEST כחלק ממדיניות האימות. הסיבה לכך היא שהתמונה של Confidential Space עשויה להתעדכן בזמן שעומס העבודה פועל, כך שהתמונה של Confidential Space שבה אתם משתמשים כבר לא תהיה LATEST, ועומס העבודה ייכשל באימות כשהאסימון שמוגדר כברירת מחדל של Confidential Space יתעדכן בפעם הבאה.

STABLE

לתמונות של STABLE יש גם את מאפייני התמיכה הבאים:

  • USABLE

משך החיים של התמונה: כחצי שנה. החל מ-1 באפריל 2027, מאפיין התמיכה STABLE יוסר אחרי שתוקף התמונה יפוג.

תמונות עם המאפיין STABLE נתמכות ומנוטרות לאיתור נקודות חולשה למשך שישה חודשים. מומלץ לכתוב מדיניות אימות שמבוססת על המאפיין STABLE.

במקרים נדירים, יכול להיות שהמאפיין STABLE יוסר במהלך תקופת הזכאות לתמיכה הרגילה של שישה חודשים, למשל אם מתגלות נקודות חולשה קריטיות.

USABLE

עדיין אפשר להשתמש בתמונות עם המאפיין USABLE בלבד, אבל הן נחשבות ככאלה שהוצאו משימוש. תמונות שהוצאו משימוש לא נתמכות, והן בנות יותר משישה חודשים. השימוש בהם הוא באחריותכם בלבד.

לתמונות USABLE יש מאפיין deprecated.deprecated. הערך שלו הוא חותמת הזמן של המועד שבו התמונה צפויה לצאת משימוש. אפשר להציג את המאפיינים של תמונה באמצעות הפקודה gcloud compute images describe או באמצעות ה-method‏ images.get ב-REST. לדוגמה:

gcloud compute images describe confidential-space-240800 \
    --format=json \
    --project=confidential-space-images
EXPERIMENTAL

תמונות שכוללות רק את המאפיין הזה משתמשות בתכונות בגרסת טרום-השקה (Preview). EXPERIMENTAL מיועדות למטרות בדיקה בלבד, ואסור להשתמש בהן בסביבת ייצור.

לתמונה מסוג EXPERIMENTAL אף פעם אין את המאפיינים LATEST,‏ STABLE או USABLE.

מומלץ לעדכן את קובץ האימג' של Confidential Space באופן שוטף. במאמר עדכון קובצי אימג' של Confidential Space מוסבר איך לעדכן את קובץ האימג' של Confidential Space.

דוגמה

הקוד הבא מאמת שנעשה שימוש בגרסה יציבה של קובץ האימג' של Confidential Space:

"STABLE" in assertion.submods.confidential_space.support_attributes
assertion.swname ערכי ספירה

מאמת את התוכנה שפועלת בישות המאמתת. הערך הוא תמיד CONFIDENTIAL_SPACE.

דוגמה
assertion.swname == "CONFIDENTIAL_SPACE"
assertion.swversion מערך של מחרוזות

מאמת את גרסת התוכנה של התמונה של Confidential Space. אנחנו ממליצים להשתמש ב-assertion.submods.confidential_space.support_attributes במקום זאת כדי לטרגט את הגרסה העדכנית של תמונה.

דוגמה
int(assertion.swversion[0]) == 230103

טענות נכונות (assertions) של קונטיינרים

טענת נכוֹנוּת (assertion) סוג תיאור

assertion.submods.container.cmd_override

אינטראקציה עם:

  • מחבר עומס העבודה: מדיניות ההפעלה של allow_cmd_override.
  • מפעיל של עומס עבודה: משתנה המטא-נתונים tee-cmd.
מערך של מחרוזות

אימות של הפקודות והפרמטרים של CMD שמשמשים בתמונת עומס העבודה.

דוגמאות

הקוד הבא מאמת שה-CMD של קובץ האימג' של עומס העבודה לא הוחלף:

size(assertion.submods.container.cmd_override) == 0

הקוד הבא מוודא ש-program הוא התוכן היחיד בשינויים של CMD:

assertion.submods.container.cmd_override == ['program']

assertion.submods.container.env

אינטראקציה עם:

אובייקט JSON

מוודא שמשתני הסביבה והערכים שלהם הועברו באופן מפורש לקונטיינר.

דוגמה

הקוד הבא מוודא שמשתנה הסביבה example-env-1 מוגדר ל-value-1, ו-example-env-2 מוגדר ל-value-2.

assertion.submods.container.env == {"example-env-1": "value-1", "example-env-2": "value-2"}

assertion.submods.container.env_override

אינטראקציה עם:

String

בודק אם מפעיל עומס העבודה החליף את משתני הסביבה בקונטיינר.

דוגמאות

הקוד הבא מוודא שמפעיל עומס העבודה לא שינה את משתנה הסביבה example:

!has(assertion.submods.container.env_override.example)

הקוד הבא מוודא שמפעיל עומס העבודה לא החליף משתני סביבה:

size(assertion.submods.container.env_override) == 0
assertion.submods.container.image_digest String

מאמת את תקציר התמונה של קונטיינר עומס העבודה. הגדרת התנאי הזה מאפשרת לכמה גורמים להסכים על עומס עבודה מורשה שיכול לגשת לנתונים שלהם.

דוגמה
assertion.submods.container.image_digest == "sha256:837ccb607e312b170fac7383d7ccfd61fa5072793f19a25e75fbacb56539b86b"
assertion.submods.container.image_id String

מאמת את מזהה התמונה של קונטיינר עומס העבודה.

דוגמה
assertion.submods.container.image_id == "sha256:652a44b0e911271ba07cf2915cd700fdfa50abd62a98f87a57fdebc59843d93f"

assertion.submods.container.image_reference

אינטראקציה עם:

String

אימות המיקום של קונטיינר עומס העבודה שפועל מעל התמונה של Confidential Space.

דוגמה
assertion.submods.container.image_reference == "us-docker.pkg.dev/PROJECT_ID/WORKLOAD_CONTAINER:latest"

assertion.submods.container.image_signatures

אינטראקציה עם:

אובייקט JSON

הפונקציה מאמתת שלתמונה יש חתימה מסוימת או שהיא חתומה על ידי מפתח ציבורי ואלגוריתם חתימה. הגדרת התנאי הזה מאפשרת לכמה גורמים להסכים על עומס עבודה מורשה שיכול לגשת לנתונים שלהם.

הטענה יכולה לכלול את הרכיבים הבאים:

  • ‫key_id: טביעת האצבע ההקסדצימלית של המפתח הציבורי. כדי לקבל את טביעת האצבע, אפשר להריץ את הפקודה הבאה:

    openssl pkey -pubin -in public_key.pem -outform DER | openssl sha256

    כאשר public_key.pem הוא המפתח הציבורי בפורמט PEM.

  • ‫signature: החתימה על מטען ייעודי (payload) שמשויך לקונטיינר החתום, בהתאם ל פורמט Simple Signing.
  • ‫signature_algorithm: האלגוריתם שמשמש לחתימה על המפתח. אחת מהאפשרויות הבאות:

    • RSASSA_PSS_SHA256 (RSASSA-PSS עם תקציר SHA-256)
    • RSASSA_PKCS1V15_SHA256 (RSASSA-PKCS1 v1_5 עם תקציר SHA-256)
    • ECDSA_P256_SHA256 (ECDSA בעקומת P-256 עם תקציר SHA-256)
דוגמה
['ECDSA_P256_SHA256:PUBLIC_KEY_FINGERPRINT'].exists(fingerprint, fingerprint in assertion.submods.container.image_signatures.map(sig, sig.signature_algorithm+':'+sig.key_id))

assertion.submods.container.restart_policy

אינטראקציה עם:

ערכי ספירה

מאמת את מדיניות ההפעלה מחדש של מרכז האפליקציות של הקונטיינר, למקרה שעומס העבודה נפסק.

הערכים התקינים הם:

  • Never (ברירת מחדל)
  • Always
  • OnFailure
דוגמה
assertion.submods.container.restart_policy == "Never"

טענות נכונות (assertions) של VM

טענת נכוֹנוּת (assertion) סוג תיאור

assertion.google_service_accounts

אינטראקציה עם:

מערך של מחרוזות

אימות שחשבון שירות מסוים מחובר למכונה הווירטואלית שמריצה את עומס העבודה, או שהוא מופיע באמצעות tee-impersonate-service-accounts במטא-נתונים של המכונה הווירטואלית.

דוגמה
workload-service-account@my-project.iam.gserviceaccount.com in assertion.google_service_accounts
assertion.hwmodel String

מאמת את טכנולוגיית Confidential Computing הבסיסית. אלה הפלטפורמות הנתמכות:

  • GCP_AMD_SEV
  • INTEL_TDX
דוגמה
assertion.hwmodel == "GCP_AMD_SEV"

assertion.submods.confidential_space.monitoring_enabled

אינטראקציה עם:

בוליאני

אימות מצב המעקב בישות המאשרת.

דוגמה
assertion.submods.confidential_space.monitoring_enabled.memory == true
assertion.submods.gce.instance_id String

מאמת את המזהה של המכונה הווירטואלית.

דוגמה
assertion.submods.gce.instance_id == "0000000000000000000"
assertion.submods.gce.instance_name String

מאמת את השם של המכונה הווירטואלית.

דוגמה
assertion.submods.gce.instance_name == "workload-vm"
assertion.submods.gce.project_id String

בדיקה שהמכונה הווירטואלית מריצה פרויקט Google Cloud עם מזהה הפרויקט שצוין.

דוגמה
assertion.submods.gce.project_id == "project-id"
assertion.submods.gce.project_number String

בדיקה שהמכונה הווירטואלית פועלת בפרויקט ב- Google Cloud עם מספר הפרויקט שצוין.

דוגמה
assertion.submods.gce.project_number == "00000000000"

assertion.submods.gce.zone

אינטראקציה עם:

  • מפעיל של עומס עבודה: הערך של --zone.
String

מוודא שהמכונה הווירטואלית פועלת באזור שצוין.

דוגמה
assertion.submods.gce.zone == "us-central1-a"

assertion.submods.nvidia_gpu.cc_feature

אינטראקציה עם:

ערכי ספירה

מאמת את התכונות של Confidential Computing שנתמכות על ידי NVIDIA GPU. ב-Confidential Space יש תמיכה רק במצב מעבר GPU יחיד (SPT), כך שהערך הוא תמיד SPT.

למידע נוסף על התמיכה של NVIDIA ב-Confidential Computing, קראו את המאמר NVIDIA Trusted Computing Solutions (PDF).

דוגמה
assertion.submods.nvidia_gpu.cc_feature == "SPT"

assertion.submods.nvidia_gpu.cc_mode

אינטראקציה עם:

ערכי ספירה

מאמת את הסטטוס של מנהל ההתקן של NVIDIA למחשוב סודי. הערכים התקינים הם:

  • ‫OFF: אף אחת מהתכונות של NVIDIA Confidential Computing לא פעילה.
  • ‫ON: החומרה, הקושחה והתוכנה של NVIDIA H100 הפעילו באופן מלא את התכונות של Confidential Computing.
  • ‫DEVTOOLS: ה-GPU נמצא במצב חלקי של Confidential Computing שתואם לתהליכי העבודה של מצב ON, אבל משבית את אמצעי ההגנה.
דוגמה
assertion.submods.nvidia_gpu.cc_mode == "ON"

assertion.submods.nvidia_gpu.gpus

אינטראקציה עם:

מערך של אובייקטים

מאמת את הטענות לגבי כל GPU מאושר של NVIDIA. ב-Confidential Space אפשר להצהיר רק על GPU אחד.

אובייקט gpus נראה בערך כך:

{
  "hwmodel": "GCP_NVIDIA_H100",
  "ueid": "490457405999046854973671575630853621547794591064",
  "l4_serial_number": "1216669666319372030078",
  "driver_version": "570.00",
  "vbios_version": "96.00.9F.00.01"
}
דוגמאות

הקוד הבא מוודא שמודל החומרה הראשון של ה-GPU הוא NVIDIA H100 שפועל ב- Google Cloud:

assertion.submods.nvidia_gpu.gpus[0].hwmodel == "GCP_NVIDIA_H100"

הקוד הבא מאמת שהצהרת האימות כוללת הצהרות שקשורות ל-GPU:

has(assertion.submods.nvidia_gpu.gpus)