יכול להיות שתצטרכו לספק סודות, כמו סיסמאות, כדי להגדיר רכיבים מסוימים, כמו מקלטים או יצואנים. אפשר לכלול את הסודות האלה כטקסט לא מוצפן בקובצי התצורה של Collector. עם זאת, הסודות האלה נכללים ביומני המערכת שנכתבים על ידי ה-Collector ומועברים אל Cloud Logging, וכך הם נחשפים מחוץ לצומת או למכונה הווירטואלית (VM) שבהם ה-Collector פועל.
החל מגרסה 0.126.0 של Collector ש-Google פיתחה, אפשר להשתמש בפלאגין שמתממשק עם שירותים חיצוניים של OpenTelemetry שמשולב עם Secret Manager כדי להסיר סודות בטקסט לא מוצפן מקובצי התצורה.
ספק הוא רכיב הגדרה של OpenTelemetry, בדומה לרכיבים receiver ו-processor. לכל ספק יש סוג, ולכל סוג של ספק ממופה מזהה ספציפי בהגדרה לערך.
ספק googlesecretmanager ממפה מזהים של Secret Manager לסודות, כמו סיסמאות, טוקנים ומפתחות API, ששמרתם ב-Secret Manager. השימוש בספק googlesecretmanager מציע את היתרונות הבאים:
- אבטחה משופרת: קובצי התצורה לא מכילים מידע רגיש כמו סיסמאות. הסודות עצמם מאוחסנים ב-Secret Manager, שירות שנועד במיוחד לאחסון, לגישה ולניהול של נתונים רגישים בצורה מאובטחת.
- הפחתת הסיכון לחשיפה: Secret Manager מאחזר סודות במהלך האתחול של Google-Built OpenTelemetry Collector, וכך מונע תיעוד של סודות בטקסט לא מוצפן ביומנים בטעות.
לפני שמתחילים
כדי להשתמש בפלאגין שמתממשק עם שירותים חיצוניים 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.
- נותנים למשתמש שמנהל את ההגדרות של Google-Built OpenTelemetry Collector את ההרשאות שנדרשות ליצירה ולניהול של סודות. התפקיד
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.
לדוגמה, אם אתם משתמשים בכלי לייצוא http, קובץ ההגדרות שלכם עשוי לכלול רשומה כמו זו:
exporters:
logging:
loglevel: debug
http:
endpoint: "https://example.com/api/metrics"
headers:
X-API-Key: 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 ולשם המשאב של הסוד המנוהל, כמו בדוגמה הבאה:
exporters:
logging:
loglevel: debug
http:
endpoint: "https://example.com/api/metrics"
headers:
X-API-Key: ${googlesecretmanager:projects/PROJECT_ID/secrets/SECRET_NAME/versions/VERSION}
מידע נוסף
מידע נוסף על השימוש בפלאגין שמתממשק עם שירותים חיצונייםgooglesecretmanager זמין במאגר
opentelemetry-collector-contrib.