Usa il controllo dei database MySQL

Questo argomento descrive come attivare e utilizzare il plug-in di audit 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

Abilitare e configurare 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 di nome user, per gestire regole di controllo, può concedere i privilegi utilizzando la seguente istruzione:

CREATE USER 'user'@'%' IDENTIFIED BY 'password';
GRANT EXECUTE ON PROCEDURE mysql.cloudsql_list_audit_rule TO 'user'@'%';

Se in seguito l'amministratore volesse revocare l'accesso al revisore, potrebbe revoca i privilegi utilizzando la seguente istruzione:

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. Database IAM e gli utenti, per impostazione predefinita, non hanno 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 il plug-in non riesce a vengono inizializzati, il server viene eseguito con il plug-in disabilitato.

  • --cloudsql_mysql_audit=FORCE

    Indica al server di abilitare il plug-in, ma se il plug-in viene inizializzato un errore, 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 DISINSTALLARE IL PLUGIN si verifica un errore.

Gli stati di attivazione del plug-in sono visibili nella colonna PLUGIN_STATUS del file INFORMATION_SCHEMA.PLUGINS .

Console

  1. Nella console Google Cloud, vai alla pagina Istanze Cloud SQL.

    Vai a Istanze Cloud SQL

  2. Apri l'istanza e fai clic su Modifica.
  3. Scorri verso il basso fino alla sezione Flag.
  4. 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 su ON.
  5. Fai clic su Salva per salvare le modifiche.
  6. Conferma le modifiche nella sezione Flag della pagina Panoramica.

gcloud

Sostituisci quanto segue:

  • INSTANCE_NAME: il nome dell'istanza che stai impostando la bandiera.
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 prendono un valore, specifica il nome del flag seguito da un Simbolo di uguale (=).

REST v1beta4

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/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 delle seguenti 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 delle seguenti 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, vedi 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 si utilizza gcloud devi utilizzare un file di flag per impostare valori con complessi caratteri speciali.

    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 utilizzati dall'espressione regolare di mascheramento dei dati (cloudsql_mysql_audit_data_masking_regex) a cui viene applicata. Imposta un campo vuoto ("") per interrompere il filtro. Quando usi gcloud, 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 nell'audit log. Se non hanno bisogno di vedere i dettagli della query, puoi usare 0, Ciò significa che la query non viene registrata nell'audit log. In questo modo viene risparmiato spazio di archiviazione per il log, con un conseguente calo dei costi. -1 significa che no 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 a 0, il thread dell'utente deve attendere una notifica dal thread dell'autore che la scrittura è stata completata. L'impostazione predefinita è 500 (millisecondi).

Console

  1. Nella console Google Cloud, vai alla pagina Istanze Cloud SQL.

    Vai a Istanze Cloud SQL

  2. Apri l'istanza e fai clic su Modifica.
  3. Scorri verso il basso fino alla sezione Flag.
  4. 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.
  5. Fai clic su Salva per salvare le modifiche.
  6. Conferma le modifiche nella sezione Flag della 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, effettua 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 delle seguenti 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 delle seguenti opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

Configura il controllo dei database

Gestisci regole di controllo

Cloud SQL utilizza un set di stored procedure per gestire l'audit di Cloud SQL per MySQL Regole di controllo dei plug-in. Esistono quattro stored procedure che puoi utilizzare per creare: elencare, aggiornare ed eliminare le regole di controllo.

Ogni stored procedure 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, o entrambi. Inoltre, puoi utilizzare il carattere jolly % solo per . Puoi utilizzare l'accento grave (`) per indicare che una stringa deve essere utilizzato letteralmente. Ad esempio, `ta*ble` corrisponde a letteralmente.

Per applicare le nuove modifiche, devi eseguire le stored procedure con il parametro di input reload_mode=1 o richiama mysql.cloudsql_reload_audit_rule(1) per applicare le nuove modifiche.

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 la 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 di oggetti di 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 ricaricarlo. 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 hanno le seguenti limitazioni:

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, il controllo di una regola user1,user2, db1, db2, table1,table2 e select,delete genera 2 x 2 x 2 x 2 = 16 combinazioni.

Elenca regole di controllo

I revisori possono utilizzare mysql.cloudsql_list_audit_rule per elencare i controlli esistenti le regole del caso.

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 seguenti tabelle mostrano i parametri di input e output per l'elemento .

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 un modello esistente regola di controllo.

Per aggiornare la regola di controllo e ricaricarla in una chiamata, utilizza la seguente istruzione:

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 di utenti del database da controllare. Utilizza la 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 di oggetti di 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 ricaricarlo. 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 hanno le seguenti limitazioni:

Limitazioni
Durata: user, db, obj e ops. Dimensione massima 2048 caratteri.
Numero di combinazioni di user, db, obj e ops. Massimo 1000 combinazioni. Ad esempio, il controllo di una regola user1,user2, db1, db2, table1,table2 e select,delete genera 2 x 2 x 2 x 2 = 16 combinazioni.

Elimina 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 chiamata, utilizza la seguente istruzione:

CALL mysql.cloudsql_delete_audit_rule('1,2',1,@outval,@outmsg);
SELECT @outval, @outmsg;

Per eliminare la regola e ricaricarla in un'altra chiamata, utilizza il seguente codice :

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 output per l'elemento .

Parametri di input
Nome Tipo Descrizione Esempio
rule_id string L'elenco separato da virgole di ID regola da rimuovere. 1,2,3
reload_mode Numero intero 0 per non ricaricare la regola e 1 per ricaricarlo. 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 di Cloud SQL per MySQL supporta l'utilizzo di gruppi di operazioni nella regola definizioni 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

Visualizza i record degli audit log del database in Cloud Logging

