הגדרה של מאפייני אורח ושאילתות לגביהם

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

  • ניהול ותזמור של עומסי עבודה
  • ניהול מערכות הפעלה של אורחים
  • פתרון בעיות בהגדרות של מכונות Compute

לפני שמתחילים

  • במכונות וירטואליות של Windows Server, צריך להשתמש ב-PowerShell 3.0 ואילך. מומלץ להשתמש ב-ctrl+v כדי להדביק את בלוקי הקוד שהועתקו.
  • אם עדיין לא עשיתם את זה, תצטרכו להגדיר אימות. אימות הוא תהליך שבו מאמתים את הזהות שלכם כדי לקבל גישה לממשקי API ולשירותים של Cloud de Confiance by S3NS . כדי להריץ קוד או דוגמאות מסביבת פיתוח מקומית, אפשר לבצע אימות ל-Compute Engine באחת מהדרכים הבאות:

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

    המסוף

    כשמשתמשים במסוף Cloud de Confiance כדי לגשת לשירותים ולממשקי ה-API, לא צריך להגדיר אימות. Cloud de Confiance by S3NS

    gcloud

    1. התקינו את ה-CLI של Google Cloud ואז היכנסו ל-CLI של gcloud באמצעות הזהות המאוחדת שלכם. אחרי שנכנסתם לחשבון, אתחלו את ה-CLI של Google Cloud באמצעות הפקודה הבאה:

      gcloud init
  • הגדרת אזור ותחום כברירת מחדל
  • REST

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

      התקינו את ה-CLI של Google Cloud ואז היכנסו ל-CLI של gcloud באמצעות הזהות המאוחדת שלכם.

    מידע נוסף מופיע במאמר אימות לשימוש ב-REST במסמכי האימות של Cloud de Confiance .

התפקידים הנדרשים

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

בתוך ה-VM

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

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

מחוץ ל-VM

כדי להפעיל מאפייני אורח או כדי להציג מאפייני אורח מחוץ למכונה הווירטואלית באמצעות Google Cloud CLI או REST, צריך את התפקידים וההרשאות הבאים: אי אפשר להגדיר או למחוק מאפייני אורח מחוץ למכונה וירטואלית.

כדי לוודא שלמשתמש או לחשבון השירות שלכם יש את ההרשאות הנדרשות להפעלה או להצגה של מאפייני אורח, צריך לבקש מהאדמין להקצות למשתמש או לחשבון השירות את תפקיד ה-IAM‏ Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1) במכונה הווירטואלית או בפרויקט. כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

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

ההרשאות הנדרשות

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

  • כדי להפעיל מאפיינים של מערכת ההפעלה האורחת: compute.instances.setMetadata במכונה הווירטואלית או בפרויקט
  • כדי לראות את מאפייני האורח: compute.instances.getGuestAttributes במכונה הווירטואלית או בפרויקט

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

מתי כדאי להשתמש במאפייני אורח

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

  • הגודל המקסימלי של כל ערך מאפיין הוא 256KiB.
  • הגודל המקסימלי של כל מפתח מאפיין הוא 128 בייט.
  • מספר השאילתות מוגבל ל-10 שאילתות לכל היותר בדקה לכל מכונה וירטואלית.
  • השאילתות לא חורגות מפרץ של 3 שאילתות לשנייה. אם חורגים מהקצב המקסימלי הזה, יכול להיות ש-Compute Engine יסיר באופן שרירותי מאפייני אורח שנמצאים בתהליך כתיבה. הסרת הנתונים הזו נדרשת כדי לוודא שניתן לכתוב בשרת נתונים קריטיים אחרים של המערכת.

מאפייני אורח מתאימים למצבים שבהם צריך לפרסם נתונים לא תדירים ובנפח נמוך. לדוגמה, מאפייני אורח מתאימים לתרחישי השימוש הבאים:

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

מאפייני אורחים לא מחליפים את הזרמת האירועים, את Pub/Sub או צורות אחרות של מאגרי נתונים ומאגרי הגדרות.

מאפייני אורחים ושירותים אחרים Cloud de Confiance by S3NS

שירותים אחרים של Cloud de Confiance by S3NS משתמשים במאפייני האורח באופן הבא:

  • אבטחת SSH: אם התכונה 'מאפייני אורח' מופעלת והתכונה 'כניסה למערכת ההפעלה' מושבתת, סביבת האורח וה-CLI של gcloud משתמשים במאפייני אורח כדי לשפר את אבטחת ה-SSH. הם עושים זאת באמצעות Google API כדי לאחזר מפתחות מארח לפני שמתחברים ל-VM באמצעות SSH.
  • ‫VM Manager: סוכן OS config מפרסם נתונים של מערכת ההפעלה במאפייני האורח.

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

