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

במאמר הזה מוסבר על ביקורת במסדי נתונים של Cloud SQL ל-MySQL ועל תוסף הביקורת של Cloud SQL ל-MySQL. כדי להשתמש עכשיו בביקורת מסד נתונים, אפשר לעיין במאמר בנושא שימוש בביקורת מסד נתונים של MySQL.

מהו ביקורת מסד נתונים?

ביקורת במסד נתונים מאפשרת לעקוב אחרי פעולות ספציפיות של משתמשים במסד הנתונים, כמו עדכוני טבלאות, שאילתות קריאה, הענקת הרשאות למשתמשים ועוד. ביקורת במסד נתונים שימושית לארגונים שצריכים לקבל תיעוד של פעילות המשתמשים מסיבות אבטחה או כדי לעמוד בדרישות של תקנות שונות בתחום הפיננסי, הממשלתי ותקנות ISO. אפשר לבצע ביקורת על מסדי נתונים ב-Cloud SQL ל-MySQL בגרסאות 5.7,‏ 8.0 ו-8.4.

תוסף לביקורת ב-Cloud SQL ל-MySQL

הביקורת על מסד הנתונים מופעלת על ידי תוסף הביקורת של Cloud SQL ל-MySQL או על ידי cloudsql_mysql_audit. התוסף הזה משתמש ב-MySQL audit API בקוד פתוח כדי לנטר ולרשום פעילות ב-MySQL. התוסף שולח יומנים אל יומני הביקורת של גישה לנתונים ב-Cloud Logging. יומני הביקורת Data Access מושבתים כברירת מחדל כי הם יכולים להיות גדולים למדי. כדי להשתמש בתוסף, צריך להפעיל את היומנים באופן מפורש.

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

מידע נוסף על תוספים ל-MySQL זמין במאמר בנושא תוספים לשרת MySQL.

מי משתמש בביקורת מסד נתונים?

יש שלושה סוגים של משתמשים שמעורבים בביקורת על מסד נתונים:

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

אדמינים ומבקרים נקראים גם משתמשי ביקורת.

