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

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

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

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

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

assertion.dbgstat

Interacts with:

ספירה

בודק אם התמונה של 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 או באמצעות שיטת ה-REST‏ images.get. לדוגמה:

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

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

הצהרות של קונטיינרים

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

assertion.submods.container.cmd_override

Interacts with:

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

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

דוגמאות

הקוד הבא מאמת שפקודת ה-CMD של תמונת עומס העבודה לא נכתבה מחדש:

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

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

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

assertion.submods.container.env

Interacts with:

אובייקט 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

Interacts with:

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

Interacts with:

String

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

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

assertion.submods.container.image_signatures

Interacts with:

אובייקט 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

Interacts with:

ספירה

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

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

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

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

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

assertion.google_service_accounts

Interacts with:

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

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

Interacts with:

בוליאני

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

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

Interacts with:

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

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

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

assertion.submods.nvidia_gpu.cc_feature

Interacts with:

ספירה

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

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

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

assertion.submods.nvidia_gpu.cc_mode

Interacts with:

ספירה

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

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

assertion.submods.nvidia_gpu.gpus

Interacts with:

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

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