הצפנת מדדים מהאפליקציות

רכיב המעקב של Google Distributed Cloud (GDC)‎ עם air gap מאפשר להצפין ולאמת מדדי אפליקציות במעבר באמצעות Transport Layer Security הדדי (mTLS). הגדרת mTLS במשאב מותאם אישית של MonitoringTarget מאמתת את הזהות של שרת המדדים ושל צינור עיבוד הנתונים למעקב, כדי לאבטח את איסוף המדדים בעומסי העבודה של הפרויקט.

לפני שמתחילים

כדי לנהל MonitoringTarget משאבים בהתאמה אישית, צריך את ההרשאות הנדרשות.

בקשת תפקידים ב-IAM ברמת הארגון

כדי לבקש את התפקידים הבאים, פנו למנהל החשבון הארגוני ב-IAM:

  • MonitoringTarget PA Creator (monitoringtarget-pa-creator): יצירת משאבים בהתאמה אישית של MonitoringTarget.
  • עריכת MonitoringTarget PA (monitoringtarget-pa-editor): עריכה או שינוי של משאבים בהתאמה אישית של MonitoringTarget.
  • צפייה ב-MonitoringTarget PA ‏(monitoringtarget-pa-viewer): צפייה במשאבים בהתאמה אישית של MonitoringTarget.

בקשת תפקידי IAM בפרויקט

כדי לבקש את התפקידים הבאים, פנו לאדמין של הפרויקט ב-IAM:

  • עריכת MonitoringTarget ‏(monitoringtarget-editor): עריכה או שינוי של משאבים בהתאמה אישית של MonitoringTarget במרחב השמות של הפרויקט.
  • ‫MonitoringTarget Viewer ‏(monitoringtarget-viewer): צפייה במשאבים בהתאמה אישית של MonitoringTarget במרחב השמות של הפרויקט.

אחרי שמקבלים את ההרשאות הנדרשות, מבצעים את השלבים הבאים לפני שמפעילים את הצפנת המדדים:

  1. פורסים את שרת המדדים.
  2. איסוף מדדים מעומסי העבודה.
  3. מוודאים שהמשאב המותאם אישית MonitoringTarget מציג את הסטטוס Ready, כמו בדוגמה הבאה:

    apiVersion: monitoring.gdc.goog/v1
    kind: MonitoringTarget
    # [...]
    status:
      conditions:
      - lastTransitionTime: "2023-10-27T15:27:51Z"
        message: ""
        observedGeneration: 1
        reason: Ready
        status: True
        type: Ready
    
  4. שאילתות והצגת מדדים בלוחות בקרה כדי לוודא ששרת המדדים שולח את הנתונים הצפויים.

טעינת האישור

עומס העבודה צריך להשתמש באישור שנוצר באופן אוטומטי כשמפעילים mTLS במשאב המותאם אישית MonitoringTarget. מוסיפים אמצעי אחסון ונקודת טעינה לאישור הזה באמצעות התבנית הבאה:

apiVersion: apps/v1
kind: Deployment # or StatefulSet
metadata:
  name: "SERVICE_NAME"
spec:
  template:
    spec:
      containers:
        - name: "CONTAINER_NAME"
          volumeMounts:
          - mountPath: "/etc/ssl/MONITORING_TARGET_NAME-cert"
            name: "MONITORING_TARGET_NAME-cert"
            readOnly: true
      volumes:
      - name: "MONITORING_TARGET_NAME-cert"
        secret:
          secretName: "MONITORING_TARGET_NAME-cert"
  # [...]

מחליפים את מה שכתוב בשדות הבאים:

  • ‫SERVICE_NAME: השם של האובייקט מסוג Deployment או StatefulSet.
  • ‫CONTAINER_NAME: שם הקונטיינר שאליו מוסיפים את נקודת ה-mount של אמצעי האחסון.
  • ‫MONITORING_TARGET_NAME: השם של המשאב בהתאמה אישית ב-MonitoringTarget. שם הסוד מבוסס על השם הזה. לדוגמה, משאב my-mon-target יוצר שם סוד my-mon-target-cert.

מדדי הצגה

שרת המדדים צריך להציג מדדים משרת HTTP שתומך ב-mTLS. יכול להיות שתרצו להצפין מדדים באחד משני התרחישים הבאים:

  • באפליקציות שבבעלותכם: משנים את קוד המקור כדי לתמוך ב-mTLS ומגדירים את שרת המדדים עם אישור mTLS.
  • לאפליקציות שלא בבעלותכם: עיינו במסמכי התיעוד של האפליקציה כדי להפעיל נקודת קצה (endpoint) של מדדי HTTPS. מחילים את ההגדרות הנדרשות, כמו הגדרת ארגומנטים של שורת הפקודה או פריסת קובץ config.

הפעלת איסוף מדדי mTLS

כדי לאפשר איסוף של מדדים מוצפנים, מוסיפים את התווית הבאה לקטע metadata במשאב המותאם אישית MonitoringTarget:

monitoring.gdc.goog/enable-mtls: "true"

המשאב המותאם אישית צריך להיראות כמו בדוגמה הבאה:

  apiVersion: monitoring.gdc.goog/v1
  kind: MonitoringTarget
  metadata:
    namespace: my-project-namespace
    name: "SERVICE_NAME"
    labels:
      monitoring.gdc.goog/enable-mtls: "true" # Enable mTLS metrics collection
  spec:
    # [...]

כדי לוודא שהפעלתם אימות mTLS, ודאו שהמשאב המותאם אישית MonitoringTarget מציג סטטוס Ready לאישור ולסוד האישור, כמו בדוגמה הבאה:

apiVersion: monitoring.gdc.goog/v1
kind: MonitoringTarget
# [...]
status:
  conditions:
  - lastTransitionTime: "2023-11-09T11:15:10Z"
    message: "admin,user-vm-1,user-vm-2,org-1-system"
    observedGeneration: 2
    reason: Ready
    status: "True"
    type: Ready
  - lastTransitionTime: "2023-11-09T11:14:43Z"
    message: "Certificate is ready"
    observedGeneration: 2
    reason: Ready
    status: "True"
    type: CertificateReady
  - lastTransitionTime: "2023-11-09T11:15:10Z"
    message: "Successfully created secret"
    observedGeneration: 2
    reason: Ready
    status: "True"
    type: CertificateSecretReady