במדריך הזה מוסבר איך לוודא שלסוכן Logging, שמתקינים במכונה וירטואלית (VM), יש הרשאה לשלוח נתוני טלמטריה אל Google Cloud Observability.
סקירה כללית בנושא הרשאות
הרשאה היא התהליך שבו קובעים אילו הרשאות יש ללקוח מאומת לגבי קבוצת משאבים. Google Cloud מאשרת את סוכן Logging במכונה וירטואלית (VM) של Compute Engine באמצעות Application Default Credentials (ADC).
סוכן Logging תומך ב-ADC, שמאמת חשבון שירות שמצורף למכונה וירטואלית או מפתח של חשבון שירות.
- חשבון שירות מצורף הוא חשבון שירות שספציפי למשאב מסוים, כמו מכונה וירטואלית. לחשבון השירות יש פרטי כניסה ייחודיים משלו. ADC משתמש בשרת המטא-נתונים של המכונה הווירטואלית כדי לקבל פרטי כניסה לשירות.
- מפתח של חשבון שירות הוא מפתח פרטי שמשמש להרשאת זוג המפתחות בחשבון שירות בפרויקט, ומאפשר ליצור אסימון גישה. משתמשים באסימון כדי לספק זהות, וכך אפשר לקיים אינטראקציה עם ממשקי Google Cloud API מטעם חשבון השירות.
מומלץ להגדיר את ADC לאימות באמצעות חשבון שירות מצורף כשאפשר, כי המפתח הפרטי דורש אחסון מקומי, והאחסון הזה עלול להיפרץ. מידע נוסף על מפתחות של חשבונות שירות זמין במאמר שיטות מומלצות לניהול מפתחות של חשבונות שירות.
לפני שמתחילים
המדריך הזה רלוונטי לכם אם:
אם אתם מפעילים מכונות ישנות מאוד של Compute Engine או אם שיניתם את היקפי הגישה או את הגדרות חשבון השירות של המכונות של Compute Engine, אתם צריכים לבצע את השלבים במדריך הזה לפני התקנת הסוכן. יכול להיות שבמכונות הווירטואליות האלה לא יהיה קובץ מפתח של חשבון שירות. במאמר אימות פרטי הכניסה של Compute Engine מוסבר איך לאמת את היקפי הגישה והגדרות חשבון השירות של המכונות.
במכונות וירטואליות חדשות של Compute Engine, היקפי הגישה והגדרות חשבון השירות מספיקים להרצת הסוכנים.
כדי לאמת את היקפי הגישה:
- מריצים את הפקודה הבאה במכונת Compute Engine כדי לשלוח שאילתה להיקפי הגישה:
curl --silent --connect-timeout 1 -f -H "Metadata-Flavor: Google" http://169.254.169.254/computeMetadata/v1/instance/service-accounts/default/scopes
אם היקף הגישה
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
-
כדי לשנות את היקפי הגישה:
-
נכנסים לדף VM instances במסוף Google Cloud :
אם משתמשים בסרגל החיפוש כדי למצוא את הדף הזה, בוחרים את התוצאה שבה כותרת המשנה היא Compute Engine.
- אם צריך, לוחצים על הרשימה הנפתחת של Google Cloud פרויקטים ובוחרים את שם הפרויקט.
- בתפריט הניווט, בוחרים באפשרות VM instances, בוחרים בכרטיסייה Instances ואז בוחרים את שם המכונה הווירטואלית.
- כדי לכבות את המכונה הווירטואלית, לוחצים על stop Stop.
- אחרי שהמכונה הווירטואלית מפסיקה לפעול, לוחצים על edit עריכה.
- בקטע Identity and API access בדף, מאתרים את Access scopes ובוחרים באפשרות Set access for each API.
- לרשומות של Stackdriver Logging API ו-Stackdriver Monitoring API, בוחרים באפשרות כתיבה בלבד.
- לוחצים על שמירה, ואז מפעילים מחדש את המכונה הווירטואלית על ידי לחיצה על play_arrow התחלה/הפעלה מחדש.
שימוש בחשבון שירות
אימות הוא התהליך שבו קובעים את הזהות של הלקוח. לצורך אימות, מומלץ להשתמש בחשבון שירות, שהוא סוג מיוחד של חשבון שמשמש בדרך כלל אפליקציה או עומס עבודה, ולא אדם. מידע נוסף מופיע במאמר סקירה כללית על חשבונות שירות.
אתם יכולים להשתמש בחשבונות שירות לאימות, לא משנה איפה הקוד שלכם פועל: ב-Compute Engine, ב-App Engine או בשרת מקומי. מידע נוסף זמין במאמר אימות ב-Google.
בקטע הזה מוסבר איך ליצור חשבון שירות חדש ולהקצות לו את התפקידים הנדרשים, ואיך לעדכן חשבון שירות קיים אם לא הוקצו לו התפקידים הנדרשים.
יצירה של חשבון שירות
כדי ליצור חשבון שירות, מבצעים את השלבים שבמאמר יצירת חשבון שירות עם הפרטים הבאים:
בוחרים את הפרויקט שבו רוצים ליצור את חשבון השירות. Google Cloud
- במכונות Compute Engine, בוחרים את הפרויקט שבו נוצרה המכונה.
בתפריט הנפתח תפקיד, בוחרים בתפקידים הבאים:
- Logging > Logs Writer. ההרשאה הזו מאפשרת לסוכן Logging להוסיף יומנים.
- Monitoring > Monitoring Metric Writer. כך מאשרים לסוכן Logging לאסוף את מדדי הבריאות שלו.
אם אתם מתכננים לבצע אימות באמצעות מפתח של חשבון שירות, בוחרים באפשרות JSON בתור Key type ולוחצים על Create.
כשלוחצים על Create, קובץ שמכיל מפתח של חשבון שירות מורד למערכת המקומית. מידע נוסף מופיע במאמר יצירה ומחיקה של מפתחות של חשבונות שירות.
בשלב הבא, מגדירים את חשבון השירות וההגדרות בהתאם לשיטת ההרשאה: באמצעות חשבונות שירות מצורפים או באמצעות מפתחות פרטיים של חשבונות שירות.
אימות ושינוי של תפקידים בחשבון שירות קיים
אתם יכולים להשתמש במסוף Google Cloud כדי לקבוע אילו תפקידים יש לחשבון שירות קיים, ולהוסיף תפקידים נדרשים שחסרים:
-
נכנסים לדף IAM במסוף Google Cloud :
אם משתמשים בסרגל החיפוש כדי למצוא את הדף הזה, בוחרים בתוצאה שמופיע בה הכותרת המשנית IAM & Admin.
אם צריך, לוחצים על הרשימה הנפתחת של Google Cloud פרויקטים ובוחרים את שם הפרויקט.
אם לא מוצגת רשימה של ישויות IAM (משתמשים וחשבונות שירות), צריך לבחור בכרטיסייה הרשאות.
ברשימה View by Principals (תצוגה לפי חשבונות משתמשים), מאתרים את הרשומה של חשבון השירות. בעמודה תפקיד מפורטים התפקידים שניתנו לחשבון השירות.
אם לחשבון השירות שלכם אין את התפקידים הנדרשים לסוכן Logging, אז השתמשו בשלבים הבאים כדי להוסיף את התפקידים שמתוארים במאמר יצירת חשבון שירות:
- לוחצים על edit עריכה ברשומה של חשבון השירות.
- לוחצים על הוספת תפקיד נוסף כדי להוסיף תפקידים חסרים.
- לוחצים על Save.
הרשאה עם חשבון שירות מצורף
כדי לתת הרשאה לסוכן Logging שמותקן במכונה וירטואלית של Compute Engine שמקושר אליה חשבון שירות, צריך לבצע את הפעולות הבאות:
מקצים לחשבון השירות את התפקידים עם ההרשאות המינימליות הנדרשות ב-IAM. בקטע יצירת חשבון שירות בדף הזה מפורטים התפקידים הנדרשים.
מצרפים את חשבון השירות למכונה הווירטואלית שבה פועל הסוכן.
אם עדיין לא התקנתם את הסוכן, תצטרכו להתקין אותו. מידע על התקנת הסוכן זמין במאמר התקנת הסוכן.
הרשאה באמצעות מפתח לחשבון שירות
כדי לתת הרשאה לסוכן Logging שמותקן על מכונה וירטואלית באמצעות מפתחות פרטיים של חשבון שירות:
מעבירים את קובץ המפתח של חשבון השירות מהמערכת המקומית למכונה הווירטואלית:
יוצרים משתנה סביבה שיצביע על קובץ המפתח של חשבון השירות במערכת המקומית. בדוגמה הבאה נוצר משתנה בשם
CREDS:CREDS=~/Downloads/PROJECT-NAME-KEY-ID.json-
נכנסים לדף VM instances במסוף Google Cloud :
אם משתמשים בסרגל החיפוש כדי למצוא את הדף הזה, בוחרים את התוצאה שבה כותרת המשנה היא Compute Engine.
מזהים את כתובת ה-INSTANCE_NAME ואת INSTANCE_ZONE של מכונת ה-VM.
במערכת המקומית, מריצים פקודה של Google Cloud CLI כדי להעתיק את קובץ המפתח מהמערכת המקומית למופע של מכונה וירטואלית:
REMOTE_USER="$USER" INSTANCE="INSTANCE_NAME" ZONE="INSTANCE_ZONE" gcloud compute scp "$CREDS" "$REMOTE_USER@$INSTANCE:~/temp.json" --zone "$ZONE"במכונה של Compute Engine, מעבירים את קובץ המפתח של חשבון השירות מהמיקום הזמני למיקום קבוע. במערכת Linux, מוודאים שקובץ המפתח של חשבון השירות ניתן לקריאה רק על ידי
root.אלה המיקומים שבהם הנציג מצפה למצוא את קובץ המפתח:
- מכונות וירטואליות של Linux:
/etc/google/auth/application_default_credentials.json
- מכונות וירטואליות של Windows:
C:\ProgramData\Google\Auth\application_default_credentials.json
- מכונות וירטואליות של Linux ו-Windows:
כל מיקום שמאוחסן במשתנה הסביבה
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"- מכונות וירטואליות של Linux:
עכשיו יש למכונה הווירטואלית את קובץ המפתח של חשבון השירות שהסוכן צריך. לאחר מכן, מתקינים או מפעילים מחדש את הסוכן:
מידע על התקנת הסוכן זמין במאמר התקנת הסוכן.
מידע על הפעלה מחדש של הסוכן זמין במאמר בנושא הפעלה מחדש של הסוכן.
כדי לבדוק את קובץ המפתח של חשבון השירות, אפשר לעיין במאמר בנושא אימות פרטי כניסה של מפתח פרטי.
הגדרת GOOGLE_APPLICATION_CREDENTIALS
בקטע הזה מוסבר איך להגדיר את משתנה הסביבה GOOGLE_APPLICATION_CREDENTIALS כך שהוא יהיה גלוי לתהליך של הסוכן.
Linux
עורכים את קובץ התצורה הבא, או יוצרים את הקובץ אם הוא לא קיים:
/etc/default/google-fluentdמוסיפים את השורות הבאות לקובץ התצורה:
GOOGLE_APPLICATION_CREDENTIALS=PATH_TO_CREDENTIAL_FILEמפעילים מחדש את הסוכן על ידי הפעלת הפקודה הבאה במופע ה-VM:
sudo service google-fluentd restart
Windows
ב-PowerShell, מריצים את הפקודות הבאות כאדמינים כדי להגדיר את משתנה הסביבה של המערכת
GOOGLE_APPLICATION_CREDENTIALSלשימוש של סוכן תפעול:[Environment]::SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", "PATH_TO_CREDENTIAL_FILE", "Machine")מפעילים מחדש את הסוכן על ידי הפעלת הפקודה הבאה במופע ה-VM:
Restart-Service -Name StackdriverLogging