הפעלת מאפייני אורח במכונה הווירטואלית

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

המסוף

מגדירים את enable-guest-attributes במטא-נתונים של המכונה כשיוצרים מכונה וירטואלית:

  1. נכנסים לדף Create an instance במסוף Cloud de Confiance .

    כניסה לדף Create an instance

  2. מציינים את פרטי המכונה הווירטואלית.

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

    1. מרחיבים את הקטע ניהול.
    2. בקטע Metadata (מטא-נתונים), לוחצים על Add item (הוספת פריט) ומוסיפים את רשומות המטא-נתונים הבאות:

      • מקרא: enable-guest-attributes
      • ערך: TRUE
  4. כדי ליצור את המכונה הווירטואלית (VM), לוחצים על האפשרות Create.

מגדירים את enable-guest-attributes במטא-נתונים ברמת הפרויקט כדי שההגדרה תחול על כל המכונות הווירטואליות בפרויקט:

  1. נכנסים לדף Metadata במסוף Cloud de Confiance .

    כניסה לדף Metadata

  2. לוחצים על Edit.

  3. מוסיפים רשומה של מטא-נתונים שבה המפתח הוא enable-guest-attributes והערך הוא TRUE. אפשר גם להגדיר את הערך ל-FALSE כדי להשבית את התכונה.

  4. לוחצים על שמירה כדי להחיל את השינויים.

הגדרת enable-guest-attributes במטא-נתונים של מכונה וירטואלית קיימת:

  1. נכנסים לדף VM instances במסוף Cloud de Confiance .

    כניסה לדף VM instances

  2. לוחצים על שם המכונה הווירטואלית שרוצים להגדיר בה את ערך המטא-נתונים.
  3. בראש דף פרטי המופע, לוחצים על עריכה כדי לערוך את הגדרות המופע.
  4. בקטע מטא-נתונים בהתאמה אישית, מוסיפים רשומה של מטא-נתונים שבה המפתח הוא enable-guest-attributes והערך הוא TRUE. אפשרות אחרת היא להגדיר את הערך FALSE כדי לא לכלול את המכונה הווירטואלית בתכונה.
  5. בחלק התחתון של דף פרטי המופע, לוחצים על שמירה כדי להחיל את השינויים על המכונה הווירטואלית.

gcloud

מגדירים את enable-guest-attributes במטא-נתונים של המכונה כשיוצרים מכונה וירטואלית:

משתמשים בפקודה gcloud compute instances create ב-Google Cloud CLI ומגדירים את enable-guest-attributes=TRUE כדי להפעיל את מאפייני האורח. מחליפים את VM_NAME בשם של המכונה הווירטואלית.

gcloud compute instances create VM_NAME \
    --metadata=enable-guest-attributes=TRUE

מגדירים את enable-guest-attributes במטא-נתונים ברמת הפרויקט כדי שההגדרה תחול על כל המכונות הווירטואליות בפרויקט:

משתמשים בפקודה project-info add-metadata ב-Google Cloud CLI ומגדירים את enable-guest-attributes=TRUE כדי להפעיל את מאפייני האורח:

gcloud compute project-info add-metadata \
    --metadata=enable-guest-attributes=TRUE

אפשרות אחרת היא להגדיר את enable-guest-attributes לערך FALSE כדי להשבית את מאפייני האורח.

הגדרת enable-guest-attributes במטא-נתונים של מכונה וירטואלית קיימת:

משתמשים בפקודה instances add-metadata ב-Google Cloud CLI ומגדירים את enable-guest-attributes=TRUE כדי להפעיל את מאפייני האורח. מחליפים את VM_NAME בשם של המכונה הווירטואלית.

gcloud compute instances add-metadata VM_NAME \
    --metadata=enable-guest-attributes=TRUE

לחלופין, אפשר להגדיר את enable-guest-attributes לערך FALSE כדי למנוע מהמכונה הווירטואלית להשתמש במאפייני אורח.

הגדרת מאפייני אורח

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

מכונות וירטואליות של Linux

לדוגמה, אפשר להשתמש בבקשת curl מתוך המכונה הווירטואלית כדי לכתוב ערך לנתיב המטא-נתונים guest-attributes:

curl -X PUT --data "VALUE" http://metadata.google.internal/computeMetadata/v1/instance/guest-attributes/NAMESPACE/KEY -H "Metadata-Flavor: Google"

