יצירה והענקה של גישה למשאבים סודיים

כדי שעומס עבודה יוכל לגשת לנתונים סודיים, משתפי הפעולה עם הנתונים צריכים להגדיר את המשאבים הבאים:

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

שמירת הנתונים המוצפנים

אתם יכולים להשתמש בכל Google Cloud שירות שמאחסן נתונים כדי לארח את הנתונים הסודיים שלכם. לדוגמה, אתם יכולים להשתמש באחד מהשירותים הבאים:

חשוב לוודא שהנתונים האלה מוצפנים במנוחה, בין אם באמצעות תכונות מובנות או באמצעות שירות כמו Cloud Key Management Service ‏ (Cloud KMS).

אישור עומס העבודה באמצעות מאגר זהויות של עומסי עבודה

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

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

  • שירות אימות (attestation): השירות הזה מוודא שעומס העבודה הוא מכונה וירטואלית חסויה, ובסופו של דבר מחזיר אסימון אימות OpenID Connect‏ (OIDC) לספק ה-WIP. המפעיל של עומס העבודה מגדיר את שירות האימות שבו נעשה שימוש, והוא צריך להיות זהה לשירות האימות שנוסף לספק של מאגר הזהויות של עומס העבודה כדי לקבל גישה.

  • מיפוי מאפיינים: מאפיינים באסימוני גישה של שירות אסימוני האבטחה שממופים לטענות שמונפקות על ידי ישות האימות – במקרה הזה, המכונה הווירטואלית שבה פועל עומס העבודה. ההצהרות נוצרות על ידי מכונת ה-VM עצמה, התמונה של Confidential Space וקונטיינר עומס העבודה, ומועברות לספק WIP על ידי עומס העבודה. המאפיינים האלה משמשים למטרות שונות, כמו יצירת נתיבי ביקורת ב-Cloud Logging, וגם להקצאת תפקידים באמצעות IAM על סמך אימות של הצהרות ישות, כמו סיכומי תמונות של קונטיינרים של עומסי עבודה. מידע נוסף על מיפוי מאפיינים

  • מדיניות אימות: סדרה של תנאים שגורמים מאומתים צריכים לעמוד בהם כדי לקבל גישה, על סמך ההצהרות שהם מצהירים.

כשעומס עבודה מתחיל, Confidential Space Launcher שולח את דוח האימות שלו לשירות אימות שהוגדר על ידי המפעיל של עומס העבודה. השירות מאמת את המכונה הווירטואלית Confidential ומחזיר אסימון אימות OIDC. הטוקן הזה תקף לשעה אחת, והוא מתעדכן אוטומטית.

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

גישה לעומסי עבודה חיצוניים

לפני שמגדירים את ה-WIP ואת הספק, צריך לבחור איך עומס העבודה יגשת למשאבים: גישה ישירה למשאבים או התחזות לחשבון שירות.

גישה ישירה למשאבים

אנחנו ממליצים להשתמש בשיטת הגישה הישירה למשאבים עבור עומסי עבודה.

בשיטה הזו מגדירים זהות מאוחדת בספק WIP שקשורה להצהרות של ישות מאמתת. כך אפשר להעניק לעומס עבודה הרשאה לגשת למשאבים ישירות דרך קישורי IAM, על סמך מאפיינים כמו תקציר (digest) של קובץ האימג' של הקונטיינר של עומס העבודה.

לגישה ישירה למשאבים יש את היתרונות הבאים:

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

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

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

  • אין צורך למפות את מאפיין מופע מכונה וירטואלית selfLink למאפיין google.subject בספק WIP. ערכים ארוכים מאוד selfLink עלולים לחרוג מהמגבלה של 127 בייט של המאפיין הזה, ולגרום לכך שאימות ספק ה-WIP ייכשל.

התחזות לחשבון שירות

שיטת ההתחזות לחשבון שירות כוללת את הפעולות הבאות: כל משתף פעולה בנתונים מגדיר חשבון שירות כדי לפענח את הנתונים הפרטיים שלו, ואז מצרף את חשבון השירות הזה ל-WIP שלו. הם גם מציינים את חשבון השירות של עומס העבודה בספק ה-WIP שלהם, מה שמאפשר לחשבון השירות של עומס העבודה להתחזות לחשבונות השירות של משתפי הפעולה עם הנתונים, כדי שהוא יוכל לאחזר את הנתונים הסודיים שלהם ולבצע בהם פעולות.

