מידע על מטא-נתונים של מכונות וירטואליות

כל מכונה וירטואלית (VM) שומרת את המטא-נתונים שלה בשרת מטא-נתונים. למכונה הווירטואלית יש גישה אוטומטית ל-API של שרת המטא-נתונים ללא צורך בהרשאה נוספת. ‫Compute Engine שומר את מפתחות המטא-נתונים והערכים של המכונות הווירטואליות והפרויקטים שלכם בספריות. כל ספרייה מאחסנת רשומות של מטא-נתונים בצורה של צמדי מפתח/ערך. חלק מהספריות מכילות ספריות משנה.

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

שימושים במטא-נתונים של מכונות וירטואליות

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

סקריפטים להפעלה ולכיבוי

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

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

תחזוקת המארח

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

מאפייני אורחים

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

מאפייני השותף

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

שיקולי אבטחה של מטא-נתונים

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

עם זאת, לכל תהליך שיכול לשאול את כתובת ה-URL של המטא-נתונים יש גישה לכל הערכים בשרת המטא-נתונים. כולל ערכים של מטא-נתונים בהתאמה אישית, אישורי לקוח ומפתחות פרטיים שאתם כותבים לשרת. ‫Google ממליצה לנקוט משנה זהירות כשכותבים ערכים רגישים לשרת המטא-נתונים או כשמריצים תהליכים של צד שלישי. צריך להפעיל ארגז חול לכל תהליך שלא אמורה להיות לו גישה לשרת המטא-נתונים.

נקודות קצה של שרת מטא-נתונים

אפשר לגשת לשרת המטא-נתונים מנקודות קצה (endpoints) של HTTP ושל HTTPS.

נקודות קצה של שרת מטא-נתונים ב-HTTP

אפשר לגשת לנקודות קצה של HTTP מכל סוגי המכונות הווירטואליות, כולל מכונות וירטואליות מוגנות.

אפשר להשתמש בנקודות הקצה הבאות כדי לגשת לשרת המטא-נתונים באמצעות HTTP:

  • שם DNS (מומלץ): http://metadata.google.internal/computeMetadata/v1
  • כתובת IPv4: ‏ http://169.254.169.254/computeMetadata/v1
  • כתובת IPv6 (רק למכונות וירטואליות עם IPv6 בלבד): http://[fd20:ce::254]/computeMetadata/v1

נקודות קצה (endpoint) של שרת מטא-נתונים ב-HTTPS

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

אפשר להשתמש בנקודות הקצה הבאות כדי לגשת לשרת המטא-נתונים ממכונה וירטואלית מוגנת באמצעות HTTPS:

  • שם DNS (מומלץ): https://metadata.google.internal/computeMetadata/v1
  • כתובת IPv4: ‏ https://169.254.169.254/computeMetadata/v1
  • כתובת IPv6 (רק למכונות וירטואליות עם IPv6 בלבד): https://[fd20:ce::254]/computeMetadata/v1

יתרונות השימוש בנקודת הקצה של שרת המטא-נתונים מסוג HTTPS

שימוש בנקודת הקצה מסוג HTTPS לשליחת שאילתה לשרת המטא-נתונים מספק את היתרונות הבאים:

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

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

איך התהליך עובד

במכונות וירטואליות מוגנות שמותקנת בהן סביבת האורח, התהליכים הבאים מתבצעים ב-VM:

  1. ‫Compute Engine יוצר שלוש תעודות באופן הבא:

    • אישור בסיס בחתימה עצמית: אישור ייחודי שנוצר על ידי Compute Engine עבור המכונה הווירטואלית. ‫Compute Engine יוצר את האישור הזה רק בהפעלה הראשונה של המכונה הווירטואלית, והוא תקף ל-50 שנה.
    • אישור זהות של השרת: אישור לשרת המטא-נתונים.
    • אישור זהות של לקוח: אישור של הלקוח. שרת המטא-נתונים לא שומר את האישור הזה במטמון. סביבת האורח מקבלת אישור חדש משרת המטא-נתונים בכל קריאה לנקודת הקצה של אישור הלקוח. האישור הזה תקף ל-7 ימים. סביבת האורח צריכה לקרוא לנקודת הקצה לפחות אחת ל-7 ימים כדי לקבל אישור חדש ולשמור על אישור תקף.

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

  2. באיתחול הראשון, Compute Engine מעביר את החלק הציבורי של אישור הבסיס לסביבת האורח של ה-VM באמצעות משתנה UEFI שנוצר על ידי Google. לאחר מכן, אישור הבסיס הזה נשמר במכונה הווירטואלית.

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

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

הפעלה של הגדרת אישורים אוטומטית

אם רוצים שהפרויקטים או המכונות הווירטואליות יגדירו באופן אוטומטי את האישורים של HTTPS MDS, צריך להגדיר את מפתח המטא-נתונים disable-https-mds-setup במכונה הווירטואלית או בפרויקט עם הערך FALSE.

מידע נוסף זמין במאמר בנושא מפתחות מטא-נתונים מוגדרים מראש.

איפה מאוחסנים האישורים

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

אישורי בסיס

‫CentOS/RHEL/Rocky

אישורים בסיסיים למכונות וירטואליות של CentOS,‏ Red Hat Enterprise Linux‏ (RHEL) ו-Rocky Linux מאוחסנים במיקום הבא:

/run/google-mds-mtls/root.crt

‫Debian/Ubuntu

אישורים בסיסיים למכונות וירטואליות של Debian ו-Ubuntu מאוחסנים במיקום הבא:

/run/google-mds-mtls/root.crt

פדורה

אישורי הבסיס למכונות וירטואליות של Fedora מאוחסנים במיקום הבא:

