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

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

בדף הזה מוסבר איך להגדיר mTLS לשרת המדדים.

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

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

התפקידים שצריך ב-IAM

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

  • ‫MonitoringTarget Creator (monitoringtarget-creator):create MonitoringTarget custom resources in the project namespace.
  • ‫MonitoringTarget Editor (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: השם של הקונטיינר שבו מוסיפים את נקודת הגישה לנפח.
  • ‫MONITORING_TARGET_NAME: השם של MonitoringTargetהמשאב המותאם אישית. שם הסוד מבוסס על השם הזה. לדוגמה, משאב my-mon-target יוצר שם סוד my-mon-target-cert.

מדדים של הצגת מודעות

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

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

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