במאמר הזה מוסבר איך להפעיל את תוסף הביקורת של Cloud SQL ל-MySQL ואיך להשתמש בו. סקירה כללית מופיעה במאמר ביקורת במסד נתונים של MySQL. למידע נוסף על תוספים של MySQL, אפשר לעיין במאמר טעינת תוספים של MySQL.
לפני שמתחילים
יומני הביקורת Data Access
מפעילים ומגדירים יומני ביקורת של גישה לנתונים. הגדרת יומני ביקורת Data Access
הרשאות שנדרשות למשתמשי ביקורת
כדי להפעיל את ההליכים המאוחסנים של הביקורת, אתם צריכים הרשאות EXECUTE. אם אדמין צריך לשנות את הרשאות הגישה של בודק להליכים המאוחסנים של הביקורת, הוא צריך להשתמש בפקודה GRANT או REVOKE בלקוח mysql. פרטים על הרשאות המשתמש מופיעים במאמר בנושא הרשאות משתמש ב-MySQL. לדוגמה, אם אדמין רוצה להעניק גישה למבקר בשם user כדי לנהל את כללי הביקורת, הוא יכול להעניק את ההרשאות באמצעות ההצהרה הבאה:
CREATE USER 'user'@'%' IDENTIFIED BY 'password'; GRANT EXECUTE ON PROCEDURE mysql.cloudsql_list_audit_rule TO 'user'@'%';
אם האדמין הזה ירצה לבטל את הגישה של הבודק מאוחר יותר, הוא יוכל לבטל את ההרשאות באמצעות ההצהרה הבאה:
REVOKE ALL ON PROCEDURE mysql.cloudql_list_audit_rule FROM 'user'@'%';
כברירת מחדל, משתמשים שנוצרו באמצעות Cloud SQL (למעט משתמשי IAM) הם אדמינים עם כל ההרשאות, למעט FILE ו-SUPER, כולל כל ההרשאות לפרוצדורות המאוחסנות של הביקורת. כברירת מחדל, למשתמשי מסד נתונים ב-IAM אין הרשאות.
הפעלת פלאגין הביקורת של Cloud SQL ל-MySQL
התוסף Cloud SQL ל-MySQL Audit (cloudsql_mysql_audit) שולט בהתנהגות של ביקורת עבור מכונה מסוימת של מסד נתונים. כדי להשתמש בתוסף, צריך קודם להפעיל אותו במכונת Cloud SQL.
כדי להפעיל את הפלאגין cloudsql_mysql_audit, אפשר להשתמש באחת מהאפשרויות הבאות:
--cloudsql_mysql_audit=ONמורה לשרת להפעיל את הפלאגין. אם הפלאגין לא מצליח להתחיל לפעול, השרת פועל כשהפלאגין מושבת.
--cloudsql_mysql_audit=FORCEההגדרה הזו אומרת לשרת להפעיל את הפלאגין, אבל אם הפעלת הפלאגין נכשלת, השרת לא מופעל. במילים אחרות, האפשרות הזו מחייבת את השרת לפעול עם הפלאגין מופעל או לא לפעול בכלל.
--cloudsql_mysql_audit=FORCE_PLUS_PERMANENTבדומה ל-FORCE, אבל גם מונע את הסרת הטעינה של הפלאגין בזמן הריצה. אם משתמש מנסה לבטל את הטעינה של הפלאגין באמצעות הפקודה UNINSTALL PLUGIN, מתרחשת שגיאה.
מצבי ההפעלה של התוספים מוצגים בעמודה PLUGIN_STATUS של הטבלה INFORMATION_SCHEMA.PLUGINS.
המסוף
-
נכנסים לדף Cloud SQL Instances במסוף Google Cloud .
- פותחים את המופע ולוחצים על עריכה.
- גוללים למטה לקטע דגלים.
- כדי להגדיר דגל שלא הוגדר במופע לפני כן, לוחצים על הוספת דגל, בוחרים באפשרות
cloudsql_mysql_auditבתפריט הנפתח ומגדירים את הערך שלו ל-ON. - לוחצים על Save כדי לשמור את השינויים.
- מאשרים את השינויים בקטע דגלים בדף סקירה כללית.
gcloud
מחליפים את מה שכתוב בשדות הבאים:
- INSTANCE_NAME: השם של המכונה שבה מגדירים את הדגל.
gcloud sql instances patch INSTANCE_NAME \ --database-flags cloudsql_mysql_audit=ON
הפקודה הזו מחליפה את כל הדגלים של מסד הנתונים שהוגדרו קודם. כדי לשמור את הערכים האלה ולהוסיף ערכים חדשים, צריך לכלול את הערכים של כל הדגלים שרוצים להגדיר במופע. כל דגל שלא נכלל באופן ספציפי מוגדר לערך ברירת המחדל שלו.
לדגלים שלא מקבלים ערך, מציינים את שם הדגל ואחריו סימן שוויון (=).
REST v1beta4
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- project-id: מזהה הפרויקט
- instance-id: מזהה המכונה
ה-method של ה-HTTP וכתובת ה-URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id
תוכן בקשת JSON:
{
"settings":
{
"databaseFlags":
[
{
"name": "cloudsql_mysql_audit",
"value": "ON"
}
]
}
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
REST v1
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- project-id: מזהה הפרויקט
- instance-id: מזהה המכונה
ה-method של ה-HTTP וכתובת ה-URL:
PATCH https://sqladmin.googleapis.com/sql/v1/projects/project-id/instances/instance-id
תוכן בקשת JSON:
{
"settings":
{
"databaseFlags":
[
{
"name": "cloudsql_mysql_audit",
"value": "ON"
}
]
}
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
הגדרות של פלאגין לביקורת ב-Cloud SQL ל-MySQL
אפשר לשנות את ההתנהגות של תוסף הביקורת של Cloud SQL ל-MySQL באמצעות הדגלים שבהמשך. אפשר לשנות את כל הדגלים בלי להפעיל מחדש את מסד הנתונים. מידע נוסף על ניהול הדגלים זמין במאמר הגדרת דגלים של מסד נתונים.
cloudsql_mysql_audit_data_masking_regexביטוי רגולרי שמשמש להסתרת נתונים, שתואם לביטויים רגולריים שתואמים ל-Perl (PCREs).
כברירת מחדל, ביומן הביקורת של הפלט, הסיסמאות של המשתמשים (
<psw>) מוחלפות במסכת סיסמה של***.הביטוי הרגולרי חל רק על הצהרות עם סוג פקודה שצוין באמצעות
cloudsql_mysql_audit_data_masking_cmds. כשמשתמשים ב-gcloud, צריך להשתמש בקובץ דגלים כדי להגדיר ערכים עם תווים מיוחדים מורכבים.ערכי ברירת המחדל של הדגל הזה:
identified(?:/\*.*?\*/|\s)*?by(?:/\*.*?\*/|\s)*?(?:password)?(?:/\*.*?\*/| \s)*?['|"](?<psw>.*?)(?<!\\)['|"]|password(?:/\*.*?\*/|\s)*?\((?:/\*.*?\*/| \s)*?['|"](?<psw>.*?)(?<!\\)['|"](?:/\*.*?\*/|\s)*?\)|password(?:/\*.*?\*/| \s)*?(?:for(?:/\*.*?\*/|\s)*?\S+?)?(?:/\*.*?\*/|\s)*?=(?:/\*.*?\*/|\s)*?[ '|"](?<psw>.*?)(?<!\\)['|"]|password(?:/\*.*?\*/|\s)*?['|"](?<psw>.*?) (?<!\\)['|"]
דוגמאות מפורטות בהמשך.
בלי
cloudsql_mysql_audit_data_masking_regex, רשומה ביומן ביקורת שמתארת פקודה ליצירת משתמש תיראה כך:{..."cmd":"create_user","query":"create user user1@'localhost' identified by 'pw'"}
אם משתמשים בערך ברירת המחדל
cloudsql_mysql_audit_data_masking_regex, יומן הביקורת ישתנה כך:{..."cmd":"create_user","query":"create user user1@'localhost' identified by '***'"}
אם מגדירים את
cloudsql_mysql_audit_data_masking_regexלערך(?<psw>.*), Cloud SQL יכול לסנן את כל תוכן השאילתה.{..."cmd":"create_user","query":"***"}
cloudsql_mysql_audit_data_masking_cmdsרשימה מופרדת בפסיקים של פקודות שהביטוי הרגולרי לאנונימיזציה של הנתונים (cloudsql_mysql_audit_data_masking_regex) חל עליהן. מגדירים מחרוזת ריקה (
"") כדי להפסיק את הסינון. כשמשתמשים ב-gcloud, צריך להשתמש בקובץ דגל כדי להגדיר רשימה מופרדת בפסיקים. ערך ברירת המחדל כולל פקודות MySQL עם סעיף הסיסמה הבא:create_user,alter_user,grant,update
cloudsql_mysql_audit_max_query_lengthקובע את האורך המקסימלי של השאילתה שמתועדת ביומן הביקורת. אם לא צריך לראות את פרטי השאילתה, אפשר להשתמש ב-
0, כלומר השאילתה לא מתועדת ביומן הביקורת. כך נחסך מקום אחסון ביומן, והעלות נמוכה יותר. -1מציין שאין הגבלה. ברירת המחדל היא-1.cloudsql_mysql_audit_log_write_periodהתקופה שבה מתבצעת כתיבה ליומן. אחרי שמגיעים למספר אלפיות השנייה שהגדרתם לאפשרות הזו של הדגל, או כשהמאגר הזמני מלא, השרשור של הכתיבה כותב את התוכן של המאגר הזמני לדיסק. אם מגדירים את אפשרות הדגל הזו ל-
0, השרשור של המשתמש נאלץ לחכות להודעה מהשרשור של הכותב שהכתיבה הושלמה. ברירת המחדל היא500(אלפיות השנייה).
המסוף
-
נכנסים לדף Cloud SQL Instances במסוף Google Cloud .
- פותחים את המופע ולוחצים על עריכה.
- גוללים למטה לקטע דגלים.
- כדי להגדיר דגל לניהול מסד נתונים שלא הוגדר במכונה לפני כן, לוחצים על הוספת סימון, בוחרים דגל לניהול מסד נתונים מהרשימה שלמעלה בתפריט הנפתח ומגדירים את הערך שלו.
- לוחצים על Save כדי לשמור את השינויים.
- מאשרים את השינויים בקטע דגלים בדף סקירה כללית.
gcloud
מחליפים את מה שכתוב בשדות הבאים:
- INSTANCE_NAME: השם של המכונה שבה מגדירים את הדגל.
- FLAG_NAME: השם של דגל ההגדרה.
- FLAG_VALUE: הערך שבו יש להשתמש עבור הדגל.
gcloud sql instances patch INSTANCE_NAME / --database-flags FLAG_NAME=FLAG_VALUE
REST v1beta4
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- project-id: מזהה הפרויקט
- instance-id: מזהה המכונה
ה-method של ה-HTTP וכתובת ה-URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id
תוכן בקשת JSON:
{
"settings":
{
"databaseFlags":
[
{
"name": "flag_name",
"value": "flag_value"
}
]
}
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
REST v1
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- project-id: מזהה הפרויקט
- instance-id: מזהה המכונה
ה-method של ה-HTTP וכתובת ה-URL:
PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id
תוכן בקשת JSON:
{
"settings":
{
"databaseFlags":
[
{
"name": "flag_name",
"value": "flag_value"
}
]
}
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
הגדרת ביקורת במסד הנתונים
ניהול כללי ביקורת
Cloud SQL משתמשת בסדרה של פרוצדורות מאוחסנות כדי לנהל כללי ביקורת של Cloud SQL ל-MySQL Audit Plugin. יש ארבעה הליכים מאוחסנים שאפשר להשתמש בהם כדי ליצור, להציג ברשימה, לעדכן ולמחוק כללי ביקורת.
כל תהליך מאוחסן מחזיר שתי משתנים: @outval ו-@outmsg. המשתנים האלה מציינים את קוד הסטטוס ואת הודעת השגיאה של הפרוצדורה המאוחסנת, בהתאמה. אפשר להשתמש בכוכבית (*) כתו כללי לחיפוש של שמות משתמשים, מארחים, מסדי נתונים וטבלאות. אפשר להשתמש בכוכבית כסיומת, כקידומת או גם וגם. בנוסף, אפשר להשתמש בתו הכללי לחיפוש % רק עבור מארחים. אפשר להשתמש בגרש (`) כדי לציין שיש להשתמש במחרוזת באופן מילולי. לדוגמה, `ta*ble` תואם ל-
באופן מילולי.
כדי שהשינויים החדשים ייכנסו לתוקף, צריך להריץ את הפרוצדורות המאוחסנות עם פרמטר הקלט reload_mode=1 או להתקשר אל mysql.cloudsql_reload_audit_rule(1).
יצירת כללי ביקורת
אפשר להשתמש ב-mysql.cloudsql_create_audit_rule כדי ליצור כלל חדש לביקורת.
כדי ליצור את כלל הביקורת ולטעון אותו מחדש בקריאה אחת, משתמשים בהצהרה הבאה:
CALL mysql.cloudsql_create_audit_rule('user@host','db','obj','ops','op_result',1, @outval,@outmsg);
SELECT @outval, @outmsg;
כדי ליצור את הכלל ולטעון אותו מחדש בקריאה נפרדת, משתמשים בהצהרה הבאה:
CALL mysql.cloudsql_create_audit_rule('user@host','db','obj','ops','op_result',0, @outval,@outmsg);
SELECT @outval, @outmsg;
CALL mysql.cloudsql_reload_audit_rule(1);
הפקודה הקודמת מאפשרת ליצור כמה כללים ואז לטעון מחדש את כל השינויים בבת אחת.
בטבלאות הבאות מוצגים פרמטרי הקלט והפלט של הפקודה הקודמת.
| פרמטרים של קלט | |||
|---|---|---|---|
| שם | סוג | תיאור | דוגמה |
user@host או user@ip |
מחרוזת |
רשימה מופרדת בפסיקים של משתמשי מסד הנתונים לביקורת. בפורמט user@host או user@ip. |
user1@localhost,user1@*,user1@%,user@ip
|
db |
מחרוזת | רשימה מופרדת בפסיקים של מסדי נתונים לביקורת. | db1,db2,db3* |
obj |
מחרוזת | רשימה מופרדת בפסיקים של אובייקטים במסד הנתונים לביקורת. | table1,table2,table3* |
ops |
מחרוזת | רשימה מופרדת בפסיקים של פעולות במסד הנתונים שרוצים לבדוק. | select,delete,insert |
op_result |
מחרוזת | ביקורת הצלחה (S), ביקורת כישלון (U) או ביקורת הצלחה וכישלון (B) של פעולות. | S,U או B |
reload_mode |
מספר שלם | 0 כדי לא לטעון מחדש את הכלל ו-1 כדי לטעון מחדש. |
0 או 1 |
| פרמטרים של פלט | |||
|---|---|---|---|
| שם | סוג | תיאור | דוגמה |
@outval |
int | קוד הסטטוס של התהליך המאוחסן. | 0 להצלחה ו-1 לכישלון. |
@outmsg |
מחרוזת | הודעת השגיאה של התהליך המאוחסן. |
יש מגבלות על כללי הביקורת:
| מגבלות | |
|---|---|
אורך של user, db, obj וops. |
הגודל המקסימלי הוא 2,048 תווים. |
מספר השילובים של user, db, obj ו-ops. |
אפשר ליצור עד 1,000 שילובים. לדוגמה, כלל ביקורת שבודק את user1,user2, db1, db2, table1,table2 ו-select,delete יוצר 2 x 2 x 2 x 2 = 16 שילובים. |
רשימה של כללי ביקורת
בודקים יכולים להשתמש ב-mysql.cloudsql_list_audit_rule כדי לראות רשימה של כללי ביקורת קיימים.
כדי להציג את כלל הביקורת 1 ו-2, משתמשים בפקודות הבאות:
CALL mysql.cloudsql_list_audit_rule('1,2',@outval,@outmsg);
SELECT @outval, @outmsg;
כדי להציג רשימה של כל כללי הביקורת:
CALL mysql.cloudsql_list_audit_rule('*',@outval,@outmsg);
SELECT @outval, @outmsg;
בטבלאות הבאות מוצגים פרמטרי הקלט והפלט של הפקודה הקודמת.
| פרמטרים של קלט | |||
|---|---|---|---|
| שם | סוג | תיאור | דוגמה |
rule_id |
מחרוזת | רשימה מופרדת בפסיקים של מזהי כללים להסרה. | 1,2,3 |
| פרמטרים של פלט | |||
|---|---|---|---|
| שם | סוג | תיאור | דוגמה |
@outval |
int | קוד הסטטוס של התהליך המאוחסן. | 0 להצלחה ו-1 לכישלון. |
@outmsg |
מחרוזת | הודעת השגיאה של התהליך המאוחסן. |
עדכון כללי הביקורת
אפשר להשתמש ב-mysql.cloudsql_update_audit_rule כדי לעדכן כלל קיים של ביקורת.
כדי לעדכן את כלל הביקורת ולטעון אותו מחדש בקריאה אחת, משתמשים בהצהרה הבאה:
CALL mysql.cloudsql_update_audit_rule(1,'user@host','db','obj','ops','op_result',1,@outval,@outmsg);
SELECT @outval, @outmsg;
יכול להיות שתרצו לעדכן כמה כללי ביקורת בסשן אחד לפני שתטעינו מחדש את הכללים. אפשר להשתמש בפרוצדורה המאוחסנת הבאה כדי לעדכן כללים בשלב אחד ואז לטעון מחדש את הכללים האלה בשלב מאוחר יותר.
CALL mysql.cloudsql_update_audit_rule(1,'user@host','db','obj','ops','op_result',0,@outval,@outmsg);
SELECT @outval, @outmsg;
CALL mysql.cloudsql_reload_audit_rule(1);
בטבלאות הבאות מוצגים פרמטרי הקלט והפלט של הפקודה הקודמת.
| פרמטרים של קלט | |||
|---|---|---|---|
| שם | סוג | תיאור | דוגמה |
rule_id |
int | המזהה של הכלל שרוצים לעדכן. | 5 |
user@host |
מחרוזת |
רשימה מופרדת בפסיקים של משתמשי מסד הנתונים לביקורת. בפורמט user@host. |
user1@localhost,user1@*user1@%
|
db |
מחרוזת | רשימה מופרדת בפסיקים של מסדי נתונים לביקורת. | db1,db2,db3* |
obj |
מחרוזת | רשימה מופרדת בפסיקים של אובייקטים במסד הנתונים לביקורת. | table1,table2,table3* |
ops |
מחרוזת | רשימה מופרדת בפסיקים של פעולות במסד הנתונים שרוצים לבדוק. | SELECT,DELETE,INSERT |
op_result |
מחרוזת | ביקורת על פעולות שהצליחו (S), פעולות שנכשלו (U) או פעולות שהצליחו וגם פעולות שנכשלו (B). | S,U או B |
reload_mode |
מספר שלם | 0 כדי לא לטעון מחדש את הכלל ו-1 כדי לטעון מחדש. |
0 או 1 |
| פרמטרים של פלט | |||
|---|---|---|---|
| שם | סוג | תיאור | דוגמה |
@outval |
int | קוד הסטטוס של התהליך המאוחסן. | 0 להצלחה ו-1 לכישלון. |
@outmsg |
מחרוזת | הודעת השגיאה של התהליך המאוחסן. |
יש מגבלות על כללי הביקורת:
| מגבלות | |
|---|---|
אורך של user, db, obj
ושל ops. |
הגודל המקסימלי הוא 2,048 תווים. |
מספר השילובים של user, db,
obj ו-ops. |
אפשר ליצור עד 1,000 שילובים. לדוגמה, כלל ביקורת שבודק את user1,user2, db1, db2, table1,table2 ו-select,delete יוצר 2 x 2 x 2 x 2 = 16 שילובים. |
מחיקת כללי ביקורת
אפשר להשתמש ב-mysql.cloudsql_delete_audit_rule כדי למחוק כלל ביקורת קיים.
כדי למחוק את כלל הביקורת ולטעון אותו מחדש בהפעלה אחת, משתמשים בהצהרה הבאה:
CALL mysql.cloudsql_delete_audit_rule('1,2',1,@outval,@outmsg);
SELECT @outval, @outmsg;
כדי למחוק את הכלל ולטעון אותו מחדש בקריאה נפרדת, משתמשים בהצהרה הבאה:
CALL mysql.cloudsql_delete_audit_rule('1,2',0,@outval,@outmsg);
SELECT @outval, @outmsg;
CALL cloudsql_reload_audit_rule(1);
הפקודה הקודמת מאפשרת למחוק כמה כללים ואז לטעון מחדש את כל השינויים בו-זמנית.
בטבלאות הבאות מוצגים פרמטרי הקלט והפלט של הפקודה הקודמת.
| פרמטרים של קלט | |||
|---|---|---|---|
| שם | סוג | תיאור | דוגמה |
rule_id |
מחרוזת | רשימה מופרדת בפסיקים של מזהי כללים להסרה. | 1,2,3 |
reload_mode |
מספר שלם | 0 כדי לא לטעון מחדש את הכלל ו-1 כדי לטעון מחדש. |
0 או 1 |
| פרמטרים של פלט | |||
|---|---|---|---|
| שם | סוג | תיאור | דוגמה |
@outval |
int | קוד הסטטוס של התהליך המאוחסן. | 0 להצלחה ו-1 לכישלון. |
@outmsg |
מחרוזת | הודעת השגיאה של התהליך המאוחסן. |
קבוצות של פעולות
תוסף הביקורת של Cloud SQL ל-MySQL תומך בשימוש בקבוצות פעולות בהגדרות של כללים לביקורת של אוספי פעילויות. כדי לפשט את יצירת כללי הביקורת, אפשר להשתמש בקבוצות הפעולות הבאות.
| קבוצות של פעולות | פעולות שכלולות |
|---|---|
dql |
select |
dml |
delete,delete_multi,
insert, insert_select,
load, replace,
replace_select, truncate,
update, update_multi, |
ddl |
alter_db, alter_event,
alter_function, alter_procedure,
alter_table, alter_user,
create_db, create_event,
create_function, create_index,
create_procedure, create_table,
create_trigger, create_user,
create_udf, create_view,
drop_db, drop_event,
drop_function, drop_index,
drop_procedure, drop_table,
drop_trigger, drop_user,
drop_view, rename_table,
rename_user
|
dcl |
grant, revoke,
revoke_all |
show |
show_binlog_events,
show_create_func, show_create_proc,
show_procedure_code,
show_create_event,
show_create_trigger, show_events,
show_function_code, show_grants,
show_relaylog_events, show_triggers,
|
call |
call_procedure |
צפייה ביומני ביקורת של מסדי נתונים ב-Cloud SQL
צפייה ברשומות של יומן ביקורת של מסד נתונים ב-Cloud Logging
כדי לראות את יומני הביקורת של מסד הנתונים, קודם צריך לוודא שהפעלתם את יומני הביקורת של גישה לנתונים בפרויקט. יומני הביקורת של MySQL שנוצרים עבור מופע מסוים נשלחים אל Cloud Logging כיומני ביקורת של Data Access. אפשר לראות את יומני הביקורת של מסד הנתונים של MySQL שנוצרו בדף Logs Explorer.
ב-Logs Explorer, אפשר להציג יומני ביקורת של MySQL באמצעות השאילתה הבאה כדי להציג את כל יומני הביקורת של מסד הנתונים של MySQL עבור פרויקט Cloud SQL נתון.
מחליפים את מה שכתוב בשדות הבאים:
- PROJECT_ID: המזהה של הפרויקט שרוצים למצוא את יומני הביקורת שלו.
resource.type="cloudsql_database" log_name="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_access" protoPayload.request.@type="type.googleapis.com/google.cloud.sql.audit.v1.MysqlAuditEntry"
אפשר גם לבחור במסנן היומן cloudaudit.googleapis.com/data_access.
הפורמט של יומן הביקורת
יומן הביקורת כולל את השדות הבאים.
| שם השדה | תיאור | ||||||
|---|---|---|---|---|---|---|---|
msgType |
מחרוזת שמייצגת את סוג ההודעה ביומן הביקורת.הערך היחיד של msgType הוא activity. |
||||||
status |
הסטטוס של הפעולה, success או unsuccessful. |
||||||
date |
חותמת זמן שמציינת מתי נוצר אירוע הביקורת. | ||||||
threadId |
המזהה של השרשור ב-MySQL. | ||||||
queryId |
המזהה של שאילתת MySQL. | ||||||
user |
מחרוזת שמייצגת את שם המשתמש שנשלח על ידי הלקוח. יכול להיות שהערך הזה יהיה שונה מהערך של privUser. | ||||||
privUser |
מחרוזת שמייצגת את המשתמש שהשרת אימת את הלקוח בתורו. זהו שם המשתמש שהשרת משתמש בו לבדיקת הרשאות. יכול להיות שהיא תהיה שונה מערך המשתמש. | ||||||
gcpIamAccount |
מחרוזת שמייצגת את חשבון ה-IAM או חשבון השירות. | ||||||
ip |
מחרוזת שמייצגת את כתובת ה-IP של הלקוח. | ||||||
host |
מחרוזת שמייצגת את שם המארח של הלקוח. | ||||||
errCode
|
קוד השגיאה של MySQL עבור פעולה שנכשלה. מידע נוסף זמין במאמר בנושא הפניית הודעות שגיאה בשרת MySQL. | ||||||
cmd |
מחרוזת שמציינת את הצהרת ה-SQL (סוג הפעולה) שבה רוצים להשתמש. לדוגמה, INSERT, UPDATE או DELETE. |
||||||
objects |
אובייקטים של ביקורת. בדרך כלל טבלה. השדה הזה כולל את הפרטים הבאים על האובייקט:
|
||||||
query |
הצהרת SQL (שמופעלת ישירות). | ||||||
chunkCount |
המספר הכולל של המקטעים אם גודל השאילתה של יומן הביקורת גדול מ-cloudsql_mysql_audit_event_split_threshold (90,000). |
||||||
chunkIndex |
האינדקס של החלק. הערך של chunk_index מתחיל מ-1. |
||||||
@type |
הסוג הוא תמיד type.googleapis.com/google.cloud.sql.audit.v1.MysqlAuditEntry. |
בדוגמה הבאה מוצגת רשומה ביומן הביקורת.
{
"msgType":"activity",
"status":"unsuccessful",
"date":"2021-11-11T06:16:16.163603Z",
"threadId":"750",
"queryId":"26763",
"user":"root",
"priv_user":"root",
"ip":"",
"host":"localhost",
"errCode":"1146",
"cmd":"select",
"objects":[{"db":"test","name":"t4","obj_type":"TABLE"}],
"query":"select * from test.t4",
"chunkCount":2,
"chunkIndex":2,
"@type":"type.googleapis.com/google.cloud.sql.audit.v1.MysqlAuditEntry"
}
השבתת ביקורת במסד נתונים
כדי להשבית את תוסף הביקורת של Cloud SQL ל-MySQL, אפשר להגדיר את הדגל לניהול מסד נתונים cloudsql_mysql_audit כ-OFF או להסיר את הדגל.
המסוף
-
נכנסים לדף Cloud SQL Instances במסוף Google Cloud .
- פותחים את המופע ולוחצים על עריכה.
- גוללים למטה לקטע דגלים.
- כדי להגדיר דגל שלא הוגדר במופע לפני כן, לוחצים על הוספת דגל, בוחרים באפשרות
cloudsql_mysql_auditבתפריט הנפתח ומגדירים את הערך שלו ל-OFF. - לוחצים על Save כדי לשמור את השינויים.
- מאשרים את השינויים בקטע דגלים בדף סקירה כללית.
gcloud
מחליפים את מה שכתוב בשדות הבאים:
- INSTANCE_NAME: השם של המכונה שבה מגדירים את הדגל.
gcloud sql instances patch INSTANCE_NAME \ --database-flags cloudsql_mysql_audit=OFF
REST v1beta4
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- project-id: מזהה הפרויקט
- instance-id: מזהה המכונה
ה-method של ה-HTTP וכתובת ה-URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id
תוכן בקשת JSON:
{
"settings":
{
"databaseFlags":
[
{
"name": "cloudsql_mysql_audit",
"value": "OFF"
}
]
}
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
REST v1
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- project-id: מזהה הפרויקט
- instance-id: מזהה המכונה
ה-method של ה-HTTP וכתובת ה-URL:
PATCH https://sqladmin.googleapis.com/sql/v1/projects/project-id/instances/instance-id
תוכן בקשת JSON:
{
"settings":
{
"databaseFlags":
[
{
"name": "cloudsql_mysql_audit",
"value": "OFF"
}
]
}
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
דוגמאות לכללי ביקורת
כדי לבדוק את כל הפעילויות של כל המשתמשים:
CALL mysql.cloudsql_create_audit_rule('*','*','*','*','B',1,@outval,@outmsg);
ביקורת על כל הפעילויות של משתמש יחיד
user1:CALL mysql.cloudsql_create_audit_rule('user1@*','*','*','*','B',1,@outval,@outmsg);
ביקורת על כל הפעילויות של כל המשתמשים שמתחילות ב-
user:CALL mysql.cloudsql_create_audit_rule('user*@*','*','*','*','B',1, @outval,@outmsg);
ביקורת של כל פעולות ה-DML עבור כל המשתמשים:
CALL mysql.cloudsql_create_audit_rule('*','*','*','dml','B',1,@outval,@outmsg);
ביקורת על פעולת בחירה במסד נתונים מיוחד
db1:CALL mysql.cloudsql_create_audit_rule('*','db1','*','select','B',1,@outval,@outmsg);
ביקורת על כל הפעילויות במסד נתונים עם התו המיוחד
db~1:CALL mysql.cloudsql_create_audit_rule('*','`db~1`','*','*','B',1,@outval,@outmsg);
ביקורת על פעולות בחירה ומחיקה בטבלה
db1.table1:CALL mysql.cloudsql_create_audit_rule('*','db1','table1','select,delete','B',1,@outval,@outmsg);
ביקורת על כל הפעולות שהושלמו:
CALL mysql.cloudsql_create_audit_rule('*','*','*','*','S',1,@outval,@outmsg);
לא לבקר את כל הפעילויות של כל המשתמשים שמתחילות ב-
user:CALL mysql.cloudsql_create_audit_rule('user*@*','*','*','*','E',1, @outval,@outmsg);
פתרון בעיות
| שגיאה | פתרון בעיות |
|---|---|
אני לא רואה את cloudsql_mysql_audit כשאני מפעיל את הפקודה:
SHOW (global) variables
|
cloudsql_mysql_audit הוא שם הפלאגין. כדי לבדוק אם הוא פעיל, משתמשים בפקודה הבאה:
SHOW PLUGINS ובודקים את הערך status.
|
למה אני לא רואה יומני ביקורת של mysql אחרי הפעלת cloudsql_mysql_audit? |
צריך להפעיל את יומני הביקורת Data Access (כמו שמתואר במאמר הגדרת יומני ביקורת Data Access). בנוסף, צריך כללי ביקורת כדי שהתוסף Cloud SQL ל-MySQL Audit יבצע ביקורת על יומני הביקורת הרצויים. אפשר להשתמש
בפרוצדורות מאוחסנות עם `reload_mode=1` כדי ליצור כללי ביקורת, או
להריץ את הפקודה הבאה או להפעיל מחדש את מסד הנתונים כדי שהכללים החדשים
שנוספו לביקורת יפעלו:
CALL mysql.cloudsql_reload_audit_rule(1) |
|
מופיעה השגיאה הבאה כשמעדכנים את הדגל של מסד הנתונים:
שגיאה 1193: משתנה מערכת לא ידוע cloudsql_mysql_audit_xxx |
הדגלים של cloudsql_mysql_audit_xxx פועלים רק כשהתוסף Audit פעיל. מסירים את כל הדגלים הקיימים של cloudsql_mysql_audit_xxx מהמופע, ואז מפעילים את הפלאגין באמצעות הפקודה הבאה לפני שמעדכנים את הדגלים של cloudsql_mysql_audit_xxx:
cloudsql_mysql_audit=ON |
| אני רואה יומני ביקורת שנוצרו למרות שלא הגדרתי כללי ביקורת. | שינויים בטבלאות של כללי הביקורת (mysql.audit_log_rules
ו-mysql.audit_log_rules_expanded) ובפרוצדורות המאוחסנות של הביקורת (mysql.cloudsql_xxxx_audit_rule) מתועדים ביומן כברירת מחדל. |
| אחרי שביצעתי שינויים במופע הראשי, אני לא יכול לראות את יומני הביקורת במופעים המשוכפלים. | שרשורי שכפול ושרשורי שחזור אחרי קריסה לא נרשמים ביומן. Cloud SQL מבצע ביקורת על הפעילויות במכונה הראשית, אבל לא במכונת הרפליקה. |
ניסיתי להשתמש בפקודה הבאה כדי להגדיר ערכים מרשימה מופרדת בפסיקים, אבל זה לא עובד.
gcloud instances patch --database-flags
|
אם מציינים רשימה מופרדת בפסיקים של ערכי דגלים באמצעות פקודות gcloud, צריך להשתמש בארגומנט --flags-file. קודם כול, צריך ליצור קובץ עם הפרטים הבאים:
--database-flags: general_log: OFF cloudsql_mysql_audit_max_query_length: '20' cloudsql_mysql_audit_data_masking_cmds: select,update מריצים את הפקודה הבאה: gcloud sql instances patch --flags-file=flagfile |
הפקודה הבאה מחזירה שגיאה:
CALL mysql.cloudsql_create_canonical_rules
|
זה קורה בכוונה. mysql.cloudsql_create_canonical_rules
אפשר להפעיל אותה רק באופן פנימי על ידי
mysql.cloudsql_create_audit_rule ו-
mysql.cloudsql_update_audit_rule. |
| אילו פעולות אפשר לבדוק? |
רשימת הפעולות הנתמכות מופיעה ברשימה המלאה של הפעולות הנתמכות. חלק מהפעולות, כמו הפעולות הבאות, לא נבדקות כי הן לא משפיעות על מסד הנתונים:
USE db_name או SHOW VARIABLES בנוסף, במקרים מסוימים, אי אפשר לבדוק את הפונקציות כאובייקט (תכונות לא נתמכות). |
אני רוצה לבדוק את כל הפעולות בטבלה מסוימת, ולכן יצרתי את כלל הביקורת הבא:
mysql.cloudsql_create_audit_rule("user@*","db",
"table","*","B",1,@1,@2);
אבל אני רואה יומני ביקורת שלא קשורים לטבלה הזו, כמו disconnect ו-connect.
|
פעולות מסוימות, כמו ניתוק או חיבור, נחשבות לפעולות גלובליות. הם מתעלמים מהשדות db ו-object. |
|
כשיוצרים, מעדכנים או מוחקים כלל ביקורת באמצעות פרוצדורות מאוחסנות, מוצגת השגיאה הבאה.
שרת MySQL פועל עם האפשרות read-only, ולכן אי אפשר להפעיל את ההצהרה הזו.
|
Cloud SQL לא יכול לשנות פרוצדורות מאוחסנות במכונה לקריאה בלבד. אם המופע הוא ראשי, מסירים את הדגלים read_only. אם המכונה היא מכונת רפליקה, צריך לבצע את השינויים במכונה הראשית שלה. אחרי שהשינויים בכללים משוכפלים למופע המשוכפל, מריצים במופע המשוכפל את הפקודה הבאה כדי לטעון מחדש את הכללים למופע המשוכפל:
CALL mysql.cloudsql_reload_audit_rule(1) |
כשיוצרים, מעדכנים או מוחקים כלל של בדיקה, מופיעה השגיאה הבאה, גם אם השינוי בוצע בהצלחה.
0 rows affected
|
התגובה 0 rows affected מתייחסת להצהרה האחרונה שהופעלה בפרוצדורה המאוחסנת, ולא לטבלאות. כדי לבדוק אם כלל הביקורת השתנה, משתמשים בפקודה הבאה:
mysql.cloudsql_list_audit_rule |
לא הצלחתי להגדיר את cloudsql_mysql_audit_data_masking_cmds
ואת cloudsql_mysql_audit_data_masking_regexp עם
gcloud. |
הפרמטר gcloud מחייב שימוש בארגומנט --flags-file כדי להגדיר ערכי דגל מורכבים (הדגלים שכוללים תווים מיוחדים). |
יצרתי פרוצדורה מאוחסנת באמצעות ההצהרה CREATE USER, אבל הסיסמה לא מוסתרת. |
כברירת מחדל, ההסתרה פועלת רק עבור cmds (פעולות), כמו הפעולות הבאות:
CREATE_USER, ALTER_USER,
GRANT, UPDATE.
כדי לסנן את הסיסמה בזמן יצירת הפרוצדורה המאוחסנת, מוסיפים את create_procedure אל
cloudsql_mysql_audit_data_masking_cmds.
|
| קיבלתי שגיאה שמשמעותה שהזמן הקצוב לתפוגה של ההמתנה לנעילה חרג מהמותר כשניסיתי ליצור, לעדכן או למחוק כללי ביקורת. | בדרך כלל, השגיאה הזו נגרמת כששתי סשנים או יותר מנסים לשנות את כללי הביקורת באותו הזמן. אם זה קורה לעיתים קרובות,
כדאי להגדיל את הערך של המשתנה innodb_lock_wait_timeout. אפשר להגדיל את הערך באופן גלובלי (באמצעות הדגל של מסד הנתונים) או רק לסשן, למשל באמצעות הפקודה הבאה:
SET innodb_lock_wait_timeout=120 |