כדי להגדיר חלק מהאינטגרציות של צד שלישי, צריך לספק סודות, כמו סיסמאות, למקבלי המדדים של סוכן תפעול. כברירת מחדל, הסודות האלה מאוחסנים כטקסט פשוט בקובץ config.yaml של הסוכן. הסודות האלה נכללים ביומני מערכת שנכתבים על ידי סוכן התפעול ומועברים אל Cloud Logging, וכך הם נחשפים מחוץ למכונה הווירטואלית (VM) שבה פועל סוכן התפעול.
החל מגרסה 2.57.0 של סוכן תפעול, אפשר להשתמש בספק OpenTelemetry שמשולב עם Secret Manager כדי להסיר סודות בטקסט לא מוצפן מקובצי התצורה.
ספק הוא רכיב הגדרה של OpenTelemetry, בדומה לרכיבים receiver ו-processor. לכל ספק יש סוג, ולכל סוג של ספק ממופה מזהה ספציפי בהגדרה לערך.
ספק 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 .
-
Enable the Secret Manager API:
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.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בניהול הזהויות והרשאות הגישה כולל את ההרשאות הנדרשות: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בניהול הזהויות והרשאות הגישה כולל את ההרשאות הנדרשות: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 לכל סוד בטקסט גלוי בקובצי ההגדרות.
- מחליפים כל סוד בטקסט לא מוצפן בקובצי התצורה בהפניה לסוד המתאים ב-Secret Manager.
- plaintext-secret: מחליפים את הערך בסוד בטקסט פשוט.
- SECRET_NAME: מחליפים בשם משמעותי לסוד.
- כדי להפעיל מחדש את הסוכן, מריצים את הפקודה הבאה במופע:
sudo systemctl restart google-cloud-ops-agent
- כדי לוודא שהסוכן הופעל מחדש, מריצים את הפקודה הבאה ומוודאים שהרכיבים Metrics Agent ו-Logging Agent הופעלו:
sudo systemctl status "google-cloud-ops-agent*"
- מתחברים למופע באמצעות RDP או כלי דומה ומתחברים ל-Windows.
- פותחים טרמינל ב-PowerShell עם הרשאות אדמין על ידי לחיצה ימנית על סמל PowerShell ובחירה באפשרות הפעלה כמנהל מערכת.
- כדי להפעיל מחדש את הסוכן, מריצים את פקודת PowerShell הבאה:
Restart-Service google-cloud-ops-agent -Force
- כדי לוודא שהסוכן הופעל מחדש, מריצים את הפקודה הבאה ומוודאים שהרכיבים Metrics Agent ו-Logging Agent הופעלו:
Get-Service google-cloud-ops-agent*
החלפת סודות בטקסט פשוט בסודות מנוהלים
כדי להפסיק להשתמש בסודות בטקסט לא מוצפן בקובצי התצורה באמצעות Secret Manager וספק googlesecretmanager, צריך לבצע את הפעולות הבאות:
לדוגמה, אם אתם משתמשים במקלט מדדים 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=-
לפני שמריצים את הפקודה הקודמת, מחליפים את המשתנים הבאים:
הפורמט של השם המלא של המשאב של הסוד החדש הוא:VERSION1
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}