במדריך הזה מוסבר איך לוודא שסוכן תפעול, שמותקן במכונה וירטואלית (VM), מורשה לשלוח נתוני טלמטריה אל Google Cloud Observability.
סקירה כללית בנושא הרשאות
הרשאה היא התהליך שבו קובעים אילו הרשאות יש ללקוח מאומת לגבי קבוצת משאבים. 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.
כדי לאמת את היקפי הגישה:
- מריצים את הפקודה הבאה במכונה של 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, בוחרים את הפרויקט שבו נוצר המופע.
בתפריט הנפתח תפקיד, בוחרים בתפקידים הבאים:
Monitoring > Monitoring Metric Writer.
Logging > Logs Writer.
אם אתם מתכננים לבצע אימות באמצעות מפתח של חשבון שירות, בוחרים באפשרות JSON בתור Key type ולוחצים על Create.
כשלוחצים על Create, קובץ שמכיל מפתח של חשבון שירות מורד למערכת המקומית. מידע נוסף מופיע במאמר יצירה ומחיקה של מפתחות של חשבונות שירות.
בשלב הבא, מגדירים את חשבון השירות וההגדרות בהתאם לשיטת ההרשאה: באמצעות חשבונות שירות מצורפים או באמצעות מפתחות פרטיים של חשבונות שירות.
אימות ושינוי של תפקידים בחשבון שירות קיים
אתם יכולים להשתמש במסוף Google Cloud כדי לקבוע אילו תפקידים יש לחשבון שירות קיים, ולהוסיף תפקידים נדרשים שחסרים:
-
נכנסים לדף IAM במסוף Google Cloud :
אם משתמשים בסרגל החיפוש כדי למצוא את הדף הזה, בוחרים בתוצאה שכותרת המשנה שלה היא IAM & Admin.
אם צריך, לוחצים על הרשימה הנפתחת של Google Cloud פרויקטים ובוחרים את שם הפרויקט.
אם לא מופיעה רשימה של ישויות IAM (משתמשים וחשבונות שירות), בוחרים בכרטיסייה הרשאות.
ברשימה View by Principals (תצוגה לפי חשבונות משתמשים), מאתרים את הרשומה של חשבון השירות. בעמודה תפקיד מפורטים התפקידים שניתנו לחשבון השירות.
אם לחשבון השירות שלכם אין את התפקידים הנדרשים ל-סוכן תפעול, אתם יכולים להוסיף את התפקידים שמתוארים במאמר יצירת חשבון שירות באמצעות השלבים הבאים:
- לוחצים על edit עריכה ברשומה של חשבון השירות.
- לוחצים על הוספת תפקיד נוסף כדי להוסיף תפקידים חסרים.
- לוחצים על Save.
הרשאה עם חשבון שירות מצורף
כדי לתת הרשאה לסוכן התפעול שהותקן במכונה וירטואלית של Compute Engine שמקושר אליה חשבון שירות, צריך לבצע את הפעולות הבאות:
מקצים לחשבון השירות את התפקידים עם ההרשאות המינימליות הנדרשות ב-IAM. בקטע יצירת חשבון שירות בדף הזה מפורטים התפקידים הנדרשים.
מצרפים את חשבון השירות למכונה הווירטואלית שבה פועל הסוכן.
אם עדיין לא התקנתם את הסוכן, תצטרכו להתקין אותו. מידע נוסף על התקנת הסוכן זמין במאמר התקנת הסוכן.
הרשאה באמצעות מפתח לחשבון שירות
כדי לתת הרשאה ל-Ops Agent שמותקן על מכונה וירטואלית באמצעות מפתחות פרטיים של חשבון שירות:
מעבירים את קובץ המפתח של חשבון השירות מהמערכת המקומית למכונה הווירטואלית:
יוצרים משתנה סביבה שיצביע על קובץ המפתח של חשבון השירות במערכת המקומית. בדוגמה הבאה נוצר משתנה בשם
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.צריך גם להגדיר את משתנה הסביבה
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"
עכשיו יש למכונה הווירטואלית את קובץ המפתח של חשבון השירות שהסוכן צריך. לאחר מכן, מתקינים או מפעילים מחדש את הסוכן:
מידע נוסף על התקנת הסוכן זמין במאמר התקנת הסוכן.
מידע על הפעלה מחדש של הסוכן זמין במאמר הפעלה מחדש של הסוכן.
כדי לבדוק את קובץ המפתח של חשבון השירות, אפשר לעיין במאמר בנושא אימות פרטי כניסה של מפתח פרטי.
הגדרת GOOGLE_APPLICATION_CREDENTIALS
בקטע הזה מוסבר איך להגדיר את משתנה הסביבה GOOGLE_APPLICATION_CREDENTIALS כך שהוא יהיה גלוי לתהליך של הסוכן.
Linux
עורכים את קובץ התצורה הבא, או יוצרים את הקובץ אם הוא לא קיים:
/etc/systemd/system.confמוסיפים את השורות הבאות לקובץ התצורה:
DefaultEnvironment="GOOGLE_APPLICATION_CREDENTIALS=PATH_TO_CREDENTIAL_FILE"טוענים מחדש את משתני הסביבה:
sudo systemctl daemon-reloadמפעילים מחדש את הסוכן על ידי הפעלת הפקודה הבאה במופע ה-VM:
sudo systemctl restart google-cloud-ops-agent
Windows
ב-PowerShell, מריצים את הפקודות הבאות כאדמינים כדי להגדיר את משתנה הסביבה של המערכת
GOOGLE_APPLICATION_CREDENTIALSלשימוש של סוכן תפעול:[Environment]::SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", "PATH_TO_CREDENTIAL_FILE", "Machine")מפעילים מחדש את הסוכן על ידי הפעלת הפקודה הבאה במופע ה-VM:
Restart-Service -Name google-cloud-ops-agent -Force