יכול להיות שתצטרכו לספק סודות כמו סיסמאות כדי להגדיר רכיבים מסוימים, כמו מקלטים או יצואנים. אפשר לכלול את הסודות האלה כטקסט לא מוצפן בקובצי התצורה של כלי האיסוף. עם זאת, הסודות האלה נכללים ביומני המערכת שנכתבים על ידי ה-Collector ומועברים אל Cloud Logging, וכך הם נחשפים מחוץ לצומת או למכונה הווירטואלית (VM) שבהם ה-Collector פועל.
החל מגרסה 0.126.0 של כלי האיסוף ש-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 .
-
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.
- נותנים למשתמש שמנהל את ההגדרות של Google-Built OpenTelemetry Collector את ההרשאות שנדרשות ליצירה ולניהול של סודות. התפקיד
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: מחליפים בשם משמעותי לסוד.
החלפת סודות בטקסט פשוט בסודות מנוהלים
כדי להפסיק להשתמש בסודות בטקסט לא מוצפן בקובצי התצורה באמצעות Secret Manager וספק googlesecretmanager, צריך לבצע את הפעולות הבאות:
לדוגמה, אם אתם משתמשים בכלי לייצוא 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=-
לפני שמריצים את הפקודה הקודמת, מחליפים את המשתנים הבאים:
הפורמט של השם המלא של המשאב של הסוד החדש הוא:VERSION1
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.