כדי להגדיר חלק מהשילובים עם צד שלישי, צריך לספק סודות, כמו סיסמאות, עבור מקבלי המדדים של סוכן התפעול. כברירת מחדל, הסודות האלה מאוחסנים כטקסט פשוט בקובץ config.yaml של הסוכן. הסודות האלה נכללים ביומני המערכת שנכתבים על ידי סוכן התפעול ומועברים אל Cloud Logging, וכך הם נחשפים מחוץ למכונה הווירטואלית (VM) שבה פועל סוכן התפעול.
החל מגרסה 2.57.0 של סוכן תפעול, אפשר להשתמש בפלאגין שמתממשק עם שירותים חיצוניים של OpenTelemetry שמשולב עם Secret Manager כדי להסיר סודות בטקסט לא מוצפן מקובצי התצורה.
ספק הוא רכיב הגדרה של OpenTelemetry, בדומה לרכיבי המקלט והמעבד. לכל ספק יש סוג, ולכל סוג של ספק ממופה מזהה ספציפי בהגדרה לערך.
ספק googlesecretmanager ממפה מזהים של Secret Manager לסודות, כמו סיסמאות, טוקנים ומפתחות API, ששמרתם ב-Secret Manager. השימוש בספק googlesecretmanager מציע את היתרונות הבאים:
- אבטחה משופרת: קובצי התצורה לא מכילים מידע רגיש כמו סיסמאות. הסודות עצמם מאוחסנים ב-Secret Manager, שירות שנועד במיוחד לאחסון, לגישה ולניהול של נתונים רגישים בצורה מאובטחת.
- צמצום הסיכון לחשיפה: Secret Manager מאחזר סודות במהלך האתחול של סוכן תפעול, וכך מונע הקלטה של סודות בטקסט לא מוצפן ביומנים בטעות.
אפשר להשתמש ב-googlesecretmanager רק בהגדרות של איסוף מדדים בהגדרות מותאמות אישית של סוכן תפעול. אל תשתמשו בספק כדי להחליף סודות בהגדרות של איסוף יומנים.
לפני שמתחילים
כדי להשתמש בספק googlesecretmanager, צריך להפעיל את Secret Manager API ולאפשר גישה ל-API, כמו שמתואר בשלבים הבאים:
-
התקינו את ה-CLI של Google Cloud. אחר כך, מאתחלים את ה-CLI של Google Cloud באמצעות הפקודה הבאה:
gcloud initאם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
מגדירים את פרויקט ברירת המחדל ל-Google Cloud CLI:
gcloud config set project PROJECT_ID
לפני שמריצים את הפקודה הקודמת, מחליפים את המשתנה PROJECT_ID במזהה של הפרויקט Google Cloud .
-
מפעילים את Secret Manager API, אם הוא עדיין לא מופעל:
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את ההרשאה
serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידיםgcloud services enable secretmanager.googleapis.com
- מעדכנים את היקפי הגישה של OAuth למופע כך שיכללו את ההיקף הנדרש ל-Secret Manager,
https://www.googleapis.com/auth/cloud-platform:gcloud compute instances set-service-account "INSTANCE_ID" \ --service-account "SERVICE_ACCT_EMAIL" \ --scopes "https://www.googleapis.com/auth/cloud-platform"
לפני שמריצים את הפקודה הקודמת, מחליפים את המשתנים הבאים:
- INSTANCE_ID: המזהה של המכונה הווירטואלית.
- SERVICE_ACCT_EMAIL: הכתובת של חשבון השירות שמשויך למכונה הווירטואלית.
מידע נוסף מופיע במאמר בנושא גישה ל-Secret Manager API.
- צריך לתת למשתמש שמנהל את ההגדרות של סוכן תפעול את ההרשאות שדרושות ליצירה ולניהול של סודות. התפקיד
roles/secretManager.secretAdminבמערכת לניהול הזהויות והרשאות הגישה (IAM) כולל את ההרשאות הנדרשות:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="user:USER_EMAIL" \ --role=roles/secretManager.secretAdmin
לפני שמריצים את הפקודה הקודמת, מחליפים את המשתנים הבאים:
- PROJECT_ID: המזהה של Google Cloud הפרויקט.
- USER_EMAIL: הכתובת של המשתמש שמקבל את התפקיד.
- מעניקים לחשבון השירות שמשויך למכונה הווירטואלית את ההרשאות שנדרשות לו כדי לגשת לסודות. התפקיד
roles/secretManager.secretAccessorבמערכת לניהול הזהויות והרשאות הגישה (IAM) כולל את ההרשאות הנדרשות:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCT_EMAIL" \ --role=roles/secretManager.secretAccessor
לפני שמריצים את הפקודה הקודמת, מחליפים את המשתנים הבאים:
- PROJECT_ID: המזהה של הפרויקט ב- Google Cloud .
- SERVICE_ACCT_EMAIL: הכתובת של חשבון השירות שמשויך למכונה הווירטואלית.
החלפת סודות בטקסט פשוט בסודות מנוהלים
כדי להפסיק להשתמש בסודות בטקסט פשוט בקובצי התצורה באמצעות Secret Manager וספק googlesecretmanager, צריך לבצע את הפעולות הבאות:
- יוצרים סוד ב-Secret Manager לכל סוד בטקסט גלוי בקובצי התצורה.
- מחליפים כל סוד בטקסט פשוט בקובצי התצורה בהפניה לסוד המתאים ב-Secret Manager.
לדוגמה, אם אתם משתמשים במקלט מדדים mysql, קובץ התצורה שלכם עשוי לכלול רשומה כמו זו:
receivers:
mysql:
type: mysql
username: root
password: plaintext-secret
בדוגמה הזו, רוצים להציב את המחרוזת plaintext-secret
ב-Secret Manager ואז להחליף את הסוד בטקסט גלוי בהפניה לסוד המנוהל.
יצירת סודות ב-Secret Manager לסודות בטקסט פשוט
כדי ליצור סוד ב-Secret Manager שמכיל את הסוד בטקסט גלויplaintext-secret, מריצים את הפקודה הבאה:
echo -n "plaintext-secret" | gcloud secrets create SECRET_NAME \
--replication-policy="automatic" \
--data-file=-
לפני שמריצים את הפקודה הקודמת, מחליפים את המשתנים הבאים:
- plaintext-secret: מחליפים את המיקום הזה בסוד בטקסט פשוט.
- SECRET_NAME: מחליפים בשם משמעותי לסוד.
הפורמט של השם המלא של המשאב של הסוד החדש הוא: VERSION עם 1.
projects/PROJECT_ID/secrets/SECRET_NAME/versions/VERSION
מידע נוסף על אחסון סודות, ניהול גרסאות וגישה לסודות ב-Secret Manager זמין במאמר יצירת סוד.
החלפת סודות בטקסט פשוט
כדי לעדכן את קובצי התצורה, מחליפים כל סוד בטקסט לא מוצפן בהפניה לפלאגין שמתממשק עם שירותים חיצוניים googlesecretmanager ולשם המשאב של הסוד המנוהל, כמו בדוגמה הבאה:
receivers:
mysql:
type: mysql
username: root
password: ${googlesecretmanager:projects/PROJECT_ID/secrets/SECRET_NAME/versions/VERSION}
הפעלה מחדש של סוכן התפעול
Linux
- כדי להפעיל מחדש את הסוכן, מריצים את הפקודה הבאה במופע:
sudo systemctl restart google-cloud-ops-agent
- כדי לוודא שהסוכן הופעל מחדש, מריצים את הפקודה הבאה ומוודאים שהרכיבים Metrics Agent ו-Logging Agent הופעלו:
sudo systemctl status "google-cloud-ops-agent*"
Windows
- מתחברים למופע באמצעות RDP או כלי דומה ומתחברים ל-Windows.
- פותחים טרמינל ב-PowerShell עם הרשאות אדמין על ידי לחיצה ימנית על סמל PowerShell ובחירה באפשרות הפעלה כאדמין.
- כדי להפעיל מחדש את הסוכן, מריצים את פקודת PowerShell הבאה:
Restart-Service google-cloud-ops-agent -Force
- כדי לוודא שהסוכן הופעל מחדש, מריצים את הפקודה הבאה ומוודאים שהרכיבים Metrics Agent ו-סוכן Logging הופעלו:
Get-Service google-cloud-ops-agent*