Per visualizzare gli audit log del database, assicurati innanzitutto di avere Dati abilitati Accedi agli audit log per il tuo progetto. Gli audit log MySQL generati per un determinato vengono inviate a Cloud Logging come Audit log degli accessi ai dati. Puoi visualizzare gli audit log del database MySQL generati tramite il Esplora log.

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 il quale vuoi ricevere gli audit log.
    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 può essere diverso dal valore 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 o il servizio IAM di 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 le Riferimento ai messaggi di errore del server MySQL.
cmd Una stringa che indica l'istruzione SQL (tipo di operazione) per per gli utilizzi odierni. Ad esempio, INSERT, UPDATE o DELETE.
objects Gli oggetti di controllo. Solitamente una tabella. Questo campo include il parametro seguenti informazioni sull'oggetto:

db Una stringa che rappresenta il database predefinito .
name Una stringa che rappresenta il nome dell'oggetto. Normalmente il nome della tabella.
objType Una stringa che rappresenta il tipo di oggetto. Normalmente TABLE.
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 blocco. 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

  1. Nella console Google Cloud, vai alla pagina Istanze Cloud SQL.

    Vai a Istanze Cloud SQL

  2. Apri l'istanza e fai clic su Modifica.
  3. Scorri verso il basso fino alla sezione Flag.
  4. 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 su OFF.
  5. Fai clic su Salva per salvare le modifiche.
  6. Conferma le modifiche nella sezione Flag della Panoramica. .

gcloud

Sostituisci quanto segue:

  • INSTANCE_NAME: il nome dell'istanza che stai impostando la bandiera.

    gcloud sql instances patch INSTANCE_NAME \
               --database-flags cloudsql_mysql_audit=OFF
    

REST v1beta4

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/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 delle seguenti 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 delle seguenti opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

Esempi di regole di audit

  1. Controlla tutte le attività di tutti gli utenti:

    CALL mysql.cloudsql_create_audit_rule('*','*','*','*','B',1,@outval,@outmsg);
    
  2. Controlla tutte le attività per un singolo utente user1:

    CALL mysql.cloudsql_create_audit_rule('user1@*','*','*','*','B',1,@outval,@outmsg);
    
  3. Controlla tutte le attività di tutti gli utenti che iniziano con user:

    CALL mysql.cloudsql_create_audit_rule('user*@*','*','*','*','B',1, @outval,@outmsg);
    
  4. Controlla tutte le operazioni DML per tutti gli utenti:

    CALL mysql.cloudsql_create_audit_rule('*','*','*','dml','B',1,@outval,@outmsg);
    
  5. Controlla l'operazione di selezione per un database speciale db1:

    CALL mysql.cloudsql_create_audit_rule('*','db1','*','select','B',1,@outval,@outmsg);
    
  6. Controlla tutte le attività per verificare se è presente un database con il carattere speciale db~1:

    CALL mysql.cloudsql_create_audit_rule('*','`db~1`','*','*','B',1,@outval,@outmsg);
    
  7. 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);
    
  8. Controlla tutte le operazioni riuscite:

    CALL mysql.cloudsql_create_audit_rule('*','*','*','*','S',1,@outval,@outmsg);
    
  9. 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. A verifica che sia attivo, utilizza questo comando:

SHOW PLUGINS

E controlla la voce status.
Perché non riesco a vedere gli audit log di MySQL dopo l'abilitazione cloudsql_mysql_audit? Devi abilitare gli audit log di accesso ai dati (come descritto in Configura i dati Accedere agli audit log. Inoltre, sono necessarie regole di controllo Plug-in di audit di Cloud SQL per MySQL per controllare gli audit log 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 se Il plug-in di audit è 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. Modifiche alle tabelle delle regole di controllo (mysql.audit_log_rules e mysql.audit_log_rules_expanded) e i controlli archiviati (mysql.cloudsql_xxxx_audit_rule) vengono registrate per impostazione predefinita.
Dopo aver apportato modifiche all'istanza principale, non riesco a vedere e gli audit log sulle istanze di replica. I thread di replica e i thread per il ripristino 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 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

Poi esegui questo 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 mysql.cloudsql_create_audit_rule e mysql.cloudsql_update_audit_rule.
Quali operazioni posso controllare? Le operazioni supportate sono elencate nel Elenco completo di e le operazioni supportate. Alcune operazioni, come la seguente, non vengono controllati perché non interessano il database:

USE db_name


o

SHOW VARIABLES


Inoltre, in alcuni casi, le funzioni non possono essere controllate come un oggetto (funzionalità non supportate).
Voglio controllare tutte le operazioni su una tabella specifica, quindi ho creato la seguente regola di audit:

mysql.cloudsql_create_audit_rule("user@*","db", "table","*","B",1,@1,@2);
Tuttavia, vedo gli audit log non correlati a questa tabella, come disconnect e connect.
Alcune operazioni, come la disconnessione o la connessione, sono considerate globale. Ignorano l'input db e object campi.
Quando creo, aggiorno o elimino una regola di controllo utilizzando procedure, viene visualizzato il seguente errore.

Il server MySQL è in esecuzione con read-only in modo che non possa eseguire questa istruzione.
Cloud SQL non può modificare le stored procedure in un ambiente di sola lettura in esecuzione in un'istanza Compute Engine. 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, aggiorno o elimino una regola di controllo, vedo il seguente errore, anche se la modifica è riuscita.

0 rows affected
La risposta 0 rows affected è per l'ultimo eseguita nella stored procedure, non nelle tabelle. A per vedere se la regola di audit è 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 di --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 stored procedure, 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. Normalmente, questo errore si verifica quando due o più sessioni tentano di modificare contemporaneamente le regole di controllo. Se succede spesso, aumenta il valore dell'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