במאמר הזה מוסבר איך לפתור בעיות שקשורות להרשאות ולפרטי הכניסה של סוכן תפעול במכונות וירטואליות (VM) של Compute Engine.
אם Ops Agent מדווח על שגיאות גישה או הרשאה, או אם נראה שהסוכן פועל כרגיל אבל אין נתונים או שמדיניות ההתראות לא פועלת כמו שציפיתם, צריך לוודא שפרטי הכניסה של מופע ה-VM נכונים, כולל ציון הפרויקט הנכון:
אם אתם משתמשים במכונת VM ב-Compute Engine עם פרטי כניסה רגילים (לא מבוססי מפתח פרטי), סביר להניח שהנתונים לא יועברו לפרויקט הלא נכון, אבל יכול להיות שפרטי הכניסה שלכם עדיין לא מספיקים. מידע על פרטי הכניסה זמין במאמר איך מאשרים את סוכן תפעול. מידע על אימות פרטי הכניסה מופיע במאמר אימות פרטי הכניסה של Compute Engine.
אם אתם משתמשים בהרשאות של מפתח פרטי במכונת Compute Engine, יכול להיות שההרשאות לא תקפות או שהן שייכות לפרויקט הלא נכון. מידע על פרטי הכניסה מופיע במאמר בנושא הרשאת הגישה של סוכן תפעול. במאמר אימות פרטי כניסה של מפתח פרטי מוסבר איך מאמתים את פרטי הכניסה.
אימות פרטי הכניסה של Compute Engine
כדי לוודא שלמכונת ה-VM של Compute Engine יש פרטי כניסה מתאימים לסוכן התפעול, משתמשים בדף VM instances במסוף Google Cloud . בדרך כלל, פרטי הכניסה מתווספים לחשבון השירות שמוגדר כברירת מחדל בכל המכונות הווירטואליות החדשות של Compute Engine, אבל אפשר לשנות את ברירות המחדל האלה כשיוצרים מכונה.
נכנסים לדף VM instances במסוף Google Cloud :
אם משתמשים בסרגל החיפוש כדי למצוא את הדף הזה, בוחרים את התוצאה עם כותרת המשנה Compute Engine.
- במקרה הצורך, משנים את הפרויקט הנוכחי Google Cloud לפרויקט שמשויך למכונה הווירטואלית ב-Compute Engine. לדוגמה, אם מוצגת לכם ההודעה Enable billing, זה אומר שבפרויקט הנוכחי אין מכונות וירטואליות של Compute Engine.
- בדף VM Instances, לוחצים על השם של מכונת ה-VM. יוצג דף הפרטים של מכונת ה-VM.
- בדף VM instance details, מחפשים את הכותרת Cloud API access
scopes:
- אם מופיעה האפשרות 'מתן גישה מלאה לכל ממשקי ה-API של Cloud', יש לכם את האישורים המתאימים.
- אם ליד Stackdriver Monitoring API מופיע שם ישן יותר של Cloud Monitoring API, וקיבלתם הרשאת כתיבה בלבד או מלאה, סימן שיש לכם את פרטי הכניסה המתאימים.
- אחרת, לחשבון השירות שמוגדר כברירת מחדל במופע לא יהיו פרטי הכניסה שהסוכן צריך. כדי להשתמש בסוכן במופע, צריך להוסיף פרטי כניסה של חשבון שירות עם מפתח פרטי. הוראות מפורטות מופיעות במאמר הוספת פרטי כניסה.
אם יש לכם את פרטי הכניסה הנכונים שמוגדרים כברירת מחדל, אתם יכולים לדלג אל התקנה ב-Linux וב-Windows.
אימות של פרטי כניסה עם מפתח פרטי
כדי לוודא שפרטי כניסה תקינים של מפתח פרטי מותקנים במופע של מכונת ה-VM, קודם צריך לוודא שקובץ פרטי הכניסה קיים במיקום הצפוי שלו, ואז לוודא שהמידע בקובץ פרטי הכניסה תקין. אפשר לבטל פרטי כניסה שתוקפם פג באמצעות הקטע IAM & Admin > Service accounts במסוף Google Cloud . אם אין פרטי כניסה תקינים, אפשר לעיין במאמר בנושא הוספת פרטי כניסה כדי להחליף את פרטי הכניסה הקיימים או להוסיף פרטי כניסה חדשים.
האם פרטי הכניסה קיימים?
כדי לבדוק אם יש במופע שלכם פרטי כניסה של חשבון שירות עם מפתח פרטי, מריצים את פקודות Linux הבאות במופע:
sudo cat $GOOGLE_APPLICATION_CREDENTIALS
sudo cat /etc/google/auth/application_default_credentials.json
אם אחת מהפקודות מציגה קובץ כמו זה שמוצג למטה, יכול להיות שלמופע שלכם יש פרטי כניסה תקפים של מפתח פרטי. אם שתי הפקודות מציגות קובץ, המערכת משתמשת בקובץ שמסומן על ידי GOOGLE_APPLICATION_CREDENTIALS.
{
"type": "service_account",
"project_id": "{your-project-id}",
"private_key_id": "{your-private-key-id}",
"private_key": "{your-private-key}",
"client_email": "{your-project-number}-{your-key}@developer.gserviceaccount.com",
"client_id": "{your-client-id}",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://accounts.google.com/o/oauth2/token",
"auth_provider_x509_cert_url": "{x509-cert-url}",
"client_x509_cert_url": "{client-x509-cert-url}"
}
אם אין קובצי פרטי כניסה, אפשר לעיין במאמר בנושא הוספת פרטי כניסה.
האם פרטי הכניסה תקפים?
בקובץ פרטי הכניסה, השדה project_id הוא הפרויקט שלכם, Google Cloud , השדה client_email מזהה את חשבון השירות בפרויקט, והשדה private_key_id מזהה את המפתח הפרטי בחשבון השירות. משווים את המידע הזה למידע שמופיע בקטע IAM & Admin > Service accounts במסוףGoogle Cloud .
קובץ פרטי הכניסה לא תקין אם מתקיים אחד מהתנאים הבאים:
- אתם בודקים מכונה וירטואלית (VM) של Compute Engine, אבל הפרויקטGoogle Cloud בקובץ ההרשאות הוא לא הפרויקט שמכיל את המכונה.
- חשבון השירות שמופיע ברשימה לא קיים. יכול להיות שהיא נמחקה.
- לא מופעלים בחשבון השירות שמופיע ברשימה התפקידים הנכונים. צריכות להיות לו לפחות ההרשאות
roles/monitoring.metricWriter(כתיבת מדדים של מעקב) לאיסוף מדדים ו-roles/logging.logWriter(כתיבת רישומים) לכתיבת רישומים. - המפתח הפרטי לא קיים. יכול להיות שהגישה בוטלה.
אם חשבון השירות תקין אבל המפתח הפרטי בוטל, אפשר ליצור מפתח פרטי חדש ולהעתיק אותו למופע. אחרת, תצטרכו ליצור חשבון שירות חדש כמו שמתואר בקטע הבא, הוספת פרטי כניסה.
יצירת פרטי כניסה חדשים
אם פרטי הכניסה לא תקינים, צריך לבצע את הפעולות הבאות:
- לכל פרויקט מחובר שמכיל מופעים שצריך לאשר להם גישה באמצעות מפתח פרטי –
מופעי Compute Engine שנוצרו בלי לכלול את היקף הגישה
https://www.googleapis.com/auth/monitoring.write– יוצרים חשבון שירות ומפיקים מפתח פרטי, אם הם עדיין לא קיימים. פועלים לפי השלבים הבאים:-
נכנסים לדף settings Settings במסוף Google Cloud :
אם משתמשים בסרגל החיפוש כדי למצוא את הדף הזה, בוחרים בתוצאה שכותרת המשנה שלה היא Monitoring.
- בוחרים בכרטיסייה היקף Netric.
- מזהים את הפרויקט שמכיל את משאבי Compute Engine המדוברים ועוברים אל Google Cloud המסוף.
- עוברים לדף IAM Service Accounts במסוף Google Cloud , בוחרים את פרויקט Google Cloud , יוצרים חשבון שירות חדש ואז יוצרים מפתח פרטי חדש לחשבון השירות הזה.
כדי לבצע את השלבים האלה, אפשר לעשות אחת מהפעולות הבאות:
עוברים לדף IAM Service Accounts, בוחרים את הפרויקט Google Cloud ופועלים לפי השלבים במאמר יצירת חשבון שירות:
לוחצים על הלחצן הבא ובוחרים את הפרויקט: Google Cloud
הלחצן הקודם מבצע אוטומציה של התהליך ליצירה ולהורדה של מפתח למערכת המקומית עבור חשבון השירות הספציפי לסוכן. במקרה הצורך, התהליך גם יוצר את חשבון השירות הנדרש ומוודא שלחשבון השירות יש את ההרשאות הנכונות. לחשבונות שירות ספציפיים לסוכנים יש שם שדומה ל-
stackdriver-1234@PROJECT_ID.iam.gserviceaccount.com. תקבלו הודעה על השלמת הפעולות האלה בתיבת דו-שיח שדומה לזו:
-
מחליפים את המפתח הפרטי במכונות שמתאימות לחשבון השירות הרלוונטי.
- ב-Linux, מחליפים את המפתח הפרטי שנמצא בתיקייה
/etc/google/auth/application_default_credentials.json. - ב-Windows, מחליפים את המפתח הפרטי שנמצא בתיקייה
C:\ProgramData\Google\Auth\application_default_credentials.json. מידע נוסף מופיע במאמר בנושא העתקת המפתח הפרטי למופע.
- ב-Linux, מחליפים את המפתח הפרטי שנמצא בתיקייה
הפעלה מחדש של הסוכן
- ב-Linux, מריצים את הפקודה
sudo service stackdriver-agent restart - ב-Windows, נכנסים למסוף לניהול שירותים ומפעילים מחדש את השירות
Cloud Monitoring.
- ב-Linux, מריצים את הפקודה
אם יש לכם כמה פרויקטים שצריכים מפתחות פרטיים חדשים, צריך לחזור על התהליך הזה לכל אחד מהם.
כדי לוודא שהמפתח הפרטי נכון, אפשר לעיין במאמר האם פרטי הכניסה קיימים?. פרטים נוספים:
- קוראים את קובץ ה-JSON של המפתח הפרטי במופע, לדוגמה (ב-Linux):
sudo cat /etc/google/auth/application_default_credentials.json - מוודאים שהערך בשדה
project_idזהה לערך של הפרויקט שבמעקב שעבורו יצרתם הרשאות.