התחזות לחשבון שירות צריכה לשמש רק בתרחישים הבאים:

יכול להיות ששיטת ההתחזות לחשבון השירות לא תצליח לבצע אימות לספק WIP אם למכונה וירטואלית יש מאפיין selfLink ארוך מאוד. הסיבה לכך היא שההצהרה sub באסימון האימות – שמוגדרת לערך selfLink – ממופה בספק WIP למאפיין google.subject, שיש לו מגבלה של 127 בייט.

אם ערכי selfLink של מכונות VM חורגים מ-127 בייט, צריך לשנות את השם של מכונות ה-VM כדי לקצר את selfLink, או להשתמש בשיטה של גישה ישירה למשאבים.

הגדרה של WIP וספק

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

גישה ישירה למשאבים

שיטת הגישה הישירה למשאבים כוללת הגדרה של WIP וספק, ואז הגדרה של תפקידי IAM על סמך תקציר של קובץ אימג' של קונטיינר של עומס עבודה ספציפי.

הגדרה של WIP וספק

כדי להגדיר WIP וספק, פועלים לפי ההוראות הבאות:

  1. יוצרים את מאגר הזהויות של עומסי העבודה:

    gcloud iam workload-identity-pools create DATA_COLLABORATOR_POOL_NAME \
        --location=global
    
  2. יוצרים ספק OIDC ב-WIP:

    gcloud iam workload-identity-pools providers create-oidc attestation-verifier \
        --location=global \
        --workload-identity-pool=DATA_COLLABORATOR_POOL_NAME \
        --issuer-uri="ISSUER_URI" \
        --allowed-audiences="https://sts.googleapis.com" \
        --attribute-mapping="google.subject=\"gcpcs::\"+assertion.submods.container.image_digest+\"::\"+assertion.submods.gce.project_number+\"::\"+assertion.submods.gce.instance_id,attribute.image_digest=assertion.submods.container.image_digest" \
        --attribute-condition="assertion.swname == 'CONFIDENTIAL_SPACE' \
            && 'STABLE' in assertion.submods.confidential_space.support_attributes"
    

    בדוגמה הזו נעשה שימוש בערכים הבאים:

    • issuer-uri שתואם לשירות האימות שבו אתם משתמשים:

      • Google Cloud Attestation: https://confidentialcomputing.googleapis.com

      • ‫Intel Trust Authority: ‏ https://portal.trustauthority.intel.com

    • allowed-audiences מתוך https://sts.googleapis.com. זהו Security Token Service של Google, שממיר פרטי כניסה באסימוני גישה.

    • attribute-mapping של google.subject, עם הערך הבא:

      \"gcpcs::\"+assertion.submods.container.image_digest+\"::\"+assertion.submods.gce.project_number+\"::\"+assertion.submods.gce.instance_id,attribute.image_digest=assertion.submods.container.image_digest
      

      הערך הזה מורכב באמצעות Common Expression Language‏ (CEL). הערכים הבאים מוקצים למאפיין gcpcs ומופיעים ב-Cloud Logging בכל פעם שעומס העבודה ניגש למשאבים:

      • assertion.submods.container.image_digest: תקציר של קובץ האימג' של הקונטיינר של עומס העבודה.

      • assertion.submods.gce.project_number: מספר הפרויקט של מופע המכונה הווירטואלית.

      • assertion.submods.gce.instance_id: המזהה של מופע ה-VM.

      בנוסף, הערך של attribute.image_digest מוגדר ל-assertion.submods.container.image_digest, שהוא הגיבוב של תמונת מאגר עומס העבודה. המאפיין הזה ממופה כדי שתוכלו להעניק לזהות המאוחדת תפקידי IAM על סמך תקציר הודעה (digest) ספציפי של תמונה.

      אתם יכולים למפות כל אחת מהטענות הזמינות של עומס העבודה, כל עוד האורך הכולל של הערך google.subject קטן מ-127 בייטים.

    • הדוגמה הבאה attribute-conditions, שיוצרת מדיניות אימות. אם התנאים האלה תואמים לאישורים של עומס העבודה, עומס העבודה מקבל גישה למשאבים הסודיים בתור זהות מאוחדת:

      • assertion.swname == 'CONFIDENTIAL_SPACE': אימות ש-Confidential Space היא התוכנה שפועלת במכונה הווירטואלית, עם כל הערבויות המובנות לאבטחה.

      • 'STABLE' in assertion.submods.confidential_space.support_attributes: מאמת שהתמונה של Confidential Space בייצור נמצאת בשימוש, וכוללת את STABLE מאפיין התמיכה.

      דוגמאות נוספות לתנאים של מאפיינים מופיעות במאמר בנושא יצירת מדיניות אימות.

