במדריך הזה מוסבר איך לוודא שלסוכן Logging, שמתקינים במכונה וירטואלית (VM), יש הרשאה לשלוח נתוני טלמטריה אל Google Cloud Observability.
סקירה כללית על הרשאות
הרשאה היא התהליך שבו קובעים אילו הרשאות יש ללקוח מאומת לגבי קבוצת משאבים. Google Cloud מאשרת את סוכן ה-Logging במכונה וירטואלית (VM) של Compute Engine באמצעות פרטי כניסה שמוגדרים כברירת מחדל לאפליקציה (ADC).
סוכן Logging תומך ב-ADC, שמאמת חשבון שירות שמצורף למכונה וירטואלית או מפתח של חשבון שירות.
- חשבון שירות מצורף הוא חשבון שירות שספציפי למשאב מסוים, כמו מכונה וירטואלית. לחשבון השירות יש פרטי כניסה ייחודיים משלו. ADC משתמש בשרת המטא-נתונים של המכונה הווירטואלית כדי לקבל פרטי כניסה לשירות.
- מפתח של חשבון שירות הוא מפתח פרטי שמשמש להרשאת זוג המפתחות בחשבון שירות בפרויקט, ומאפשר ליצור אסימון גישה. משתמשים באסימון כדי לספק זהות, וכך אפשר לקיים אינטראקציה עם ממשקי API של Google Cloud מטעם חשבון השירות.
מומלץ להגדיר את 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 של המכונה הווירטואלית.
במערכת המקומית, מריצים פקודה של 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