/run/google-mds-mtls/root.crt

SLES

אישורי הבסיס למכונות וירטואליות של SUSE Linux Enterprise Server ‏ (SLES) מאוחסנים במיקום הבא:

/run/google-mds-mtls/root.crt

Windows

אישורי הבסיס למכונות וירטואליות של Windows מאוחסנים במיקום הבא:

C:\ProgramData\Google\ComputeEngine\mds-mtls-root.crt

אישורי זהות לקוח

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

Linux

אישורי זהות של לקוחות למכונות וירטואליות של Linux מאוחסנים במיקום הבא:

/run/google-mds-mtls/client.key

Windows

אישורי זהות של לקוחות למכונות וירטואליות של Windows מאוחסנים במיקומים הבאים:

  • C:\ProgramData\Google\ComputeEngine\mds-mtls-client.key

הפעלת אחסון של אישור בסיס במאגר אישורים של מערכת ההפעלה

אם רוצים ש-Compute Engine יוסיף אוטומטית את אישור הבסיס של שרת המטא-נתונים של HTTPS למאגר האישורים המהימנים של מערכת ההפעלה, צריך להגדיר את מפתח המטא-נתונים enable-https-mds-native-cert-store במכונה או בפרויקט לערך TRUE.

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

‫CentOS/RHEL/Rocky

/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem

‫Debian/Ubuntu

/etc/ssl/certs/ca-certificates.crt

פדורה

/etc/pki/tls/certs/ca-bundle.crt

SLES

/etc/ssl/ca-bundle.pem

Windows

Cert:\LocalMachine\Root

מידע נוסף זמין במאמר בנושא מפתחות מטא-נתונים מוגדרים מראש.

רוטציה של אישור בסיס

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

מפתחות מטא-נתונים מוגדרים מראש ומותאמים אישית

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

מפתחות מטא-נתונים מוגדרים מראש

מפתחות מטא-נתונים מוגדרים מראש הם מפתחות מטא-נתונים שנוצרו על ידי Compute Engine. כשיוצרים מכונה וירטואלית, Compute Engine מגדיר באופן אוטומטי את ערכי המטא-נתונים של חלק מהמפתחות האלה במכונה הווירטואלית – לדוגמה, מזהה המכונה הווירטואלית או מזהה הפרויקט. למפתחות מוגדרים מראש שבהם Compute Engine לא מגדיר ערך באופן אוטומטי, אפשר לבחור מתוך קבוצת ערכים שזמינים בהתאם להגדרת המערכת. לדוגמה, כדי להפעיל OS Login במכונה וירטואלית, אפשר להגדיר את הערך של המפתח המוגדר מראש enable-oslogin ל-TRUE במכונה הווירטואלית הזו. כדי להשבית את OS Login במכונה וירטואלית מסוימת, אפשר לעדכן את הערך של המפתח ל-FALSE. אפשר לעדכן רק את הערכים של המפתחות האלה, אבל לא את המפתחות עצמם.

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

מפתחות מטא-נתונים בהתאמה אישית

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

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

סוגי מטא-נתונים

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

מטא-נתונים של הפרויקט

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

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

מטא-נתונים אזוריים

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

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

מטא-נתונים של מופע

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

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

איך המטא-נתונים מסודרים

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

סוג המטא-נתונים ספרייה
מטא-נתונים של פרויקטים ואזורים
  • נקודת קצה ב-HTTP:
    http://metadata.google.internal/computeMetadata/v1/project
  • נקודת קצה (endpoint) של HTTPS:
    https://metadata.google.internal/computeMetadata/v1/project
מטא-נתונים של מופע
  • נקודת קצה ב-HTTP:
    http://metadata.google.internal/computeMetadata/v1/instance
  • נקודת קצה (endpoint) של HTTPS:
    https://metadata.google.internal/computeMetadata/v1/instance

כל ספרייה מאחסנת רשומות של מטא-נתונים בצורה של צמדי מפתח/ערך. חלק מרשומות המטא-נתונים הן גם ספריות שמכילות מפתחות אחרים של מטא-נתונים. רשומות המטא-נתונים שמשמשות כספריות מסומנות בקו נטוי (/) בסוף שם מפתח המטא-נתונים. לדוגמה, /project/attributes/ היא ספרייה בספרייה project/ שמכילה מפתחות אחרים של מטא-נתונים. כדי ליצור רשימת מטא-נתונים משלכם, צריך להשתמש בלוכסן בסוף (/) בשם מפתח המטא-נתונים כשיוצרים את רשומת המטא-נתונים בהתאמה אישית.

כששולחים שאילתה לנקודת קצה של מטא-נתונים, הפורמט של גוף התגובה תלוי בנקודת הקצה. אם שולחים שאילתה לנקודת קצה שמאחסנת ערך יחיד, כמו hostname, גוף התשובה מכיל את הערך הזה כטקסט פשוט. אם שולחים שאילתה לנקודת קצה שמשמשת כספרייה, כמו /project/attributes/, גוף התשובה מכיל רשימה של הערכים בספרייה הזו, עם ערך אחד בכל שורה.

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

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

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

לדוגמה, נניח שהגדרתם זוג מטא-נתונים של פרויקט key-1=value-1. נניח שאתם מגדירים גם זוג מטא נתונים אזוריים key-1=zonal-value-1 רק לאזור us-central1-a. כל המכונות הווירטואליות באזור us-central1-a בפרויקט יקבלו בירושה את key-1=zonal-value1 כזוג מטא-נתונים. צמד המטא-נתונים נשאר key-1=value-1 בכל המכונות הווירטואליות באזורים אחרים שבהם לא הגדרתם מטא-נתונים אזוריים ל-key-1.

מה השלב הבא?