רישום ביומן ביקורת

סקירה כללית

‫Google Distributed Cloud (תוכנה בלבד) ל-VMware תומך ביומני ביקורת ברמתGoogle Cloud ה-API וברמת אשכול Kubernetes. במסמך הזה מפורט מידע על רישום ביומני ביקורת באשכול Kubernetes. מידע על Google Cloud יומני ביקורת של API זמין במאמר בנושא מידע על יומני ביקורת של Cloud API.

‫Google Distributed Cloud משתמש ביומני ביקורת של Kubernetes, שכוללים רשומה כרונולוגית של קריאות שבוצעו לשרת Kubernetes API של אשכול. יומני ביקורת שימושיים לחקירת בקשות API חשודות ולאיסוף נתונים סטטיסטיים.

אפשר להגדיר אשכול כך שיומני הביקורת ייכתבו לדיסק או ליומני הביקורת של Cloud ב Google Cloud פרויקט. יש כמה יתרונות לכתיבה ביומני הביקורת של Cloud לעומת כתיבה בדיסק, או אפילו לעומת שמירת יומנים במערכת רישום יומנים מקומית:

  • אפשר לרכז את יומני הביקורת של כל אשכולות ה-GKE.
  • אי אפשר לשנות רשומות ביומני הביקורת של Cloud.
  • רשומות ביומני הביקורת של Cloud נשמרות למשך 400 ימים.
  • יומני הביקורת של Cloud כלולים במחיר של Anthos.

רישום ביומן ביקורת שמבוסס על דיסק

כברירת מחדל, יומני הביקורת נכתבים לדיסק קבוע, כך שהפעלות מחדש ושדרוגים של מכונות וירטואליות לא גורמים להיעלמות של היומנים.

  • אם אשכול מתקדם לא מופעל:

    ‫Google Distributed Cloud שומר עד 12GB של רשומות ביומן הביקורת.

  • אם אשכול מתקדם מופעל

    ‫Google Distributed Cloud שומר עד 1GB של רשומות ביומן הביקורת.

יומני ביקורת של Cloud

אם מפעילים את יומני הביקורת של Cloud עבור אשכול, רשומות של יומני הביקורת Admin Activity משרת ה-API של Kubernetes באשכול נשלחות אל Google Cloud, באמצעות הפרויקט Google Cloud שמצוין בשדהcloudAuditLogging.projectID בקובץ התצורה של האשכול. הפרויקט הזה נקרא Google Cloud פרויקט לרישום ביומן הביקורת.

פרויקט יומני הביקורת צריך להיות זהה לפרויקט המארח של הצי.

כדי לשמור בזיכרון הזמני ולכתוב רשומות ביומן הביקורת של Cloud,‏ Google Distributed Cloud פורס audit-proxy Pod באשכול הניהול. הרכיב הזה זמין גם כקונטיינר sidecar באשכולות משתמשים.

מגבלות

לגרסה הנוכחית של יומני הביקורת של Cloud ב-Google Distributed Cloud יש כמה מגבלות:

  • אין תמיכה ברישום ביומן של גישה לנתונים (בקשות get, ‏ list, ‏ watch).

  • אין תמיכה בשינוי מדיניות הביקורת של Kubernetes.

  • יומני הביקורת של Cloud לא עמידים להפסקות נרחבות ברשת. אם אי אפשר לייצא את רשומות היומן אל Google Cloud, הן נשמרות במטמון במאגר דיסק בנפח 10GB. אם המאגר הזה מתמלא, הרשומות הבאות מושמטות.

  • פרויקט אחד יכול לתמוך בשימוש ביומני ביקורת של Cloud עם עד 1,000 חשבונות שירות. יכולים להיות כמה אשכולות שמשתמשים באותו חשבון שירות.

הפעלת Anthos Audit API

מפעילים את Anthos Audit API בפרויקט של יומן הביקורת.

הפעלת Anthos Audit API

יצירת חשבון שירות ליומני ביקורת בענן

כבר יש לכם חשבונות שירות שיצרתם לשימוש ב-Google Distributed Cloud. כדי להשתמש בתכונה הזו, צריך ליצור חשבון שירות נוסף שנקרא חשבון שירות ליומני ביקורת.

  1. יוצרים את חשבון השירות ליומן הביקורת:

    gcloud iam service-accounts create audit-logging-service-account
  2. יוצרים קובץ מפתח JSON לחשבון השירות של Cloud Audit Logs:

    gcloud iam service-accounts keys create audit-logging-key.json \
       --iam-account AUDIT_LOGGING_SERVICE_ACCOUNT_EMAIL
    

    כאשר AUDIT_LOGGING_SERVICE_ACCOUNT_EMAIL היא כתובת האימייל של חשבון השירות.

  3. שומרים את audit-logging-key.json בתחנת העבודה של האדמין באותו מיקום שבו נמצאים מפתחות חשבונות השירות האחרים.

