סקירה כללית
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 בפרויקט של יומן הביקורת.
יצירת חשבון שירות ליומני ביקורת בענן
כבר יש לכם חשבונות שירות שיצרתם לשימוש ב-Google Distributed Cloud. כדי להשתמש בתכונה הזו, צריך ליצור חשבון שירות נוסף שנקרא חשבון שירות ליומני ביקורת.
יוצרים את חשבון השירות ליומן הביקורת:
gcloud iam service-accounts create audit-logging-service-account
יוצרים קובץ מפתח 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 היא כתובת האימייל של חשבון השירות.
שומרים את
audit-logging-key.jsonבתחנת העבודה של האדמין באותו מיקום שבו נמצאים מפתחות חשבונות השירות האחרים.
אזהרה לפני שמוחקים את חשבון השירות הזה, חשוב להחליף אותו בחשבון השירות החדש בהגדרת האשכול. התהליך דומה להפעלת יומני ביקורת של Cloud עבור אשכול משתמשים קיים. אם שכחתם לעשות את זה, אתם יכולים לפעול לפי המדריך לניקוי.
יצירת אשכול אדמין עם יומני ביקורת של Cloud מופעלים
אפשר להפעיל את יומני הביקורת של Cloud עבור אשכול אדמין רק כשיוצרים את אשכול האדמין בפעם הראשונה. אי אפשר לשנות אשכול אדמין קיים כדי להפעיל את Cloud Audit Logs.
אפשר להיעזר במאמר בנושא יצירת אשכול אדמין.
בקובץ התצורה של אשכול האדמין, ממלאים את הקטע
cloudAuditLogging.מגדירים את
cloudAuditLogging.projectIDלמזהה של פרויקט יומני הביקורת.מגדירים את
cloudAuditLogging.clusterLocationלאזור Google Cloud שבו רוצים לאחסן את יומני הביקורת. כדי לשפר את זמן האחזור, מומלץ לבחור אזור שקרוב למרכז הנתונים המקומי.מגדירים את
cloudAuditLogging.serviceAccountKeyPathלנתיב של קובץ מפתח ה-JSON של חשבון השירות שלכם לרישום ביומן הביקורת.
לדוגמה:
cloudAuditLogging: projectID: "my-project" clusterLocation: "us-west1" serviceAccountKeyPath: "/my-key-folder/audit-logging-key.json"
ממשיכים ביצירת האשכול כרגיל.
יצירת אשכול משתמשים עם יומני ביקורת של Cloud
מידע נוסף מופיע במאמר בנושא יצירת אשכול משתמשים.
בקובץ התצורה של אשכול המשתמשים, ממלאים את הקטע
cloudAuditLogging.מגדירים את
cloudAuditLogging.projectIDלמזהה של פרויקט יומני הביקורת.מגדירים את
cloudAuditLogging.clusterLocationלאזור Google Cloud שבו רוצים לאחסן את יומני הביקורת. כדי לשפר את זמן האחזור, מומלץ לבחור אזור שקרוב למרכז הנתונים המקומי.מגדירים את
cloudAuditLogging.serviceAccounKeyPathלנתיב של קובץ מפתח ה-JSON של חשבון השירות של יומני הביקורת של Cloud.מוודאים שמילאתם את הקטע
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:
מוסיפים קטע
gkeConnectאל קובץ התצורה של אשכול המשתמשים. לדוגמה:gkeConnect: projectID: "my-project" registerServiceAccountKeyPath: "/my-key-fokder/connect-register-key.json"
מעדכנים את האשכול:
gkectl update cluster --config USER_CLUSTER_CONFIG --kubeconfig ADMIN_CLUSTER_KUBECONFIG
אחרי שרושמים את אשכול המשתמשים, פועלים לפי השלבים הבאים כדי להפעיל את יומני הביקורת בענן:
ממלאים את הקטע
cloudAuditLoggingבקובץ התצורה של אשכול המשתמשים. לפרטים על השדות הספציפיים, אפשר לעיין במאמר בנושא יצירת אשכול משתמשים עם יומני ביקורת של Cloud. הערךprojectIDבמקטעcloudAuditLoggingחייב להיות זהה לערך במקטעgkeConnect.מעדכנים את האשכול:
gkectl update cluster --config USER_CLUSTER_CONFIG --kubeconfig ADMIN_CLUSTER_KUBECONFIG
השבתת יומני ביקורת ב-Cloud עבור אשכול משתמשים קיים
בקטע
cloudAuditLoggingבקובץ התצורה של אשכול המשתמשים, מוחקים את השורהcloudAuditLogging.מעדכנים את אשכול המשתמשים:
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
המסוף
במסוף Google Cloud , נכנסים לדף Logs בתפריט Logging.
בתיבה Filter by label or text search (סינון לפי תווית או חיפוש טקסט), שנמצאת ממש מעל התפריטים הנפתחים שצוינו למעלה, לוחצים על החץ למטה כדי לפתוח את התפריט הנפתח. בתפריט, בוחרים באפשרות המרת המסנן למסנן מתקדם.
ממלאים את השדה במסנן הבא:
resource.type="k8s_cluster" logName="projects/PROJECT_ID/logs/externalaudit.googleapis.com%2Factivity" protoPayload.serviceName="anthosgke.googleapis.com"
לוחצים על 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. בשלב הזה אי אפשר לשנות את המדיניות הזו, אבל האפשרות הזו תהיה זמינה בגרסה עתידית.