Questo argomento descrive come attivare e utilizzare il plug-in di controllo di Cloud SQL per MySQL. Per una panoramica, vedi Controllo dei database MySQL. Per Per ulteriori informazioni sui plug-in MySQL, consulta l'articolo sul caricamento dei plug-in MySQL.
Prima di iniziare
Audit log degli accessi ai dati
Attiva e configura gli audit log di accesso ai dati. Consulta: Configurare gli audit log di accesso ai dati.
Privilegi richiesti per gli utenti di controllo
Devi disporre dei privilegi EXECUTE
per le stored procedure di controllo per
eseguirle. Se un amministratore deve modificare i privilegi di accesso di un revisore di
le stored procedure di controllo, devono utilizzare il comando GRANT
o REVOKE
il client mysql
. Per maggiori dettagli sui privilegi utente, consulta
Privilegi utente MySQL. Ad esempio, se un amministratore vuole concedere l'accesso a un revisore denominato user
per gestire le regole di controllo, può concedere i privilegi utilizzando la seguente dichiarazione:
CREATE USER 'user'@'%' IDENTIFIED BY 'password'; GRANT EXECUTE ON PROCEDURE mysql.cloudsql_list_audit_rule TO 'user'@'%';
Se in un secondo momento l'amministratore volesse revocare l'accesso all'auditor, potrebbe revocare i privilegi utilizzando la seguente dichiarazione:
REVOKE ALL ON PROCEDURE mysql.cloudql_list_audit_rule FROM 'user'@'%';
Per impostazione predefinita,
utenti creati con Cloud SQL
(ad eccezione degli utenti IAM) sono amministratori che dispongono di tutti i privilegi tranne FILE
e
SUPER
, inclusi tutti i privilegi per le stored procedure di controllo. Per impostazione predefinita, gli utenti del database IAM non dispongono di privilegi.
Abilita il plug-in di audit di Cloud SQL per MySQL
Il plug-in di audit di Cloud SQL per MySQL (cloudsql_mysql_audit
) controlla le
il comportamento di controllo per una determinata istanza di database. Per utilizzare il plug-in, devi
per prima cosa sull'istanza Cloud SQL.
Per attivare il plug-in cloudsql_mysql_audit
, utilizza una delle seguenti opzioni:
--cloudsql_mysql_audit=ON
Comunica al server di abilitare il plug-in. Se l'inizializzazione del plug-in non riesce, il server viene eseguito con il plug-in disattivato.
--cloudsql_mysql_audit=FORCE
Indica al server di attivare il plug-in, ma se l'inizializzazione del plug-in non riesce, il server non si avvia. In altre parole, questa opzione forza che venga eseguito con il plug-in abilitato o del tutto.
--cloudsql_mysql_audit=FORCE_PLUS_PERMANENT
Come FORCE, ma impedisce anche l'unload del plug-in all'indirizzo runtime. Se un utente tenta di scaricare il plug-in con UNINSTALL PLUGIN, si verifica un errore.
Gli stati di attivazione del plug-in sono visibili nella colonna PLUGIN_STATUS
del file INFORMATION_SCHEMA.PLUGINS
tabella.
Console
-
Nella console Google Cloud, vai alla pagina Istanze Cloud SQL.
- Apri l'istanza e fai clic su Modifica.
- Scorri verso il basso fino alla sezione Flag.
- Per impostare un flag che non è stato impostato in precedenza sull'istanza, fai clic su
Aggiungi flag; scegli
cloudsql_mysql_audit
dal menu a discesa e imposta il valore suON
. - Fai clic su Salva per salvare le modifiche.
- Conferma le modifiche nella sezione Flag della pagina Panoramica.
gcloud
Sostituisci quanto segue:
- INSTANCE_NAME: il nome dell'istanza su cui stai impostando il flag.
gcloud sql instances patch INSTANCE_NAME \ --database-flags cloudsql_mysql_audit=ON
Questo comando sovrascrive tutti i flag di database impostati in precedenza. Per mantenere
e aggiungerne di nuovi, includi i valori per tutti i flag che vuoi impostare nella
istanza; I flag non inclusi nello specifico sono impostati sul valore predefinito.
Per i flag che non accettano un valore, specifica il nome del flag seguito da un segno di uguale (=
).
REST v1beta4
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- project-id: l'ID progetto
- instance-id: l'ID istanza
Metodo HTTP e URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id
Corpo JSON della richiesta:
{ "settings": { "databaseFlags": [ { "name": "cloudsql_mysql_audit", "value": "ON" } ] } }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
REST v1
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- project-id: l'ID progetto
- instance-id: l'ID istanza
Metodo HTTP e URL:
PATCH https://sqladmin.googleapis.com/sql/v1/projects/project-id/instances/instance-id
Corpo JSON della richiesta:
{ "settings": { "databaseFlags": [ { "name": "cloudsql_mysql_audit", "value": "ON" } ] } }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
Impostazioni del plug-in di audit di Cloud SQL per MySQL
Puoi ottimizzare il comportamento del plug-in di audit di Cloud SQL per MySQL utilizzando i flag di seguito. Tutti i flag possono essere modificati senza riavviare il database. Per comprendere Per informazioni su come gestire i flag, consulta Configurazione dei flag di database.
cloudsql_mysql_audit_data_masking_regex
Un'espressione regolare utilizzata per il mascheramento dei dati conforme a Perl Espressioni regolari compatibili (PCRE).
Per impostazione predefinita, le password degli utenti nel log di controllo di output (
<psw>
) sono sostituiti da una maschera password di***
.L'espressione regolare viene applicata solo alle istruzioni con un tipo di comando specificato utilizzando
cloudsql_mysql_audit_data_masking_cmds
. Quando utilizzigcloud
, devi utilizzare un file di flag per impostare valori con caratteri speciali complessi.Valori predefiniti per questo flag:
identified(?:/\*.*?\*/|\s)*?by(?:/\*.*?\*/|\s)*?(?:password)?(?:/\*.*?\*/| \s)*?['|"](?<psw>.*?)(?<!\\)['|"]|password(?:/\*.*?\*/|\s)*?\((?:/\*.*?\*/| \s)*?['|"](?<psw>.*?)(?<!\\)['|"](?:/\*.*?\*/|\s)*?\)|password(?:/\*.*?\*/| \s)*?(?:for(?:/\*.*?\*/|\s)*?\S+?)?(?:/\*.*?\*/|\s)*?=(?:/\*.*?\*/|\s)*?[ '|"](?<psw>.*?)(?<!\\)['|"]|password(?:/\*.*?\*/|\s)*?['|"](?<psw>.*?) (?<!\\)['|"]
Vedi i seguenti esempi.
Senza
cloudsql_mysql_audit_data_masking_regex
, la voce di audit log che descrive un comando di creazione utente sarà la seguente:{..."cmd":"create_user","query":"create user user1@'localhost' identified by 'pw'"}
Con il valore predefinito
cloudsql_mysql_audit_data_masking_regex
, lo stesso audit log verrebbe modificato in:{..."cmd":"create_user","query":"create user user1@'localhost' identified by '***'"}
Se imposti
cloudsql_mysql_audit_data_masking_regex
su(?<psw>.*)
, Cloud SQL può filtrare tutti i contenuti delle query.{..."cmd":"create_user","query":"***"}
cloudsql_mysql_audit_data_masking_cmds
Elenco separato da virgole di comandi a cui viene applicata la regex di mascheramento dei dati (cloudsql_mysql_audit_data_masking_regex). Imposta una stringa vuota (
""
) per interrompere il filtro. Quando usigcloud
, devi utilizzare un file di flag per impostare un elenco separato da virgole. Il valore predefinito include i comandi MySQL con la seguente clausola relativa alla password:create_user,alter_user,grant,update
cloudsql_mysql_audit_max_query_length
Controlla la lunghezza massima della query da registrare nel log di controllo. Se non hai bisogno di visualizzare i dettagli della query, puoi utilizzare
0
, che indica che la query non viene registrata nel log di controllo. In questo modo si risparmia spazio di archiviazione per il log, con un conseguente calo dei costi.-1
significa nessuna limitazione. Il valore predefinito è-1
.cloudsql_mysql_audit_log_write_period
Il periodo di scrittura del log, durante il quale il thread dell'autore scrive i contenuti di dal buffer sul disco dopo aver raggiunto il numero di millisecondi impostato questa opzione di flag o quando il buffer è pieno. Se imposti questa opzione di flag su
0
, il thread utente è costretto ad attendere una notifica dal thread di scrittura che la scrittura è stata completata. Il valore predefinito è500
(millisecondi).
Console
-
Nella console Google Cloud, vai alla pagina Istanze Cloud SQL.
- Apri l'istanza e fai clic su Modifica.
- Scorri verso il basso fino alla sezione Flag.
- Per impostare un flag che non è stato impostato in precedenza sull'istanza, fai clic su Aggiungi flag e scegli un flag di database dall'elenco precedente dal menu a discesa e impostarne il valore.
- Fai clic su Salva per salvare le modifiche.
- Conferma le modifiche in Flag nella pagina Panoramica.
gcloud
Sostituisci quanto segue:
- INSTANCE_NAME: il nome dell'istanza che stai impostando la bandiera.
- FLAG_NAME: il nome del flag di configurazione.
- FLAG_VALUE: il valore da utilizzare per il flag.
gcloud sql instances patch INSTANCE_NAME / --database-flags FLAG_NAME=FLAG_VALUE
REST v1beta4
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- project-id: l'ID progetto
- instance-id: l'ID istanza
Metodo HTTP e URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id
Corpo JSON della richiesta:
{ "settings": { "databaseFlags": [ { "name": "flag_name", "value": "flag_value" } ] } }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
REST v1
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- project-id: l'ID progetto
- instance-id: l'ID istanza
Metodo HTTP e URL:
PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id
Corpo JSON della richiesta:
{ "settings": { "databaseFlags": [ { "name": "flag_name", "value": "flag_value" } ] } }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
Configurare il controllo dei database
Gestisci regole di controllo
Cloud SQL utilizza un insieme di stored procedure per gestire le regole di controllo del plug-in di controllo Cloud SQL per MySQL. Esistono quattro stored procedure che puoi utilizzare per creare: elencare, aggiornare ed eliminare le regole di controllo.
Ogni procedura memorizzata restituisce due variabili: @outval
e @outmsg
. Questi
indicano il codice di stato e il messaggio di errore
rispettivamente. Puoi utilizzare un asterisco (*
) come carattere jolly per effettuare una ricerca
per nomi di utenti, host, database e tabelle. Utilizza l'asterisco come suffisso, prefisso o entrambi. Inoltre, puoi utilizzare il carattere jolly %
solo per gli host. Puoi utilizzare l'accento grave (`
) per indicare che una stringa
deve essere utilizzato letteralmente. Ad esempio, `ta*ble`
corrisponde
letteralmente.
Per applicare le nuove modifiche, devi eseguire le procedure archiviate con il parametro di input reload_mode=1
o chiamare mysql.cloudsql_reload_audit_rule(1)
.
Crea regole di controllo
Puoi utilizzare mysql.cloudsql_create_audit_rule
per creare una nuova regola di controllo.
Per creare la regola di controllo e ricaricarla in una chiamata, utilizza la seguente istruzione:
CALL mysql.cloudsql_create_audit_rule('user@host','db','obj','ops','op_result',1, @outval,@outmsg);
SELECT @outval, @outmsg;
Per creare la regola e ricaricarla in un'altra chiamata, utilizza la seguente sequenza :
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);
Il comando precedente consente di creare più regole e quindi ricaricare tutte le modifiche contemporaneamente.
Le seguenti tabelle mostrano i parametri di input e output per l'elemento .
Parametri di input | |||
---|---|---|---|
Nome | Tipo | Descrizione | Esempio |
user@host o user@ip |
string |
L'elenco separato da virgole di utenti del database da controllare. Utilizza il
formato user@host o user@ip . |
user1@localhost ,user1@* ,user1@% ,user@ip
|
db |
string | L'elenco separato da virgole di database da controllare. | db1,db2,db3* |
obj |
string | L'elenco separato da virgole degli oggetti del database da controllare. | table1,table2,table3* |
ops |
string | L'elenco separato da virgole delle azioni del database da controllare. | select,delete,insert |
op_result |
string | Controllo riuscito (S), non riuscito (U) o entrambe le operazioni (B) riuscite e non riuscite. | S ,U o B |
reload_mode |
Numero intero | 0 per non ricaricare la regola e 1 per la ricarica. |
0 o 1 |
Parametri di output | |||
---|---|---|---|
Nome | Tipo | Descrizione | Esempio |
@outval |
int | Il codice di stato della stored procedure. | 0 per le operazioni riuscite e 1 per le operazioni non riuscite. |
@outmsg |
string | Il messaggio di errore della stored procedure. |
Le regole di controllo presentano i seguenti limiti:
Limitazioni | |
---|---|
Durata: user , db , obj ,
e ops . |
La dimensione massima è di 2048 caratteri. |
Numero di combinazioni di user , db ,
obj e ops . |
Massimo 1000 combinazioni. Ad esempio, una regola di controllo che controlla user1,user2 , db1, db2 , table1,table2 e select,delete genera 2 x 2 x 2 x 2 = 16 combinazioni. |
Elenca regole di controllo
Gli auditor possono utilizzare mysql.cloudsql_list_audit_rule
per elencare le regole di controllo esistenti.
Per elencare le regole di controllo 1 e 2, utilizza i seguenti comandi:
CALL mysql.cloudsql_list_audit_rule('1,2',@outval,@outmsg);
SELECT @outval, @outmsg;
Per elencare tutte le regole di controllo:
CALL mysql.cloudsql_list_audit_rule('*',@outval,@outmsg);
SELECT @outval, @outmsg;
Le tabelle seguenti mostrano i parametri di input e output per il comando precedente.
Parametri di input | |||
---|---|---|---|
Nome | Tipo | Descrizione | Esempio |
rule_id |
string | L'elenco separato da virgole di ID regola da rimuovere. | 1,2,3 |
Parametri di output | |||
---|---|---|---|
Nome | Tipo | Descrizione | Esempio |
@outval |
int | Il codice di stato della stored procedure. | 0 per le operazioni riuscite e 1 per le operazioni non riuscite. |
@outmsg |
string | Il messaggio di errore della stored procedure. |
Aggiorna regole di controllo
Puoi utilizzare mysql.cloudsql_update_audit_rule
per aggiornare una
regola di controllo esistente.
Per aggiornare la regola di controllo e ricaricarla in una sola chiamata, utilizza la seguente dichiarazione:
CALL mysql.cloudsql_update_audit_rule(1,'user@host','db','obj','ops','op_result',1,@outval,@outmsg);
SELECT @outval, @outmsg;
Ti consigliamo di aggiornare più regole di controllo in una sola sessione prima di ricaricare le regole. Puoi usare la stored procedure seguente per aggiornare le regole in una passaggio e poi ricarica queste regole in un passaggio successivo.
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);
Le seguenti tabelle mostrano i parametri di input e output per l'elemento .
Parametri di input | |||
---|---|---|---|
Nome | Tipo | Descrizione | Esempio |
rule_id |
int | L'ID della regola da aggiornare. | 5 |
user@host |
string |
L'elenco separato da virgole degli utenti del database da controllare. Utilizza il
formato utente@host. |
user1@localhost,user1@* user1@%
|
db |
string | L'elenco separato da virgole di database da controllare. | db1,db2,db3* |
obj |
string | L'elenco separato da virgole degli oggetti del database da controllare. | table1,table2,table3* |
ops |
string | L'elenco separato da virgole delle azioni del database da controllare. | SELECT,DELETE,INSERT |
op_result |
string | Controllo riuscito (S), non riuscito (U) o entrambi (B) riusciti e operazioni non riuscite. | S , U o B |
reload_mode |
Numero intero | 0 per non ricaricare la regola e 1 per la ricarica. |
0 o 1 |
Parametri di output | |||
---|---|---|---|
Nome | Tipo | Descrizione | Esempio |
@outval |
int | Il codice di stato della stored procedure. | 0 per le operazioni riuscite e 1 per le operazioni non riuscite. |
@outmsg |
string | Il messaggio di errore della stored procedure. |
Le regole di controllo presentano i seguenti limiti:
Limitazioni | |
---|---|
Durata: user , db , obj
e ops . |
Dimensioni massime: 2048 caratteri. |
Numero di combinazioni di user , db ,
obj e ops . |
Massimo 1000 combinazioni. Ad esempio, una regola di controllo che controlla user1,user2 , db1, db2 , table1,table2 e select,delete genera 2 x 2 x 2 x 2 = 16 combinazioni. |
Eliminare le regole di controllo
Puoi utilizzare mysql.cloudsql_delete_audit_rule
per eliminare
una regola di controllo esistente.
Per eliminare la regola di controllo e ricaricarla in una sola chiamata, utilizza la seguente dichiarazione:
CALL mysql.cloudsql_delete_audit_rule('1,2',1,@outval,@outmsg);
SELECT @outval, @outmsg;
Per eliminare la regola e ricaricarla in una chiamata separata, utilizza la seguente dichiarazione:
CALL mysql.cloudsql_delete_audit_rule('1,2',0,@outval,@outmsg);
SELECT @outval, @outmsg;
CALL cloudsql_reload_audit_rule(1);
Il comando precedente consente di eliminare più regole e quindi ricaricare tutte le modifiche contemporaneamente.
Le seguenti tabelle mostrano i parametri di input e di output per l'elemento .
Parametri di input | |||
---|---|---|---|
Nome | Tipo | Descrizione | Esempio |
rule_id |
string | L'elenco separato da virgole degli ID regola da rimuovere. | 1,2,3 |
reload_mode |
Numero intero | 0 per non ricaricare la regola e 1 per la ricarica. |
0 o 1 |
Parametri di output | |||
---|---|---|---|
Nome | Tipo | Descrizione | Esempio |
@outval |
int | Il codice di stato della stored procedure. | 0 per le operazioni riuscite e 1 per le operazioni non riuscite. |
@outmsg |
string | Il messaggio di errore della stored procedure. |
Gruppi di operazioni
Il plug-in di audit Cloud SQL per MySQL supporta l'utilizzo di gruppi di operazioni nelle definizioni delle regole per controllare raccolte di attività. Puoi utilizzare le seguenti opzioni gruppi operativi per semplificare la creazione delle regole di controllo.
Gruppi di operazioni | Operazioni incluse |
---|---|
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 |
Visualizza gli audit log del database Cloud SQL
Visualizzare i record degli audit log del database in Cloud Logging
Per visualizzare gli audit log del database, assicurati innanzitutto di aver abilitato gli audit log di accesso ai dati per il tuo progetto. Gli audit log MySQL generati per una determinata istanza vengono inviati a Cloud Logging come audit log di accesso ai dati. Puoi visualizzare gli audit log del database MySQL generati tramite l'applicazione Logs Explorer.
In Esplora log, puoi visualizzare gli audit log MySQL utilizzando la seguente query per mostra tutti gli audit log dei database MySQL per un determinato progetto Cloud SQL tramite la Interfaccia Filtro avanzato.
Sostituisci quanto segue:
- PROJECT_NAME: il nome del progetto per cui vuoi i log di controllo.
resource.type="cloudsql_database" logName="projects/PROJECT_NAME/logs/cloudaudit.googleapis.com%2Fdata_access" protoPayload.request.@type="type.googleapis.com/google.cloud.sql.audit.v1.MysqlAuditEntry"
In alternativa, puoi selezionare il log cloudaudit.googleapis.com/data_access filtro.
Formato audit log
Un log di controllo contiene i seguenti campi.
Nome campo | Descrizione | ||||||
---|---|---|---|---|---|---|---|
msgType |
Una stringa che rappresenta il tipo di messaggio dell'audit log.L'unico valore
per msgType è activity . |
||||||
status |
Stato dell'operazione: success o
unsuccessful . |
||||||
date |
Un timestamp che indica quando è stato generato l'evento di controllo. | ||||||
threadId |
L'ID del thread MySQL. | ||||||
queryId |
L'ID della query MySQL. | ||||||
user |
Una stringa che rappresenta il nome utente inviato dal client. Questo valore potrebbe essere diverso da quello di privUser. | ||||||
privUser |
Una stringa che rappresenta l'utente che il server ha autenticato il come il cliente. Questo è il nome utente utilizzato dal server per il privilegio controllare. Può essere diverso dal valore utente. | ||||||
gcpIamAccount |
Una stringa che rappresenta l'account IAM o l'account di servizio Google Cloud. | ||||||
ip |
Una stringa che rappresenta l'indirizzo IP del client. | ||||||
host |
Una stringa che rappresenta il nome host del client. | ||||||
errCode
|
Il codice di errore MySQL per un'operazione non riuscita. Consulta la sezione Riferimento ai messaggi di errore del server MySQL. | ||||||
cmd |
Una stringa che indica l'istruzione SQL (tipo di operazione) da utilizzare. Ad esempio, INSERT , UPDATE o
DELETE . |
||||||
objects |
Gli oggetti di controllo. Solitamente una tabella. Questo campo include le seguenti informazioni sull'oggetto:
|
||||||
query |
Un'istruzione SQL (eseguita direttamente). | ||||||
chunkCount |
Numero totale di blocchi se la dimensione della query dell'audit log è superiore a
cloudsql_mysql_audit_event_split_threshold
(90 mila). |
||||||
chunkIndex |
Indice del chunk. chunk_index inizia da 1. |
||||||
@type |
Il tipo è sempre type.googleapis.com/google.cloud.sql.audit.v1.MysqlAuditEntry . |
Di seguito è riportato un esempio di voce di audit log.
{
"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"
}
Disabilita il controllo dei database
Per disabilitare il plug-in di audit di Cloud SQL per MySQL, puoi impostare il flag di database cloudsql_mysql_audit su OFF o rimuovere il flag.
Console
-
Nella console Google Cloud, vai alla pagina Istanze Cloud SQL.
- Apri l'istanza e fai clic su Modifica.
- Scorri verso il basso fino alla sezione Flag.
- Per impostare un flag che non è stato impostato in precedenza sull'istanza, fai clic su
Aggiungi flag; scegli
cloudsql_mysql_audit
dal menu a discesa e imposta il valore suOFF
. - Fai clic su Salva per salvare le modifiche.
- Conferma le modifiche in Flag nella pagina Panoramica.
gcloud
Sostituisci quanto segue:
- INSTANCE_NAME: il nome dell'istanza su cui stai impostando il flag.
gcloud sql instances patch INSTANCE_NAME \ --database-flags cloudsql_mysql_audit=OFF
REST v1beta4
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- project-id: l'ID progetto
- instance-id: l'ID istanza
Metodo HTTP e URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id
Corpo JSON della richiesta:
{ "settings": { "databaseFlags": [ { "name": "cloudsql_mysql_audit", "value": "OFF" } ] } }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
REST v1
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- project-id: l'ID progetto
- instance-id: l'ID istanza
Metodo HTTP e URL:
PATCH https://sqladmin.googleapis.com/sql/v1/projects/project-id/instances/instance-id
Corpo JSON della richiesta:
{ "settings": { "databaseFlags": [ { "name": "cloudsql_mysql_audit", "value": "OFF" } ] } }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
Esempi di regole di audit
Controlla tutte le attività di tutti gli utenti:
CALL mysql.cloudsql_create_audit_rule('*','*','*','*','B',1,@outval,@outmsg);
Controlla tutte le attività di un singolo utente
user1
:CALL mysql.cloudsql_create_audit_rule('user1@*','*','*','*','B',1,@outval,@outmsg);
Controlla tutte le attività di tutti gli utenti che iniziano con
user
:CALL mysql.cloudsql_create_audit_rule('user*@*','*','*','*','B',1, @outval,@outmsg);
Controlla tutte le operazioni DML per tutti gli utenti:
CALL mysql.cloudsql_create_audit_rule('*','*','*','dml','B',1,@outval,@outmsg);
Controlla l'operazione di selezione per un database speciale
db1
:CALL mysql.cloudsql_create_audit_rule('*','db1','*','select','B',1,@outval,@outmsg);
Controlla tutte le attività per un database con il carattere speciale
db~1
:CALL mysql.cloudsql_create_audit_rule('*','`db~1`','*','*','B',1,@outval,@outmsg);
Controlla le operazioni di selezione ed eliminazione per la tabella
db1.table1
:CALL mysql.cloudsql_create_audit_rule('*','db1','table1','select,delete','B',1,@outval,@outmsg);
Controlla tutte le operazioni riuscite:
CALL mysql.cloudsql_create_audit_rule('*','*','*','*','S',1,@outval,@outmsg);
Non controllare tutte le attività di tutti gli utenti che iniziano con
user
:CALL mysql.cloudsql_create_audit_rule('user*@*','*','*','*','E',1, @outval,@outmsg);
Risoluzione dei problemi
Problema | Risoluzione dei problemi |
---|---|
Non riesco a vedere cloudsql_mysql_audit quando chiamo il
:
SHOW (global) variables
|
cloudsql_mysql_audit è il nome del plug-in. Per verificare se è attivo, utilizza il seguente comando:
SHOW PLUGINS Controlla la voce status .
|
Perché non riesco a vedere gli audit log di MySQL dopo l'abilitazione
cloudsql_mysql_audit ? |
Devi attivare gli audit log di accesso ai dati (come descritto in
Configurare gli audit log di accesso ai dati. Inoltre, le regole di controllo sono necessarie per consentire al plug-in di audit Cloud SQL per MySQL di controllare i log di controllo desiderati. Utilizza le funzionalità di
stored procedure con "reload_mode=1" per creare regole di controllo, oppure
esegui questo comando o riavvia il database per
le regole di controllo appena aggiunte funzionano:
CALL mysql.cloudsql_reload_audit_rule(1) |
Durante l'aggiornamento del flag di database viene visualizzato il seguente errore:
Errore 1193: variabile di sistema sconosciuta 'cloudsql_mysql_audit_xxx' |
I flag cloudsql_mysql_audit_xxx funzionano solo quando il plug-in di controllo è attivo. Rimuovi eventuali account esistenti
cloudsql_mysql_audit_xxx flag dall'istanza e
attivare il plug-in utilizzando il seguente comando
aggiornamento di cloudsql_mysql_audit_xxx flag:
cloudsql_mysql_audit=ON |
Vedo gli audit log generati anche se non ne ho impostato nessuno e regole di audit. | Per impostazione predefinita, vengono registrate le modifiche alle tabelle delle regole di controllo (mysql.audit_log_rules
e mysql.audit_log_rules_expanded ) e alle procedure di controllo archiviate (mysql.cloudsql_xxxx_audit_rule ). |
Dopo aver apportato modifiche all'istanza principale, non riesco a vedere i log di controllo nelle istanze di replica. | I thread di replica e di recupero in caso di arresto anomalo non vengono registrati. Cloud SQL controlla le attività sull'istanza principale, ma non sulla l'istanza di replica. |
Ho provato a utilizzare il seguente comando per impostare i valori da un
elenco separato da virgole, ma non funziona.
gcloud instances patch --database-flags
|
Se specifichi un elenco separato da virgole di valori di flag utilizzando
gcloud , usa i comandi --flags-file
. Innanzitutto, devi creare un file con quanto segue:
informazioni:
--database-flags: general_log: OFF cloudsql_mysql_audit_max_query_length: '20' cloudsql_mysql_audit_data_masking_cmds: select,update Quindi esegui il seguente comando: gcloud sql instances patch --flags-file=flagfile |
Il seguente comando restituisce un errore:
CALL mysql.cloudsql_create_canonical_rules
|
È intenzionale. mysql.cloudsql_create_canonical_rules
deve essere chiamato solo internamente da
mysql.cloudsql_create_audit_rule e
mysql.cloudsql_update_audit_rule . |
Quali operazioni posso controllare? |
Le operazioni supportate sono elencate nell'elenco completo delle operazioni supportate. Alcune operazioni, come quelle riportate di seguito,
non vengono sottoposte a controllo perché non influiscono sul database:
USE db_name o SHOW VARIABLES Inoltre, in alcuni casi, le funzioni non possono essere controllate come oggetto (funzionalità non supportate). |
Voglio controllare tutte le operazioni su una tabella specifica, quindi ho creato
la seguente regola di controllo:
mysql.cloudsql_create_audit_rule("user@*","db",
"table","*","B",1,@1,@2);
Tuttavia, riesco a vedere audit log non correlati a questa tabella, come disconnect e connect .
|
Alcune operazioni, come la disconnessione o la connessione, sono considerate
globale. Ignorano i campi di input db e
object . |
Quando creo, aggiornno o elimino una regola di controllo utilizzando le procedure memorizzate, viene visualizzato il seguente errore.
Il server MySQL è in esecuzione con l'opzione read-only
, pertanto non può eseguire questa istruzione.
|
Cloud SQL non può modificare le stored procedure in un'istanza di sola lettura. Se l'istanza è principale, rimuovi
read_only flag. Se l'istanza è una replica
di modificare l'istanza principale. Dopo il
delle regole vengono replicate nell'istanza di replica,
dell'istanza di replica, esegui questo comando per ricaricare
nella replica:
CALL mysql.cloudsql_reload_audit_rule(1) |
Quando creo, aggiornno o elimino una regola di controllo, viene visualizzato
il seguente errore, anche se la modifica è andata a buon fine.
0 rows affected
|
La risposta 0 rows affected si riferisce all'ultimo
statement eseguito nella procedura memorizzata, non alle tabelle. Per verificare se la regola di controllo è stata modificata, utilizza il seguente comando:
mysql.cloudsql_list_audit_rule |
Non riesco a impostare cloudsql_mysql_audit_data_masking_cmds
e cloudsql_mysql_audit_data_masking_regexp con
gcloud . |
gcloud richiede l'utilizzo dell'argomento --flags-file per impostare valori di flag complessi (i flag che includono caratteri speciali). |
Ho creato una stored procedure utilizzando CREATE USER
ma la password non è mascherata. |
Per impostazione predefinita, il mascheramento funziona solo per cmds
(operazioni), ad esempio:
CREATE_USER ALTER_USER
GRANT e UPDATE .
Per filtrare la password durante la creazione della procedura memorizzata, aggiungi create_procedure al
cloudsql_mysql_audit_data_masking_cmds .
|
Ho ricevuto un errore di timeout di attesa blocco superato durante il tentativo di creazione. aggiornare o eliminare le regole di controllo. | In genere, questo errore si verifica quando due o più sessioni tentano di
modificare contemporaneamente le regole di controllo. Se si verifica spesso,
aumenta il valore della variabile innodb_lock_wait_timeout . Può essere aumentato a livello globale (utilizzando il flag del database).
o solo per la sessione, ad esempio utilizzando il seguente comando:
SET innodb_lock_wait_timeout=120 |
Passaggi successivi
- Scopri di più sul controllo dei database MySQL.
- Consulta l'elenco completo delle operazioni per il controllo del database.