אזהרה לפני שמוחקים את חשבון השירות הזה, חשוב להחליף אותו בחשבון השירות החדש בהגדרת האשכול. התהליך דומה להפעלת יומני ביקורת של Cloud עבור אשכול משתמשים קיים. אם שכחתם לעשות את זה, אתם יכולים לפעול לפי המדריך לניקוי.

יצירת אשכול אדמין עם יומני ביקורת של Cloud מופעלים

אפשר להפעיל את יומני הביקורת של Cloud עבור אשכול אדמין רק כשיוצרים את אשכול האדמין בפעם הראשונה. אי אפשר לשנות אשכול אדמין קיים כדי להפעיל את Cloud Audit Logs.

  1. אפשר להיעזר במאמר בנושא יצירת אשכול אדמין.

  2. בקובץ התצורה של אשכול האדמין, ממלאים את הקטע cloudAuditLogging.

  3. מגדירים את cloudAuditLogging.projectID למזהה של פרויקט יומני הביקורת.

  4. מגדירים את cloudAuditLogging.clusterLocation לאזור Google Cloud שבו רוצים לאחסן את יומני הביקורת. כדי לשפר את זמן האחזור, מומלץ לבחור אזור שקרוב למרכז הנתונים המקומי.

  5. מגדירים את cloudAuditLogging.serviceAccountKeyPath לנתיב של קובץ מפתח ה-JSON של חשבון השירות שלכם לרישום ביומן הביקורת.

לדוגמה:

cloudAuditLogging:
  projectID: "my-project"
  clusterLocation: "us-west1"
  serviceAccountKeyPath: "/my-key-folder/audit-logging-key.json"

ממשיכים ביצירת האשכול כרגיל.

יצירת אשכול משתמשים עם יומני ביקורת של Cloud

  1. מידע נוסף מופיע במאמר בנושא יצירת אשכול משתמשים.

  2. בקובץ התצורה של אשכול המשתמשים, ממלאים את הקטע cloudAuditLogging.

  3. מגדירים את cloudAuditLogging.projectID למזהה של פרויקט יומני הביקורת.

  4. מגדירים את cloudAuditLogging.clusterLocation לאזור Google Cloud שבו רוצים לאחסן את יומני הביקורת. כדי לשפר את זמן האחזור, מומלץ לבחור אזור שקרוב למרכז הנתונים המקומי.

  5. מגדירים את cloudAuditLogging.serviceAccounKeyPath לנתיב של קובץ מפתח ה-JSON של חשבון השירות של יומני הביקורת של Cloud.

  6. מוודאים שמילאתם את הקטע gkeConnect ושהערך של gkeConnect.projectID זהה לערך של cloudAuditLogging.projectID.

לדוגמה:

gkeConnect:
  projectID: "my-project"
  registerServiceAccountKeyPath: "/my-key-fokder/connect-register-key.json"

cloudAuditLogging:
  projectID: "my-project"
  clusterLocation: "us-west1"
  serviceAccountKeyPath: "/my-key-folder/audit-logging-key.json"

ממשיכים ביצירת האשכול כרגיל.

הפעלת יומני ביקורת בענן עבור אשכול משתמשים קיים

אפשר להפעיל את Cloud Audit Logs רק ב Google Cloud פרויקט שבו רשום אשכול המשתמשים.

אם אשכול משתמשים קיים לא רשום, צריך לרשום אותו לפי השלבים הבאים לפני שמפעילים את יומני הביקורת של Cloud:

  1. מוסיפים קטע gkeConnect אל קובץ התצורה של אשכול המשתמשים. לדוגמה:

    gkeConnect:
      projectID: "my-project"
      registerServiceAccountKeyPath: "/my-key-fokder/connect-register-key.json"
    
  2. מעדכנים את האשכול:

    gkectl update cluster --config USER_CLUSTER_CONFIG --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    

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

  1. ממלאים את הקטע cloudAuditLogging בקובץ התצורה של אשכול המשתמשים. לפרטים על השדות הספציפיים, אפשר לעיין במאמר בנושא יצירת אשכול משתמשים עם יומני ביקורת של Cloud. הערך projectID במקטע cloudAuditLogging חייב להיות זהה לערך במקטע gkeConnect.

  2. מעדכנים את האשכול:

    gkectl update cluster --config USER_CLUSTER_CONFIG --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    

