ניהול סודות בהגדרות המדדים של סוכן תפעול

כדי להגדיר חלק מהאינטגרציות של צד שלישי, צריך לספק סודות, כמו סיסמאות, למקבלי המדדים של סוכן התפעול. כברירת מחדל, הסודות האלה מאוחסנים כטקסט לא מוצפן בקובץ 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, כמו שמתואר בשלבים הבאים:

  1. התקינו את ה-CLI של Google Cloud. אחר כך, אתחלו את ה-CLI של Google Cloud באמצעות הפקודה הבאה:

    gcloud init

    אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

  2. מגדירים את פרויקט ברירת המחדל ל-Google Cloud CLI:

    gcloud config set project PROJECT_ID
    

    לפני שמריצים את הפקודה הקודמת, מחליפים את המשתנה PROJECT_ID במזהה של הפרויקט Google Cloud .

  3. מפעילים את Secret Manager API:

    תפקידים שנדרשים להפעלת ממשקי API

    כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאה serviceusage.services.enable. איך מקצים תפקידים

    gcloud services enable secretmanager.googleapis.com
  4. מעדכנים את היקפי הגישה של 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.

  5. נותנים למשתמש שמנהל את ההגדרות של סוכן תפעול את ההרשאות שנדרשות ליצירה ולניהול של סודות. התפקיד 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: הכתובת של המשתמש שמקבל את התפקיד.
  6. מעניקים לחשבון השירות שמשויך למכונה הווירטואלית את ההרשאות שנדרשות לו כדי לגשת לסודות. התפקיד 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, צריך לבצע את הפעולות הבאות:

  1. יוצרים סוד ב-Secret Manager לכל סוד בטקסט לא מוצפן בקובצי התצורה.
  2. מחליפים כל סוד בטקסט לא מוצפן בקובצי התצורה בהפניה לסוד המתאים ב-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

  1. כדי להפעיל מחדש את הסוכן, מריצים את הפקודה הבאה במופע:
    sudo systemctl restart google-cloud-ops-agent
    
  2. כדי לוודא שהסוכן הופעל מחדש, מריצים את הפקודה הבאה ומוודאים שהרכיבים Metrics Agent ו-Logging Agent הופעלו:
    sudo systemctl status "google-cloud-ops-agent*"
    

Windows

  1. מתחברים למופע באמצעות RDP או כלי דומה ומתחברים ל-Windows.
  2. פותחים טרמינל ב-PowerShell עם הרשאות אדמין על ידי לחיצה ימנית על סמל PowerShell ובחירה באפשרות הפעלה כמנהל מערכת.
  3. כדי להפעיל מחדש את הסוכן, מריצים את פקודת PowerShell הבאה:
    Restart-Service google-cloud-ops-agent -Force
    
  4. כדי לוודא שהסוכן הופעל מחדש, מריצים את הפקודה הבאה ומוודאים שהרכיבים Metrics Agent ו-Logging Agent הופעלו:
    Get-Service google-cloud-ops-agent*