הענקת תפקידי IAM לזהויות מאוחדות

אחרי שיוצרים ספק WIP, אפשר להקצות לזהות המאוחדת תפקיד IAM על סמך התאמה בין תקציר (digest) של קובץ מאגר תמונות של עומס העבודה של הזהות לבין ערך צפוי.

בדוגמה הבאה מוצגת הענקת הרשאה לזהות מאוחדת לפענח מפתח ספציפי של Cloud Key Management Service:

gcloud kms keys add-iam-policy-binding \
    projects/DATA_COLLABORATOR_PROJECT_ID/locations/global/keyRings/DATA_COLLABORATOR_KEYRING_NAME/cryptoKeys/DATA_COLLABORATOR_KEY_NAME \
    --member="principalSet://iam.googleapis.com/projects/DATA_COLLABORATOR_PROJECT_NUMBER/locations/global/workloadIdentityPools/DATA_COLLABORATOR_POOL_NAME/attribute.image_digest/WORKLOAD_CONTAINER_IMAGE_DIGEST" \
    --role=roles/cloudkms.cryptoKeyDecrypter

התחזות לחשבון שירות

השיטה של התחזות לחשבון שירות כוללת את הפעולות הבאות:

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

  2. יצירת WIP בכל אחד מהפרויקטים של שותפי הנתונים, ואז צירוף חשבון השירות של כל פרויקט שנוצר זה עתה ל-WIP שלו.

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

הגדרת חשבונות שירות לפענוח נתונים סודיים

  1. יוצרים את חשבונות השירות בפרויקטים של שיתוף הפעולה עם הנתונים:

    gcloud iam service-accounts create DATA_COLLABORATOR_SERVICE_ACCOUNT_NAME
    

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

    gcloud kms keys add-iam-policy-binding \
        projects/DATA_COLLABORATOR_PROJECT_ID/locations/global/keyRings/DATA_COLLABORATOR_KEYRING_NAME/cryptoKeys/DATA_COLLABORATOR_KEY_NAME \
        --member=serviceAccount:DATA_COLLABORATOR_SERVICE_ACCOUNT_NAME@DATA_COLLABORATOR_PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/cloudkms.cryptoKeyDecrypter
    