כללי ביקורת

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

  • מזהה – מזהה של כלל מספרי אוטומטי. לכל כלל ביקורת מוקצה באופן אוטומטי מזהה ביקורת כשיוצרים את הכלל. לא ניתן לשנות את מזהה הביקורת אחרי שהוא נוצר.
  • Username – רשימה מופרדת בפסיקים של משתמשים או דפוסי תו כללי. אפשר להשתמש בכוכביות (*) כתווים כלליים לחיפוש גם בשביל המשתמש וגם בשביל המארח. אפשר להשתמש בכוכבית כסיומת, כקידומת או גם וגם. בנוסף, משתמשים יכולים להשתמש בתו הכללי % רק עבור המארח. האורך המקסימלי הוא 2,048 תווים.
  • Dbname – רשימה מופרדת בפסיקים של שמות מסדי נתונים או תבניות של תווים כלליים. אפשר להשתמש בכוכביות (*) כתווים כלליים לחיפוש גם בשביל המשתמש וגם בשביל המארח. אפשר להשתמש בכוכבית כסיומת, כקידומת או גם וגם. עד 2,048 תווים.
  • אובייקט: רשימה של שמות של אובייקטים במסד הנתונים (טבלאות, פונקציות, פרוצדורות מאוחסנות וכו') ו/או תבניות של תווים כלליים, שמופרדים באמצעות פסיקים. אפשר להשתמש בכוכביות (*) כתווים כלליים לחיפוש גם בשביל המשתמש וגם בשביל המארח. אפשר להשתמש בכוכבית כסיומת, כקידומת או גם וגם. האורך המקסימלי הוא 2,048 תווים.
  • Operation (פעולה) – רשימה מופרדת בפסיקים של פעולות במסד הנתונים. התוסף תומך בפעולות קבוצתיות (כמו DDL,‏ DML וכו'), בפעולות בודדות (כמו עדכון, מחיקה וכו') ובתווים כלליים (*) לכל הפעולות. רשימה מלאה של הפעולות הנתמכות התוסף תומך גם בקבוצות של פעולות שאפשר להשתמש בהן כדי לבצע ביקורת על קבוצה של פעולות. האורך המקסימלי הוא 2,048 תווים.
  • Op_result – תוצאת הפעולה.

    • S לביקורת של פעולות שהסתיימו בהצלחה
    • U לביקורת על פעולות שנכשלו
    • B למעקב אחרי פעולות שהצליחו ופעולות שנכשלו
    • E ליצירת כללים בלעדיים

סוגי פעולות

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

  • DQL – קריאת נתונים ממסד הנתונים (כלומר, הצהרות SELECT)
  • DML – הוספה, מחיקה או שינוי של נתונים
  • DDL – יצירה או שינוי של מבנה אובייקטים במסד הנתונים
  • DCL – ניהול הרשאות של משתמשים במסד הנתונים
  • Show – תיאור של התנגדויות למסד הנתונים או סטטוס מסד הנתונים
  • Call - הפעלה של תהליך מאוחסן

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

גיבויים

כשמשחזרים מופע מגיבוי או משחזור לנקודת זמן מסוימת (PITR), כללי הביקורת חוזרים גם הם לזמן הגיבוי או ה-PITR. זה קורה כי כללי הביקורת הם חלק מהנתונים שמאוחסנים במסד הנתונים, כמו גם היעדים (המשתמשים והאובייקטים) שהכלל מבצע עליהם ביקורת.

רפליקות לקריאה

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

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

CALL mysql.cloudsql_reload_audit_rule(1)

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

זמינות מסד הנתונים במהלך כשל ביומן הביקורת

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

מופעים לקריאה בלבד

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

מגבלות ובעיות ידועות

שיעור ההעברה של היומן

לפני ש-Cloud SQL שולח יומני ביקורת ל-Cloud Logging, הם נכתבים באופן זמני בדיסק של המכונה, תוך שימוש בשטח הדיסק. היומנים מועלים ל-Cloud Logging ומוסרים מהדיסק בקצב של 4MB לשנייה. כשהעומס שנובע מיצירת יומנים חורג מקצב ההעלאה, השימוש בדיסק במופע עולה, מה שעלול לגרום למסד הנתונים למצות את נפח הדיסק ולצאת מפעולה. גם אם מופעלות הגדלות אוטומטיות של נפח אחסון בדיסק, העלייה בשימוש בדיסק מגדילה את העלויות.

במהלך השימוש בתכונה הזו, מומלץ:

  • הפעלת הגדלות אוטומטיות של נפח האחסון
  • מעקב אחר השימוש הכולל בדיסק. אי אפשר לעקוב אחרי העומס שנוצר מהפקת יומנים בנפרד. משתמשים במדד cloudsql.googleapis.com/database/disk/utilization בMetrics Explorer.
  • במידת הצורך, אפשר להקטין את קצב יצירת היומן על ידי הגבלת הפעילות במסד הנתונים או צמצום הביקורת.

ביקורת על פעולות שנכשלו

אם כללי הביקורת שלכם כוללים ביקורת על פעולות לא מוצלחות (op_result מוגדר לערך U עבור פעולות לא מוצלחות או לערך B עבור פעולות לא מוצלחות וגם מוצלחות), יכול להיות שחלק מהמשתמשים יוכלו להעמיס על מופע מסד הנתונים שלכם יומני ביקורת על ידי ביצוע רצוף של פעולות לא מוצלחות. אם מהירות יצירת היומן עולה על קצב ההטמעה של היומן, עלולה להתרחש עלייה לא רצויה בשימוש בדיסק, שתגרום לניצול המקום בדיסק. במקום זאת, כשמבצעים ביקורת על פעולות לא מוצלחות:

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

כללי ביקורת

אי אפשר ליצור יותר מ-1,000 שילובים של כללי ביקורת לכל מופע של מסד נתונים. שילוב של כללי ביקורת הוא קבוצה ייחודית של משתמש, מסד נתונים, אובייקט ופעולות. לדוגמה, כלל ביקורת שבודק את user1,user2,‏ db1,db2,‏ table1,table2 ו-select,delete יוצר 2 x 2 x 2 x 2 = 16 שילובים. יצירה או עדכון של כללי ביקורת ייכשלו אם המספר הכולל של שילובי כללי הביקורת יעלה על 1,000.

פעולות שלא נתמכות

בשלב הזה, אין תמיכה בפעולות הבאות.

  • הפונקציות הבאות לא נתמכות, כשמשתמשים בהן כמו שמתואר:

    • בתוך שאילתות SELECT עם UNION, INTERSECT, סעיף WHERE, שאילתות מקוננות, שאילתות משנה וכו'.
    • בדוחות UPDATE, DELETE, INSERT, REPLACE.

    לדוגמה, אם יש לכם כלל ביקורת לביקורת של אובייקט func1, הפעולות הבאות לא נכללות בביקורת:

    • SELECT func1() FROM table;
    • SELECT * FROM table WHERE a = func1();
    • SELECT func1() != 0;
    • SELECT func1() > 0;
    • SET @x = func1();

    פונקציה שנקראת ישירות על ידי SELECT ללא אופרטורים וללא סעיף WHERE עוברת ביקורת:

    • SELECT func1();
    • SELECT db.func1();
  • בשלב הזה אין תמיכה בסינון לפי כתובת IP.

המאמרים הבאים