מחליפים את מה שכתוב בשדות הבאים:

  • NAMESPACE: קיבוץ לוגי של KEY. מאפייני האורח חייבים לכלול מרחב שמות.
  • VALUE: הערך שרוצים לכתוב.
  • KEY: הנתיב למטא-נתונים בתוך guest-attributes שבו הערך מאוחסן.

בשדות NAMESPACE ו-KEY, אפשר להשתמש רק באותיות, בספרות, בקו תחתון (_) ובמקף (-).

מכונות וירטואליות של Windows

לדוגמה, אפשר להשתמש בבקשת Invoke-RestMethod מתוך המכונה הווירטואלית כדי לכתוב ערך לנתיב המטא-נתונים guest-attributes:

PS C:\> 
$value = (Invoke-RestMethod `
         -Method PUT -Body "VALUE" `
         -Headers @{'Metadata-Flavor' = 'Google'} `
         -Uri "http://metadata.google.internal/computeMetadata/v1/instance/guest-attributes/NAMESPACE/KEY")
$value

מחליפים את מה שכתוב בשדות הבאים:

  • NAMESPACE: קיבוץ לוגי של KEY. מאפייני האורח חייבים לכלול מרחב שמות.
  • VALUE: הערך שרוצים לכתוב.
  • KEY: הנתיב למטא-נתונים בתוך guest-attributes שבו הערך מאוחסן.

בשדות NAMESPACE ו-KEY, אפשר להשתמש רק באותיות, בספרות, בקו תחתון (_) ובמקף (-).

קבלת מאפייני אורח

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

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

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

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

  1. מתחברים ל-VM.

  2. שליחת שאילתה לגבי מאפייני האורחים.

    מכונות וירטואליות של Linux

    לדוגמה, אפשר להשתמש בבקשת curl מתוך המכונה הווירטואלית כדי לקרוא ערך מנתיב המטא-נתונים guest-attributes:

    curl http://metadata.google.internal/computeMetadata/v1/instance/guest-attributes/NAMESPACE/KEY -H "Metadata-Flavor: Google"

    מחליפים את מה שכתוב בשדות הבאים:

    • NAMESPACE: מרחב השמות של guest-attributesהמפתח שרוצים לשלוח לגביו שאילתה.
    • KEY: הנתיב בתוך guest-attributes שממנו רוצים לקרוא את ערך המטא-נתונים.

    לחלופין, אפשר להחזיר את כל ערכי מאפייני האורח בבקשה אחת. מחליפים את NAMESPACE במרחב השמות של המפתח guest-attributes שרוצים לשלוח לגביו שאילתה.

    curl http://metadata.google.internal/computeMetadata/v1/instance/guest-attributes/NAMESPACE/ -H "Metadata-Flavor: Google"

    מכונות וירטואליות של Windows

    לדוגמה, אפשר להשתמש בבקשת Invoke-RestMethod מתוך המכונה הווירטואלית כדי לקרוא ערך מנתיב המטא-נתונים guest-attributes:

    PS C:\> 
    $value = (Invoke-RestMethod `
            -Headers @{'Metadata-Flavor' = 'Google'} `
            -Uri "http://metadata.google.internal/computeMetadata/v1/instance/guest-attributes/NAMESPACE/KEY")
    $value
    

    מחליפים את מה שכתוב בשדות הבאים:

    • NAMESPACE: מרחב השמות של guest-attributesהמפתח שרוצים לשלוח לגביו שאילתה.
    • KEY: הנתיב בתוך guest-attributes שממנו רוצים לקרוא את ערך המטא-נתונים.

    לחלופין, אפשר להחזיר את כל ערכי מאפייני האורח בבקשה אחת. מחליפים את NAMESPACE במרחב השמות של המפתח guest-attributes שרוצים לשלוח לגביו שאילתה.

    PS C:\> 
    $value = (Invoke-RestMethod `
            -Headers @{'Metadata-Flavor' = 'Google'} `
            -Uri "http://metadata.google.internal/computeMetadata/v1/instance/guest-attributes/NAMESPACE/")
    $value
    

שימוש ב-Google Cloud CLI או ב-REST

כדי לראות את מאפייני האורח מחוץ למכונה וירטואלית, פועלים לפי ההוראות הבאות.

gcloud

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

gcloud compute instances get-guest-attributes VM_NAME \
    --zone=ZONE

כדי לאחזר את כל הערכים במרחב שמות מסוים, צריך לכלול את הדגל --query-path ואת מרחב השמות שהגדרתם:

gcloud compute instances get-guest-attributes VM_NAME \
    --query-path=NAMESPACE \
    --zone=ZONE

כדי לאחזר את כל הערכים במרחב שמות ספציפי, צריך לכלול את הדגל --query-path, את מרחב השמות ואת המפתח של הערך שהגדרתם:

gcloud compute instances get-guest-attributes VM_NAME \
    --query-path=NAMESPACE/KEY \
    --zone=ZONE

מחליפים את מה שכתוב בשדות הבאים:

  • VM_NAME: השם של המכונה הווירטואלית שממנה רוצים לקרוא את ערך המטא-נתונים של מאפיין האורח
  • NAMESPACE: מרחב השמות של guest-attributesהמפתח שרוצים לשלוח לגביו שאילתה
  • KEY: הנתיב במטא-נתונים של guest-attributes שבו הערך מאוחסן
  • ZONE: האזור שבו נמצאת המכונה הווירטואלית

REST

משתמשים בשיטה compute.instances.getguestattributes:

GET https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/getGuestAttributes?queryPath=NAMESPACE/KEY

מחליפים את מה שכתוב בשדות הבאים:

  • PROJECT_ID: מזהה הפרויקט
  • ZONE: האזור שבו נמצאת המכונה הווירטואלית
  • VM_NAME: השם של מכונת ה-VM שממנה רוצים לקרוא את ערך המטא-נתונים של מאפיין האורח
  • NAMESPACE: מרחב השמות של guest-attributesהמפתח שרוצים לשלוח לגביו שאילתה
  • KEY: הנתיב במטא-נתונים של guest-attributes שבו הערך מאוחסן

כדי לאחזר את כל המפתחות של NAMESPACE, משמיטים את KEY:

GET https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/getGuestAttributes?queryPath=NAMESPACE

כדי לאחזר את כל המפתחות בכל מרחב שמות במכונה הווירטואלית, משמיטים את NAMESPACE:

GET https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/getGuestAttributes?queryPath=

לחלופין, אם יש לכם טוקן OAuth, אתם יכולים להשתמש ב-curl:

curl -H "Authorization: Bearer OAUTH_TOKEN" https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/getGuestAttributes?queryPath=NAMESPACE/KEY

מחליפים את מה שכתוב בשדות הבאים:

  • OAUTH_TOKEN: טוקן OAuth
  • PROJECT_ID: מזהה הפרויקט
  • ZONE: האזור שבו נמצאת המכונה הווירטואלית
  • VM_NAME: השם של מכונת ה-VM שממנה רוצים לקרוא את ערך המטא-נתונים של מאפיין האורח
  • NAMESPACE: מרחב השמות של guest-attributesהמפתח שרוצים לשלוח לגביו שאילתה
  • KEY: הנתיב במטא-נתונים של guest-attributes שבו הערך מאוחסן

מחיקת מאפייני אורח

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

  1. מתחברים ל-VM.

  2. מחיקת מאפייני האורח.

    מכונות וירטואליות של Linux

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

    curl -X DELETE http://metadata.google.internal/computeMetadata/v1/instance/guest-attributes/NAMESPACE/KEY -H "Metadata-Flavor: Google"

    מחליפים את מה שכתוב בשדות הבאים:

    • NAMESPACE: מרחב השמות של מפתח guest-attributes שרוצים למחוק
    • KEY: הנתיב בתוך guest-attributes שבו הערך מאוחסן

    מכונות וירטואליות של Windows

    אפשר גם למחוק מאפייני אורחים. לדוגמה, כדי למחוק מפתח ספציפי, משתמשים בפקודה Invoke-RestMethod:

    PS C:\> 
    $value = (Invoke-RestMethod `
              -Method DELETE `
              -Headers @{'Metadata-Flavor' = 'Google'} `
              -Uri "http://metadata.google.internal/computeMetadata/v1/instance/guest-attributes/NAMESPACE/KEY")
    $value
    

    מחליפים את מה שכתוב בשדות הבאים:

    • NAMESPACE: מרחב השמות של מפתח guest-attributes שרוצים למחוק
    • KEY: הנתיב בתוך guest-attributes שבו הערך מאוחסן

השבתת מאפייני משתמשים חיצוניים בארגון או בתיקייה

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

מגדירים את האילוץ constraints/compute.disableGuestAttributesAccess בארגון או בתיקייה, ומחליפים את PROJECT_ID בשם הפרויקט:

gcloud resource-manager org-policies enable-enforce \
    constraints/compute.disableGuestAttributesAccess \
    --project=PROJECT_ID

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

מה השלב הבא?