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

מידע נוסף על שימוש בהצהרות אימות זמין במאמר בנושא יצירת מדיניות אימות.

בטבלה הבאה מפורטות האסרטיבים הזמינים ליצירת מדיניות אימות. מדיניות יכולה לאמת טענות שמועלות על ידי תמונת Confidential Space, קונטיינר עומס העבודה ומכונת ה-VM.

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

טענת נכוֹנוּת (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 מערך של מחרוזות

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

אלה מאפייני התמיכה התקינים:

  • LATEST: זו הגרסה האחרונה של התמונה, והיא נתמכת. התמונה LATEST היא גם STABLE וגם USABLE.
  • STABLE: הגרסה הזו של התמונה נתמכת ומנוטרת כדי לזהות נקודות חולשה. תמונה של STABLE היא גם USABLE.
  • USABLE: תמונה עם המאפיין הזה בלבד לא נתמכת יותר, ולא מתבצע בה יותר מעקב אחר נקודות חולשה. השימוש הוא באחריותכם בלבד.
  • EXPERIMENTAL: תמונה עם המאפיין הזה בלבד משתמשת בתכונות של תצוגה מקדימה. היא מיועדת למטרות בדיקה בלבד, ואסור להשתמש בה בסביבת ייצור. לתמונה EXPERIMENTAL אף פעם אין את המאפיינים LATEST,‏ STABLE או USABLE.
דוגמה

הקוד הבא מאמת שנעשה שימוש בגרסה יציבה של תמונת 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

טענות לגבי מאגר תגים

טענת נכוֹנוּת (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) שמשויך לקונטיינר החתום ושעומד ב פורמט החתימה הפשוט.
  • signature_algorithm: האלגוריתם שמשמש לחתימה על המפתח. אחת מהאפשרויות הבאות:

    • RSASSA_PSS_SHA256 (RSASSA-PSS עם תמצית SHA-256 )
    • RSASSA_PKCS1V15_SHA256 (RSASSA-PKCS1 v1_5 with a SHA-256 digest)
    • 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"

טענות לגבי מכונות וירטואליות

טענת נכוֹנוּת (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

מאמת את השם של מכונת ה-VM.

דוגמה
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.

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

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

assertion.submods.nvidia_gpu.cc_mode

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

ספירה

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

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

assertion.submods.nvidia_gpu.gpus

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

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

מאמת את הטענות לגבי כל מעבד גרפי מאומת של 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)