אישור סוכן התפעול

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

סקירה כללית בנושא הרשאות

הרשאה היא התהליך שבו קובעים אילו הרשאות יש ללקוח מאומת לגבי קבוצת משאבים. Google Cloud מאשרת את השימוש ב-סוכן תפעול במכונה וירטואלית (VM) של Compute Engine באמצעות Application Default Credentials (ADC).

‫סוכן תפעול תומך ב-ADC לצורך אימות של חשבון שירות שמצורף למכונה וירטואלית או של מפתח של חשבון שירות.

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

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

אימות היקפי הגישה

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

כדי לאמת את היקפי הגישה:

  1. מריצים את הפקודה הבאה במכונה של Compute Engine כדי לשלוח שאילתה לגבי היקפי הגישה:
    curl --silent --connect-timeout 1 -f -H "Metadata-Flavor: Google" http://169.254.169.254/computeMetadata/v1/instance/service-accounts/default/scopes
  2. אם היקף הגישה https://www.googleapis.com/auth/cloud-platform מופיע בפלט הפקודה, יש לכם הרשאה מספקת.

    אם https://www.googleapis.com/auth/cloud-platform לא מופיע ברשימה, צריך שני היקפי גישה, אחד מכל אחד מהזוגות הבאים של 'רישום ביומן' ו'מעקב':

    • https://www.googleapis.com/auth/logging.write או
      https://www.googleapis.com/auth/logging.admin
    • https://www.googleapis.com/auth/monitoring.write או
      https://www.googleapis.com/auth/monitoring.admin

כדי לשנות את היקפי הגישה:

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

    כניסה לדף VM instances

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

  2. אם צריך, לוחצים על הרשימה הנפתחת של Google Cloud פרויקטים ובוחרים את שם הפרויקט.
  3. בתפריט הניווט, בוחרים באפשרות VM instances, בוחרים בכרטיסייה Instances ואז בוחרים את שם המכונה הווירטואלית.
  4. כדי לכבות את המכונה הווירטואלית, לוחצים על  Stop.
  5. אחרי שהמכונה הווירטואלית מפסיקה לפעול, לוחצים על  עריכה.
  6. בקטע Identity and API access בדף, מאתרים את Access scopes ובוחרים באפשרות Set access for each API.
  7. לרשומות של Stackdriver Logging API ו-Stackdriver Monitoring API, בוחרים באפשרות כתיבה בלבד.
  8. לוחצים על שמירה, ואז מפעילים מחדש את המכונה הווירטואלית על ידי לחיצה על  התחלה/המשך.

שימוש בחשבון שירות

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

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

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

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

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

  • בוחרים את הפרויקט שבו רוצים ליצור את חשבון השירות. Google Cloud

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

    • Monitoring‏ > Monitoring Metric Writer.

    • Logging‏ > Logs Writer.

  • אם אתם מתכננים לבצע אימות באמצעות מפתח של חשבון שירות, בוחרים באפשרות JSON בתור Key type ולוחצים על Create.

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

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

אימות ושינוי של תפקידים בחשבון שירות קיים

אתם יכולים להשתמש במסוף Google Cloud כדי לקבוע אילו תפקידים יש לחשבון שירות קיים, ולהוסיף תפקידים נדרשים שחסרים:

  1. נכנסים לדף IAM במסוף Google Cloud :

    כניסה לדף IAM

    אם משתמשים בסרגל החיפוש כדי למצוא את הדף הזה, בוחרים בתוצאה שכותרת המשנה שלה היא IAM & Admin.

  2. אם צריך, לוחצים על הרשימה הנפתחת של Google Cloud פרויקטים ובוחרים את שם הפרויקט.

  3. אם לא מופיעה רשימה של ישויות IAM (משתמשים וחשבונות שירות), בוחרים בכרטיסייה הרשאות.

  4. ברשימה View by Principals (תצוגה לפי חשבונות משתמשים), מאתרים את הרשומה של חשבון השירות. בעמודה תפקיד מפורטים התפקידים שניתנו לחשבון השירות.

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

    1. לוחצים על  עריכה ברשומה של חשבון השירות.
    2. לוחצים על הוספת תפקיד נוסף כדי להוסיף תפקידים חסרים.
    3. לוחצים על Save.

