עומסי העבודה שאתם מריצים ב-Confidential Google Kubernetes Engine Nodes יכולים לגשת לתכונות שלמות ואבטחה של הפלטפורמה ולהשתמש בהן, כמו מודולים וירטואליים של Trusted Platform (vTPM) ודוחות אימות (attestation) של Confidential Computing. במסמך הזה נסביר למהנדסי אבטחה איך להפוך מכשירי vTPM ומכשירים מבוססי-חומרה לגלויים לעומסי עבודה של GKE, כדי לבצע משימות כמו אימות (attestation) מרחוק, איטום סודות ויצירת מספרים אקראיים.
כדאי לעיין במקורות המידע הבאים:
טכנולוגיית ה-Confidential Computing הספציפית שבה אתם משתמשים תלויה במודל האיומים ובדרישות האבטחה של הארגון שלכם. מידע נוסף זמין במאמר בנושא טכנולוגיות של Confidential Computing.
משימות שקשורות ל-Confidential Computing
אפשר לגשת ל-vTPM ולמודולים של חומרה מ-Pods שפועלים בצמתים של Confidential GKE. אפשר להשתמש במודולים האלה כדי לבצע פעולות קריפטוגרפיות כמו איטום סודות או אימות מרחוק. המודולים הספציפיים שמשמשים למשימות האלה תלויים בטכנולוגיית Confidential Computing שבה נעשה שימוש בצמתים, באופן הבא:
- איטום סודות: בכל הטכנולוגיות של Confidential Computing, עומסי עבודה יכולים להשתמש ב-vTPM של מכונה וירטואלית מוגנת כבסיס מהימן לאיטום סודות.
אימות מרחוק: עומסי עבודה יכולים להשתמש באחד מהמודולים הבאים לאימות מרחוק:
- AMD SEV: vTPM של מכונה וירטואלית מוגנת.
- AMD SEV-SNP: מעבד AMD מאובטח שמבוסס על חומרה.
- Intel TDX: מודול Intel TDX מבוסס-חומרה.
למידע נוסף על אופן הפעולה של אימות מרחוק בכל אחת מהטכנולוגיות האלה של Confidential Computing, אפשר לעיין במאמר ארכיטקטורת האימות והראיות.
לפני שמתחילים
לפני שמתחילים, חשוב לוודא שביצעתם את הפעולות הבאות:
- מפעילים את ממשק Google Kubernetes Engine API. הפעלת Google Kubernetes Engine API
- כדי להשתמש ב-CLI של Google Cloud למשימה הזו, צריך להתקין ואז לאתחל את ה-CLI של gcloud. אם התקנתם בעבר את ה-CLI של gcloud, מריצים את הפקודה
gcloud components updateכדי לקבל את הגרסה העדכנית. יכול להיות שגרסאות קודמות של ה-CLI של gcloud לא יתמכו בהרצת הפקודות שמופיעות במסמך הזה.
- מפעילים את התכונה 'צמתים חסויים של GKE' באשכול או במאגר צמתים שעומדים בכל התנאים שמפורטים בקטע דרישות. מידע נוסף זמין במאמרים הגדרה של Confidential GKE Nodes ברמת האשכול או הגדרה של Confidential GKE Nodes ברמת מאגר הצמתים.
דרישות
אפשר להשתמש ב-Confidential GKE Nodes בתנאים הבאים:
האשכולות ומאגרי הצמתים צריכים להריץ אחת מהגרסאות הבאות, בהתאם למודול Confidential Computing שרוצים לגשת אליו:
- vTPMs: כל גרסה של GKE.
- מכשירים מבוססי חומרה של AMD SEV-SNP: GKE גרסה 1.33.5-gke.1350000 ואילך או גרסה 1.34.1-gke.2037000 ואילך.
- מכשירים מבוססי-חומרה של Intel TDX: GKE גרסה 1.33.5-gke.1697000 ואילך או גרסה 1.34.1-gke.2909000 ואילך.
מאגרי הצמתים צריכים להיות במיקום של Compute Engine שבו יש את סוגי המכונות המתאימים. מידע נוסף על זמינות אזורית זמין במאמר סוגי מכונות, מעבדים ותחומים.
הצמתים צריכים להשתמש בתמונת הצומת של מערכת ההפעלה שמותאמת לקונטיינרים.
התקנת פלאגין למכשיר
כדי שמידע על תקינות ואבטחה יהיה גלוי ל-Pods של GKE, צריך להתקין תוסף למכשיר. כדי להשתמש ב-DaemonSet להתקנת הפלאגין, מבצעים את השלבים הבאים:
מתחברים לאשכול:
gcloud container clusters get-credentials CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATIONמחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER_NAME: השם של האשכול. -
CONTROL_PLANE_LOCATION: האזור או האזור של מישור הבקרה של האשכול, למשלus-central1אוus-central1-a.
-
יוצרים את
cc-device-pluginDaemonSet:kubectl create -f https://raw.githubusercontent.com/google/cc-device-plugin/main/manifests/cc-device-plugin.yaml
אחרי שיוצרים את DaemonSet, כל מכשירי Confidential Computing בצמתים של Confidential GKE Nodes הופכים לגלויים ל-Pods שפועלים בצמתים האלה.
גישה למכשירים עם Confidential Computing מ-Pods
אחרי שיוצרים את DaemonSet כדי להתקין את תוסף המכשיר, אפשר לגשת ל-vTPM ולמכשירים מבוססי-חומרה מ-Pods באופן דומה לאופן שבו מבקשים משאבים מורחבים אחרים ב-Kubernetes. בקטעים הבאים מוסבר איך לגשת ל-vTPM מכל Pod ואיך לגשת למודולים מבוססי-חומרה בצמתים של AMD SEV-SNP ו-Intel TDX.
גישה ל-vTPM מ-Pods
כדי לגשת ל-vTPM של מכונה וירטואלית מוגנת מכל Pod שפועל בצמתים של Confidential GKE, מוסיפים את המכשיר google.com/cc למגבלות המשאבים של הקונטיינר. בשלבים הבאים מוסבר איך לבקש גישה ל-vTPM בתרמיל לדוגמה:
שומרים את מניפסט ה-Pod הבא בשם
example-vtpm-pod.yaml:apiVersion: v1 kind: Pod metadata: name: my-vtpm-pod spec: containers: - name: test-vtpm image: ubuntu command: ["/bin/sh", "-c", "ls -l /dev/tpmrm0; sleep 3600"] ports: - containerPort: 8080 name: http resources: limits: google.com/cc: 1יוצרים את הפוד:
kubectl apply -f example-vtpm-pod.yamlל-Pod יש גישה למכשיר
/dev/tpmrm0.כדי לוודא של-Pod יש גישה ל-vTPM, בודקים את יומני ה-Pod:
kubectl logs my-vtpm-podאם הפלט מכיל מידע על קובץ, המשמעות היא של-Pod יש גישה למכשיר.
אפשר לבצע פעולות במכשיר מתוך קוד האפליקציה. לדוגמה, אפשר להשתמש בספריית Go-TPM כדי לתקשר עם ה-vTPM ולבצע משימות כמו איטום. אם משתמשים ב-AMD SEV, אפשר גם להשתמש ב-vTPM כדי לבצע אימות מרחוק של מופע המכונה הווירטואלית הסודית.
גישה למודולים מבוססי-חומרה מ-Pods
אם אתם משתמשים ב-AMD SEV-SNP או ב-Intel TDX, אתם יכולים גם לגשת למודולים המתאימים שמבוססים על חומרה ב-Pods על ידי ציון הסלקטור המתאים במגבלות משאבי הקונטיינר. חובה להשתמש במודולים האלה כדי לבצע אימות מרחוק של צמתים שמשתמשים ב-AMD SEV-SNP וב-Intel TDX, כי vTPM הוא לא שורש המהימנות למדידות בטכנולוגיות האלה.
השלבים הבאים מסבירים איך לבקש גישה למעבד המאובטח של AMD או למודול Intel TDX:
שומרים אחת מהדוגמאות הבאות של Pod:
בקשת מכשירי AMD SEV-SNP:
בקשת מכשירי Intel TDX:
יוצרים את הפוד:
kubectl create -f PATH_TO_POD_MANIFESTמחליפים את
PATH_TO_POD_MANIFESTבנתיב לקובץ המניפסט של ה-Pod ששמרתם.ל-Pods יש גישה לאחד מהמכשירים הבאים:
-
/dev/sev-guestל-AMD SEV-SNP. -
/dev/tdx_guestל-Intel TDX.
-
כדי לוודא של-Pod יש גישה למכשיר, בודקים את יומני ה-Pod:
kubectl logs POD_NAMEמחליפים את
POD_NAMEבשם של ה-Pod לדוגמה שפרסתם בשלב הקודם.אם הפלט מכיל מידע על קובץ, המשמעות היא של-Pod יש גישה למכשיר.