סקירה כללית
במאמר הזה מוסבר איך להשתמש ביומני הביקורת של Cloud ב-Google Distributed Cloud (תוכנה בלבד). Google Distributed Cloud משתמש ביומני ביקורת של Kubernetes, שכוללים רשומה כרונולוגית של קריאות שבוצעו לשרת Kubernetes API של אשכול. יומני ביקורת שימושיים לחקירת בקשות API חשודות ולאיסוף נתונים סטטיסטיים. מידע על יומני הביקורת של GKE On-Prem API זמין במאמר יומני ביקורת של Cloud API.
מידע על יומני ביקורת של Cloud
יומני הביקורת נכתבים ביומני הביקורת של Cloud בפרויקט Google Cloud . לכתיבה ביומני הביקורת של Cloud יש כמה יתרונות לעומת כתיבה לדיסק או תיעוד יומנים במערכת תיעוד מקומית:
- אפשר לרכז את יומני הביקורת של כל האשכולות.
- אי אפשר לשנות רשומות ביומני הביקורת של Cloud.
- רשומות ביומני הביקורת של Cloud נשמרות למשך 400 ימים.
- התכונה Cloud Audit Logs כלולה במחיר של Google Distributed Cloud.
- אתם יכולים להגדיר את Google Distributed Cloud כך שיומנים ייכתבו לדיסק או ליומני הביקורת של Cloud.
רישום ביומן ביקורת שמבוסס על דיסק
כברירת מחדל, יומני הביקורת נכתבים לדיסק קבוע, כך שהפעלות מחדש ושדרוגים של מכונות וירטואליות לא גורמים להיעלמות של היומנים.
אם האפשרות אשכול מתקדם לא מופעלת:
Google Distributed Cloud שומר עד 12GB של רשומות ביומן הביקורת.
אם אשכול מתקדם מופעל
Google Distributed Cloud שומר עד 1GB של רשומות ביומן הביקורת.
יומני ביקורת של Cloud
אם מפעילים את יומני הביקורת של Cloud עבור אשכול, רשומות של יומני הביקורת Admin Activity משרת Kubernetes API של האשכול נשלחות אל Google Cloud, באמצעות הפרויקט Google Cloud שמצוין בשדהcloudAuditLogging.projectID בקובץ ההגדרות של האשכול.
הפרויקט הזה נקרא Google Cloud פרויקט לרישום ביומן הביקורת.
פרויקט יומני הביקורת צריך להיות זהה לפרויקט המארח של הצי.
כדי לשמור בזיכרון מטמון ולכתוב רשומות ביומן הביקורת של Cloud, Google Distributed Cloud פורס audit-proxy Pod באשכול הניהול.
הרכיב הזה זמין גם כקונטיינר sidecar באשכולות משתמשים.
מגבלות
אלו המגבלות שחלות על יומני הביקורת של 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בקובץ ההגדרות של אשכול המשתמשים, מוחקים את השורה.מעדכנים את אשכול המשתמשים:
gkectl update cluster --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] --config [USER_CLUSTER_CONFIG]
גישה ליומני ביקורת
רישום ביומן ביקורת שמבוסס על דיסק
אפשר למצוא את יומני הביקורת של אשכול האדמין בצמתים של מישור הבקרה בקטע /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 Explorer בתפריט Logging.
אם נפתח הדף Legacy Logs Viewer, בוחרים באפשרות Upgrade to the new Logs Explorer בתפריט הנפתח Upgrade.
לוחצים על השדה Query כדי להזין שאילתה.
מזינים את השאילתה הבאה בשדה Query:
resource.type="k8s_cluster" logName="projects/PROJECT_ID/logs/externalaudit.googleapis.com%2Factivity" protoPayload.serviceName="anthosgke.googleapis.com"מחליפים את
PROJECT_IDבמזהה הפרויקט.לוחצים על הפעלת שאילתה כדי להציג את כל יומני הביקורת מאשכולות שהוגדרו להתחבר לפרויקט הזה.
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.
מדיניות ביקורת
מדיניות הביקורת של Kubernetes מגדירה כללים לגבי האירועים שמתועדים כרשומות ביומן, ומציינת אילו נתונים צריכות לכלול הרשומות ביומן. ההתנהגות של יומני הביקורת של Cloud נקבעת על ידי מדיניות סטטית של יומני ביקורת ב-Kubernetes. אין תמיכה בשינוי המדיניות הזו כדי לשנות את ההתנהגות של יומני הביקורת ב-Cloud.