הרשאה עם חשבון שירות מצורף

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

  1. מוודאים שאימתתם את היקפי הגישה של המכונה הווירטואלית.

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

  3. מצרפים את חשבון השירות למכונה הווירטואלית שבה פועל הסוכן.

  4. אם עדיין לא התקנתם את הסוכן, תצטרכו להתקין אותו. מידע נוסף על התקנת הסוכן זמין במאמר התקנת הסוכן.

הרשאה באמצעות מפתח לחשבון שירות

כדי לתת הרשאה ל-Ops Agent שמותקן על מכונה וירטואלית באמצעות מפתחות פרטיים של חשבון שירות:

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

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

      CREDS=~/Downloads/PROJECT-NAME-KEY-ID.json
      
    2. נכנסים לדף VM instances במסוף Google Cloud :

      כניסה לדף VM instances

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

      מזהים את כתובת ה-INSTANCE_NAME ואת INSTANCE_ZONE של מכונת ה-VM.

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

      REMOTE_USER="$USER"
      INSTANCE="INSTANCE_NAME"
      ZONE="INSTANCE_ZONE"
      gcloud compute scp "$CREDS" "$REMOTE_USER@$INSTANCE:~/temp.json" --zone "$ZONE"
      
    4. במכונה של Compute Engine, מעבירים את קובץ המפתח של חשבון השירות מהמיקום הזמני למיקום קבוע. במערכת Linux, מוודאים שקובץ המפתח של חשבון השירות ניתן לקריאה רק על ידי root.

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

      לדוגמה, ב-Linux אפשר להריץ את הסקריפט הבא, שמעביר את קובץ המפתח של חשבון השירות למיקום ברירת המחדל, ואז מגדיר את ההרשאות המתאימות:

      CREDENTIALS_FILE_LOCATION="/etc/google/auth/application_default_credentials.json"
      sudo mkdir -p /etc/google/auth
      sudo mv "$HOME/temp.json" "$CREDENTIALS_FILE_LOCATION"
      sudo chown root:root "$CREDENTIALS_FILE_LOCATION"
      sudo chmod 0400 "$CREDENTIALS_FILE_LOCATION"
      

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

הגדרת GOOGLE_APPLICATION_CREDENTIALS

בקטע הזה מוסבר איך להגדיר את משתנה הסביבה GOOGLE_APPLICATION_CREDENTIALS כך שהוא יהיה גלוי לתהליך של הסוכן.

Linux

  1. עורכים את קובץ התצורה הבא, או יוצרים את הקובץ אם הוא לא קיים:

    /etc/systemd/system.conf
    
  2. מוסיפים את השורות הבאות לקובץ התצורה:

    DefaultEnvironment="GOOGLE_APPLICATION_CREDENTIALS=PATH_TO_CREDENTIAL_FILE"
    
  3. טוענים מחדש את משתני הסביבה:

    sudo systemctl daemon-reload
    
  4. מפעילים מחדש את הסוכן על ידי הפעלת הפקודה הבאה במופע ה-VM:

    sudo systemctl restart google-cloud-ops-agent
    

Windows

  1. ב-PowerShell, מריצים את הפקודות הבאות כאדמינים כדי להגדיר את משתנה הסביבה של המערכת GOOGLE_APPLICATION_CREDENTIALS לשימוש של סוכן תפעול:

    [Environment]::SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", "PATH_TO_CREDENTIAL_FILE", "Machine")
    
  2. מפעילים מחדש את הסוכן על ידי הפעלת הפקודה הבאה במופע ה-VM:

    Restart-Service -Name google-cloud-ops-agent -Force