השבתת יומני ביקורת ב-Cloud עבור אשכול משתמשים קיים

  1. בקטע cloudAuditLogging בקובץ התצורה של אשכול המשתמשים, מוחקים את השורה cloudAuditLogging.

  2. מעדכנים את אשכול המשתמשים:

gkectl update cluster --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] --config [USER_CLUSTER_CONFIG] 

גישה ליומני ביקורת

רישום ביומן ביקורת שמבוסס על דיסק

אפשר למצוא את יומני הביקורת של אשכול האדמין בצמתים של מישור הבקרה (control-plane) בקטע /var/log/kube-audit/kube-apiserver-audit.log. יומני הביקורת של אשכול המשתמשים נמצאים ב-PersistentVolumeClaim בשם kube-audit-kube-apiserver-0. אתם יכולים לגשת לנתונים האלה ב-Pods שלכם דרך volumes רשומות:

מוסיפים את הרשומה הזו לאשכול הניהול:

    volumes:
    - name: kube-audit
      hostPath:
        path: /var/log/kube-audit
        type: ""

מוסיפים את הרשומה הזו לאשכול המשתמשים:

    volumes:
    - name: kube-audit
      persistentVolumeClaim:
        claimName: kube-audit-kube-apiserver-0

כדי לתזמן את ה-Pod שלכם בצומת המתאים של אשכול האדמין (ורק בצומת הזה), תצטרכו להוסיף את הקטעים nodeSelector ו-tolerations למפרט ה-Pod, כך:

    spec:
      nodeSelector:
        node-role.kubernetes.io/master: ''
      tolerations:
      - key: node-role.kubernetes.io/master
        value: ""
        effect: NoSchedule

בקטע user cluster (אוסף משתמשים), מגדירים את namespace כשם אוסף המשתמשים, ואז מגדירים את nodeName זהה ל-kube-apiserver-0:

   spec:
     nodeName: NODE_NAME

כדי לציין את nodeName של kube-apiserver-0, מריצים את הפקודה הבאה:

kubectl get pod kube-apiserver-0 -n USER_CLUSTER_NAME --kubeconfig kubeconfig -o jsonpath='{.spec.nodeName}'

שם הקובץ של כל יומן ביקורת כולל חותמת זמן שמציינת מתי בוצע סיבוב של הקובץ. הקובץ מכיל יומני ביקורת עד התאריך והשעה האלה.

יומני ביקורת של Cloud

המסוף

  1. במסוף Google Cloud , נכנסים לדף Logs בתפריט Logging.

    כניסה לדף Logs

  2. בתיבה Filter by label or text search (סינון לפי תווית או חיפוש טקסט), שנמצאת ממש מעל התפריטים הנפתחים שצוינו למעלה, לוחצים על החץ למטה כדי לפתוח את התפריט הנפתח. בתפריט, בוחרים באפשרות המרת המסנן למסנן מתקדם.

  3. ממלאים את השדה במסנן הבא:

    resource.type="k8s_cluster"
    logName="projects/PROJECT_ID/logs/externalaudit.googleapis.com%2Factivity"
    protoPayload.serviceName="anthosgke.googleapis.com"
    
  4. לוחצים על Submit Filter (שליחת מסנן) כדי להציג את כל יומני הביקורת מאשכולות שהוגדרו להתחבר לפרויקט הזה.

gcloud

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

gcloud logging read \
    'logName="projects/PROJECT_ID/logs/externalaudit.googleapis.com%2Factivity" \
    AND resource.type="k8s_cluster" \
    AND protoPayload.serviceName="anthosgke.googleapis.com" ' \
    --limit 2 \
    --freshness 300d

כאשר PROJECT_ID הוא מזהה הפרויקט.

בפלט מוצגות שתי רשומות ביומן. שימו לב שבכל רשומה ביומן, הערך בשדה logName הוא projects/PROJECT_ID/logs/externalaudit.googleapis.com%2Factivity, והערך של protoPayload.serviceName שווה לערך של anthosgke.googleapis.com.

מדיניות ביקורת

ההתנהגות של יומני הביקורת של Cloud נקבעת על ידי מדיניות סטטית של יומני ביקורת ב-Kubernetes. בשלב הזה אי אפשר לשנות את המדיניות הזו, אבל האפשרות הזו תהיה זמינה בגרסה עתידית.