הגדרה של WIP וספק

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

  1. יוצרים את מאגר הזהויות של עומסי העבודה:

    gcloud iam workload-identity-pools create DATA_COLLABORATOR_POOL_NAME \
        --location=global
    
  2. מצרפים את חשבון השירות שרוצים לבצע אליו התחזות אל ה-WIP עם התפקיד roles/iam.workloadIdentityUser:

    gcloud iam service-accounts add-iam-policy-binding \
        DATA_COLLABORATOR_SERVICE_ACCOUNT_NAME@DATA_COLLABORATOR_PROJECT_ID.iam.gserviceaccount.com \
        --member="principalSet://iam.googleapis.com/projects/DATA_COLLABORATOR_PROJECT_NUMBER/locations/global/workloadIdentityPools/DATA_COLLABORATOR_POOL_NAME/*" \
        --role=roles/iam.workloadIdentityUser
    
  3. יוצרים ספק OIDC במאגר הזהויות של עומסי העבודה ומגדירים בו את חשבון השירות של עומס העבודה, כדי שיוכל להתחזות לחשבון השירות של שירות שיתוף הנתונים:

    gcloud iam workload-identity-pools providers create-oidc attestation-verifier \
        --location=global \
        --workload-identity-pool=DATA_COLLABORATOR_POOL_NAME \
        --issuer-uri="https://confidentialcomputing.googleapis.com/" \
        --allowed-audiences="https://sts.googleapis.com" \
        --attribute-mapping="google.subject=assertion.sub" \
        --attribute-condition="assertion.submods.container.image_digest == 'WORKLOAD_CONTAINER_IMAGE_DIGEST' \
    && 'WORKLOAD_SERVICE_ACCOUNT_NAME@WORKLOAD_OPERATOR_PROJECT_ID.iam.gserviceaccount.com' in assertion.google_service_accounts \
    && assertion.swname == 'CONFIDENTIAL_SPACE' \
    && 'STABLE' in assertion.submods.confidential_space.support_attributes"
    

    בדוגמה הזו נעשה שימוש בערכים הבאים:

    • issuer-uri של https://confidentialcomputing.googleapis.com/, כלומר Google Cloud Attestation משמש כשירות האימות.

    • allowed-audiences מתוך https://sts.googleapis.com. זהו Security Token Service של Google, שממיר פרטי כניסה באסימוני גישה.

    • attribute-mapping של google.subject, עם הערך assertion.sub. זהו selfLink של המכונה הוירטואלית, כפי שמוגדר בהצהרת sub באסימון האימות.

      מכונת ה-VM selfLink מופיעה ב-Cloud Logging בכל פעם שעומס העבודה ניגש למשאבים.

    • הדוגמה הבאה attribute-conditions, שיוצרת מדיניות אימות. אם התנאים האלה תואמים לטענות הנכוֹנוּת של עומס העבודה, עומס העבודה מקבל גישה למשאבים בתור זהות מאוחדת:

      • assertion.submods.container.image_digest == 'WORKLOAD_CONTAINER_IMAGE_DIGEST': מאמת שהתקציר של קובץ אימג' של קונטיינר של עומס העבודה תואם לערך הצפוי.

      • 'WORKLOAD_SERVICE_ACCOUNT_NAME@WORKLOAD_PROJECT_ID.iam.gserviceaccount.com' in assertion.google_service_accounts: מאמת את חשבון השירות שמצורף לעומס העבודה כדי לוודא שהוא תואם לחשבון השירות הצפוי, ואז משתמש בו כדי להתחזות לחשבון השירות של שותף הנתונים.

      • assertion.swname == 'CONFIDENTIAL_SPACE': אימות ש-Confidential Space היא התוכנה שפועלת במכונה הווירטואלית, עם כל הערבויות המובנות לאבטחה.

      • 'STABLE' in assertion.submods.confidential_space.support_attributes: מאמת שהתמונה של Confidential Space בייצור נמצאת בשימוש, וכוללת את STABLE מאפיין התמיכה.

      דוגמאות נוספות לתנאים של מאפיינים מופיעות במאמר בנושא יצירת מדיניות אימות.

יצירת מדיניות אימות

כחלק מתהליך יצירת WIP, צריך ליצור מדיניות אימות. הטענות של ישות מאמתת צריכות להתאים למדיניות שלכם כדי שהיא תוכל לגשת לנתונים שלכם.

כללי המדיניות נכתבים ב-Common Expression Language‏ (CEL), והם מורכבים מסדרה של הצהרות שאפשר לשרשר יחד באמצעות האופרטור &&.

ההצהרות משתמשות באסרטיבים מהתמונה של Confidential Space, מהתמונה של קונטיינר עומס העבודה או ממופע המכונה הווירטואלית כמשתנים, ובערך שציינתם כביטוי. לדוגמה, הנה מדיניות שמחייבת שעומס העבודה ישתמש ב-Confidential Space, ושעליו להשתמש בSTABLE תמונה של Confidential Space, ושהאזור שבו פועלת מכונת ה-VM של עומס העבודה יהיה us-central1-a:

assertion.swname == 'CONFIDENTIAL_SPACE' \
&& 'STABLE' in assertion.submods.confidential_space.support_attributes" \
&& assertion.submods.gce.zone == "us-central1-a"

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

הצהרות אימות (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)