Este tópico descreve como habilitar e usar o plugin de auditoria do Cloud SQL para MySQL. Para uma visão geral, consulte Auditoria de banco de dados MySQL . Para obter mais informações sobre plugins do MySQL, consulte Carregamento de plugins do MySQL .
Antes de começar
Registros de auditoria de acesso a dados
Habilite e configure logs de auditoria de acesso a dados. Consulte Configurar logs de auditoria de acesso a dados .
Privilégios necessários para usuários de auditoria
Você precisa ter privilégios EXECUTE
nos procedimentos armazenados de auditoria para executá-los. Se um administrador precisar alterar os privilégios de acesso de um auditor aos procedimentos armazenados de auditoria, ele deverá usar o comando GRANT
ou REVOKE
no cliente mysql
. Para obter detalhes sobre os privilégios de usuário, consulte Privilégios de usuário do MySQL . Por exemplo, se um administrador quisesse conceder acesso a um auditor chamado user
para gerenciar as regras de auditoria, ele poderia conceder os privilégios usando a seguinte instrução:
CREATE USER 'user'@'%' IDENTIFIED BY 'password'; GRANT EXECUTE ON PROCEDURE mysql.cloudsql_list_audit_rule TO 'user'@'%';
Se esse administrador posteriormente quisesse revogar o acesso ao auditor, ele poderia revogar os privilégios usando a seguinte instrução:
REVOKE ALL ON PROCEDURE mysql.cloudql_list_audit_rule FROM 'user'@'%';
Por padrão, os usuários criados com o Cloud SQL (exceto usuários do IAM) são administradores que têm todos os privilégios, exceto FILE
e SUPER
, incluindo todos os privilégios para os procedimentos armazenados de auditoria. Usuários do banco de dados do IAM, por padrão, não têm privilégios.
Habilitar o plugin de auditoria do Cloud SQL para MySQL
O plugin de auditoria do Cloud SQL para MySQL ( cloudsql_mysql_audit
) controla o comportamento de auditoria de uma determinada instância de banco de dados. Para usar o plugin, você precisa primeiro habilitá-lo na instância do Cloud SQL.
Para habilitar o plugin cloudsql_mysql_audit
, use uma das seguintes opções:
-
--cloudsql_mysql_audit=ON
Informa ao servidor para habilitar o plugin. Se o plugin não inicializar, o servidor será executado com o plugin desabilitado.
-
--cloudsql_mysql_audit=FORCE
Informa ao servidor para habilitar o plugin, mas se a inicialização do plugin falhar, o servidor não inicia. Em outras palavras, esta opção força o servidor a executar com o plugin habilitado ou não executar.
-
--cloudsql_mysql_audit=FORCE_PLUS_PERMANENT
Semelhante ao FORCE, mas também impede que o plugin seja descarregado em tempo de execução. Se um usuário tentar descarregar o plugin com UNINSTALL PLUGIN , ocorrerá um erro.
Os estados de ativação do plugin são visíveis na coluna PLUGIN_STATUS
da tabela INFORMATION_SCHEMA.PLUGINS .
Console
No Google Cloud console, acesse a página Instâncias do Cloud SQL .
- Abra a instância e clique em Editar .
- Role para baixo até a seção Bandeiras .
- Para definir um sinalizador que não foi definido na instância antes, clique em Adicionar sinalizador , escolha
cloudsql_mysql_audit
no menu suspenso e defina seu valor comoON
. - Clique em Salvar para salvar suas alterações.
- Confirme suas alterações em Sinalizadores na página Visão geral .
gcloud
Substitua o seguinte:
- INSTANCE_NAME : O nome da instância na qual você está definindo o sinalizador.
gcloud sql instances patch INSTANCE_NAME \ --database-flags cloudsql_mysql_audit=ON
Este comando substitui todos os sinalizadores do banco de dados definidos anteriormente. Para mantê-los e adicionar novos, inclua os valores de todos os sinalizadores que deseja definir na instância; qualquer sinalizador não incluído especificamente é definido com seu valor padrão. Para sinalizadores que não aceitam um valor, especifique o nome do sinalizador seguido por um sinal de igual ( =
).
REST v1beta4
Antes de usar qualquer um dos dados solicitados, faça as seguintes substituições:
- project-id : O ID do projeto
- instance-id : O ID da instância
Método HTTP e URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id
Corpo JSON da solicitação:
{ "settings": { "databaseFlags": [ { "name": "cloudsql_mysql_audit", "value": "ON" } ] } }
Para enviar sua solicitação, expanda uma destas opções:
Você deve receber uma resposta JSON semelhante à seguinte:
REST v1
Antes de usar qualquer um dos dados solicitados, faça as seguintes substituições:
- project-id : O ID do projeto
- instance-id : O ID da instância
Método HTTP e URL:
PATCH https://sqladmin.googleapis.com/sql/v1/projects/project-id/instances/instance-id
Corpo JSON da solicitação:
{ "settings": { "databaseFlags": [ { "name": "cloudsql_mysql_audit", "value": "ON" } ] } }
Para enviar sua solicitação, expanda uma destas opções:
Você deve receber uma resposta JSON semelhante à seguinte:
Configurações do plugin de auditoria do Cloud SQL para MySQL
Você pode ajustar o comportamento do plugin de auditoria do Cloud SQL para MySQL usando os sinalizadores abaixo. Todos os sinalizadores podem ser alterados sem reiniciar o banco de dados. Para entender como gerenciar os sinalizadores, consulte Configurando sinalizadores de banco de dados .
cloudsql_mysql_audit_data_masking_regex
Uma expressão regular usada para mascaramento de dados que é compatível com Perl Compatible Regular Expressions (PCREs).
Por padrão, no log de auditoria de saída, as senhas do usuário (
<psw>
) são substituídas por uma máscara de senha***
.A expressão regular é aplicada apenas a instruções com um tipo de comando especificado usando
cloudsql_mysql_audit_data_masking_cmds
. Ao usargcloud
você deve usar um arquivo de sinalizadores para definir valores com caracteres especiais complexos.Valores padrão para este sinalizador:
identified(?:/\*.*?\*/|\s)*?by(?:/\*.*?\*/|\s)*?(?:password)?(?:/\*.*?\*/| \s)*?['|"](?<psw>.*?)(?<!\\)['|"]|password(?:/\*.*?\*/|\s)*?\((?:/\*.*?\*/| \s)*?['|"](?<psw>.*?)(?<!\\)['|"](?:/\*.*?\*/|\s)*?\)|password(?:/\*.*?\*/| \s)*?(?:for(?:/\*.*?\*/|\s)*?\S+?)?(?:/\*.*?\*/|\s)*?=(?:/\*.*?\*/|\s)*?[ '|"](?<psw>.*?)(?<!\\)['|"]|password(?:/\*.*?\*/|\s)*?['|"](?<psw>.*?) (?<!\\)['|"]
Veja os exemplos a seguir.
Sem o
cloudsql_mysql_audit_data_masking_regex
, uma entrada de log de auditoria descrevendo um comando de criação de usuário seria exibida da seguinte maneira:{..."cmd":"create_user","query":"create user user1@'localhost' identified by 'pw'"}
Com o valor padrão de
cloudsql_mysql_audit_data_masking_regex
, o mesmo log de auditoria seria alterado para:{..."cmd":"create_user","query":"create user user1@'localhost' identified by '***'"}
Se você definir
cloudsql_mysql_audit_data_masking_regex
como(?<psw>.*)
, o Cloud SQL poderá filtrar todo o conteúdo da consulta.{..."cmd":"create_user","query":"***"}
cloudsql_mysql_audit_data_masking_cmds
Lista de comandos separados por vírgulas aos quais a expressão regular de mascaramento de dados ( cloudsql_mysql_audit_data_masking_regex ) é aplicada. Defina uma string vazia (
""
) para interromper a filtragem. Ao usargcloud
, você deve usar um arquivo de sinalizadores para definir uma lista separada por vírgulas. O valor padrão inclui comandos MySQL com a seguinte cláusula de senha:create_user,alter_user,grant,update
cloudsql_mysql_audit_max_query_length
Controla o comprimento máximo da consulta a ser registrada no log de auditoria. Se você não precisar ver os detalhes da consulta, pode usar
0
, o que significa que a consulta não será registrada no log de auditoria. Isso economiza espaço de armazenamento para o log, resultando em menor custo.-1
significa sem limitação. O padrão é-1
.cloudsql_mysql_audit_log_write_period
O período de gravação do log, durante o qual a thread de gravação grava o conteúdo do buffer no disco após atingir o número de milissegundos definido para esta opção de sinalização, ou quando o buffer estiver cheio. Se você definir esta opção de sinalização como
0
, a thread do usuário será forçada a aguardar uma notificação da thread de gravação informando que a gravação foi concluída. O padrão é500
(milissegundos).
Console
No Google Cloud console, acesse a página Instâncias do Cloud SQL .
- Abra a instância e clique em Editar .
- Role para baixo até a seção Bandeiras .
- Para definir um sinalizador que não foi definido na instância antes, clique em Adicionar sinalizador , escolha um sinalizador de banco de dados na lista acima no menu suspenso e defina seu valor.
- Clique em Salvar para salvar suas alterações.
- Confirme suas alterações em Sinalizadores na página Visão geral .
gcloud
Substitua o seguinte:
- INSTANCE_NAME : O nome da instância na qual você está definindo o sinalizador.
- FLAG_NAME : O nome do sinalizador de configuração.
- FLAG_VALUE : O valor a ser usado para o sinalizador.
gcloud sql instances patch INSTANCE_NAME / --database-flags FLAG_NAME=FLAG_VALUE
REST v1beta4
Antes de usar qualquer um dos dados solicitados, faça as seguintes substituições:
- project-id : O ID do projeto
- instance-id : O ID da instância
Método HTTP e URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id
Corpo JSON da solicitação:
{ "settings": { "databaseFlags": [ { "name": "flag_name", "value": "flag_value" } ] } }
Para enviar sua solicitação, expanda uma destas opções:
Você deve receber uma resposta JSON semelhante à seguinte:
REST v1
Antes de usar qualquer um dos dados solicitados, faça as seguintes substituições:
- project-id : O ID do projeto
- instance-id : O ID da instância
Método HTTP e URL:
PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id
Corpo JSON da solicitação:
{ "settings": { "databaseFlags": [ { "name": "flag_name", "value": "flag_value" } ] } }
Para enviar sua solicitação, expanda uma destas opções:
Você deve receber uma resposta JSON semelhante à seguinte:
Configurar auditoria de banco de dados
Gerenciar regras de auditoria
O Cloud SQL usa um conjunto de procedimentos armazenados para gerenciar as regras de auditoria do Cloud SQL para MySQL Audit Plugin. Há quatro procedimentos armazenados que você pode usar para criar, listar, atualizar e excluir regras de auditoria.
Cada procedimento armazenado retorna duas variáveis: @outval
e @outmsg
. Essas variáveis indicam o código de status e a mensagem de erro do procedimento armazenado, respectivamente. Você pode usar um asterisco ( *
) como curinga para pesquisar nomes de usuário, host, banco de dados e tabela. Use o asterisco como sufixo, prefixo ou ambos. Além disso, você pode usar o caractere curinga %
apenas para hosts. Você pode usar o acento grave ( `
) para indicar que uma string deve ser usada literalmente. Por exemplo, `ta*ble`
corresponde literalmente.
Para que as novas alterações entrem em vigor, você deve executar os procedimentos armazenados com o parâmetro de entrada reload_mode=1
ou chamar mysql.cloudsql_reload_audit_rule(1)
para que as novas alterações entrem em vigor.
Criar regras de auditoria
Você pode usar mysql.cloudsql_create_audit_rule
para criar uma nova regra de auditoria.
Para criar a regra de auditoria e recarregá-la em uma chamada, use a seguinte instrução:
CALL mysql.cloudsql_create_audit_rule('user@host','db','obj','ops','op_result',1, @outval,@outmsg);
SELECT @outval, @outmsg;
Para criar a regra e recarregá-la em uma chamada separada, use a seguinte instrução:
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);
O comando anterior permite que você crie várias regras e recarregue todas as alterações ao mesmo tempo.
As tabelas a seguir mostram os parâmetros de entrada e saída do comando anterior.
Parâmetros de entrada | |||
---|---|---|---|
Nome | Tipo | Descrição | Exemplo |
user@host ou user@ip | corda | Lista separada por vírgulas de usuários do banco de dados a serem auditados. Use o formato user@host ou user@ip . | user1@localhost ,user1@* ,user1@% ,user@ip |
db | corda | A lista separada por vírgulas de bancos de dados a serem auditados. | db1,db2,db3* |
obj | corda | A lista separada por vírgulas de objetos de banco de dados a serem auditados. | table1,table2,table3* |
ops | corda | A lista separada por vírgulas de ações do banco de dados a serem auditadas. | select,delete,insert |
op_result | corda | Auditoria bem-sucedida (S), malsucedida (U) ou ambas (B) operações bem-sucedidas e malsucedidas. | S , U ou B |
reload_mode | Inteiro | 0 para não recarregar a regra e 1 para recarregar. | 0 ou 1 |
Parâmetros de saída | |||
---|---|---|---|
Nome | Tipo | Descrição | Exemplo |
@outval | int | O código de status do procedimento armazenado. | 0 para sucesso e 1 para fracasso. |
@outmsg | corda | A mensagem de erro do procedimento armazenado. |
As regras de auditoria têm as seguintes limitações:
Limitações | |
---|---|
Comprimento de user , db , obj e ops . | O tamanho máximo é 2048 caracteres. |
Número de combinações de user , db , obj e ops . | Máximo de 1.000 combinações. Por exemplo, uma regra de auditoria que audita user1,user2 , db1, db2 , table1,table2 e select,delete gera 2 x 2 x 2 x 2 = 16 combinações. |
Listar regras de auditoria
Os auditores podem usar mysql.cloudsql_list_audit_rule
para listar regras de auditoria existentes.
Para listar as regras de auditoria 1 e 2, use os seguintes comandos:
CALL mysql.cloudsql_list_audit_rule('1,2',@outval,@outmsg);
SELECT @outval, @outmsg;
Para listar todas as regras de auditoria, faça o seguinte:
CALL mysql.cloudsql_list_audit_rule('*',@outval,@outmsg);
SELECT @outval, @outmsg;
As tabelas a seguir mostram os parâmetros de entrada e saída do comando anterior.
Parâmetros de entrada | |||
---|---|---|---|
Nome | Tipo | Descrição | Exemplo |
rule_id | corda | A lista separada por vírgulas de IDs de regras a serem removidas. | 1,2,3 |
Parâmetros de saída | |||
---|---|---|---|
Nome | Tipo | Descrição | Exemplo |
@outval | int | O código de status do procedimento armazenado. | 0 para sucesso e 1 para fracasso. |
@outmsg | corda | A mensagem de erro do procedimento armazenado. |
Atualizar regras de auditoria
Você pode usar mysql.cloudsql_update_audit_rule
para atualizar uma regra de auditoria existente.
Para atualizar a regra de auditoria e recarregá-la em uma chamada, use a seguinte instrução:
CALL mysql.cloudsql_update_audit_rule(1,'user@host','db','obj','ops','op_result',1,@outval,@outmsg);
SELECT @outval, @outmsg;
Talvez você queira atualizar várias regras de auditoria em uma sessão antes de recarregá-las. Você pode usar o seguinte procedimento armazenado para atualizar as regras em uma etapa e recarregá-las em uma etapa posterior.
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);
As tabelas a seguir mostram os parâmetros de entrada e saída do comando anterior.
Parâmetros de entrada | |||
---|---|---|---|
Nome | Tipo | Descrição | Exemplo |
rule_id | int | O ID da regra a ser atualizada. | 5 |
user@host | corda | Lista separada por vírgulas de usuários do banco de dados a serem auditados. Use o formato usuário@host. | user1@localhost,user1@* user1@% |
db | corda | A lista separada por vírgulas de bancos de dados a serem auditados. | db1,db2,db3* |
obj | corda | A lista separada por vírgulas de objetos de banco de dados a serem auditados. | table1,table2,table3* |
ops | corda | A lista separada por vírgulas de ações do banco de dados a serem auditadas. | SELECT,DELETE,INSERT |
op_result | corda | Sucesso de auditoria (S), malsucedido (U) ou ambos (B) operações bem-sucedidas e malsucedidas. | S , U ou B |
reload_mode | Inteiro | 0 para não recarregar a regra e 1 para recarregar. | 0 ou 1 |
Parâmetros de saída | |||
---|---|---|---|
Nome | Tipo | Descrição | Exemplo |
@outval | int | O código de status do procedimento armazenado. | 0 para sucesso e 1 para fracasso. |
@outmsg | corda | A mensagem de erro do procedimento armazenado. |
As regras de auditoria têm as seguintes limitações:
Limitações | |
---|---|
Comprimento de user , db , obj e ops . | Tamanho máximo 2048 caracteres. |
Número de combinações de user , db , obj e ops . | Máximo de 1.000 combinações. Por exemplo, uma regra de auditoria que audita user1,user2 , db1, db2 , table1,table2 e select,delete gera 2 x 2 x 2 x 2 = 16 combinações. |
Excluir regras de auditoria
Você pode usar mysql.cloudsql_delete_audit_rule
para excluir uma regra de auditoria existente.
Para excluir a regra de auditoria e recarregá-la em uma chamada, use a seguinte instrução:
CALL mysql.cloudsql_delete_audit_rule('1,2',1,@outval,@outmsg);
SELECT @outval, @outmsg;
Para excluir a regra e recarregá-la em uma chamada separada, use a seguinte instrução:
CALL mysql.cloudsql_delete_audit_rule('1,2',0,@outval,@outmsg);
SELECT @outval, @outmsg;
CALL cloudsql_reload_audit_rule(1);
O comando anterior permite que você exclua várias regras e recarregue todas as alterações ao mesmo tempo.
As tabelas a seguir mostram os parâmetros de entrada e saída do comando anterior.
Parâmetros de entrada | |||
---|---|---|---|
Nome | Tipo | Descrição | Exemplo |
rule_id | corda | A lista separada por vírgulas de IDs de regras a serem removidas. | 1,2,3 |
reload_mode | Inteiro | 0 para não recarregar a regra e 1 para recarregar. | 0 ou 1 |
Parâmetros de saída | |||
---|---|---|---|
Nome | Tipo | Descrição | Exemplo |
@outval | int | O código de status do procedimento armazenado. | 0 para sucesso e 1 para fracasso. |
@outmsg | corda | A mensagem de erro do procedimento armazenado. |
Grupos de operação
O plugin de auditoria do Cloud SQL para MySQL oferece suporte ao uso de grupos de operações em definições de regras para auditar coleções de atividades. Você pode usar os seguintes grupos de operações para simplificar a criação de regras de auditoria.
Grupos de operação | Operações incluídas |
---|---|
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 |
Exibir logs de auditoria do banco de dados Cloud SQL
Visualizar registros de log de auditoria de banco de dados no Cloud Logging
Para visualizar os logs de auditoria do banco de dados, primeiro certifique-se de ter habilitado os logs de auditoria de acesso a dados para o seu projeto. Os logs de auditoria do MySQL gerados para uma determinada instância são enviados ao Cloud Logging como logs de auditoria de acesso a dados . Você pode visualizar os logs de auditoria do banco de dados MySQL gerados por meio do aplicativo Logs Explorer .
No Logs Explorer, você pode visualizar logs de auditoria do MySQL usando a seguinte consulta para mostrar todos os logs de auditoria do banco de dados MySQL para um determinado projeto do Cloud SQL por meio da interface de Filtro avançado.
Substitua o seguinte:
- PROJECT_NAME : O nome do projeto para o qual você deseja logs de auditoria.
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"
Como alternativa, você pode selecionar o filtro de log cloudaudit.googleapis.com/data_access .
Formato de Log de Auditoria
Um log de auditoria tem os seguintes campos.
Nome do campo | Descrição | ||||||
---|---|---|---|---|---|---|---|
msgType | Uma string para representar o tipo de mensagem do log de auditoria. O único valor para msgType é activity . | ||||||
status | Status da operação: bem- success ou unsuccessful . | ||||||
date | Um registro de data e hora indicando quando o evento de auditoria foi gerado. | ||||||
threadId | O ID do thread do MySQL. | ||||||
queryId | O ID da consulta MySQL. | ||||||
user | Uma string que representa o nome de usuário enviado pelo cliente. Pode ser diferente do valor privUser. | ||||||
privUser | Uma string que representa o usuário com o qual o servidor autenticou o cliente. Este é o nome de usuário que o servidor usa para verificação de privilégios. Pode ser diferente do valor do usuário. | ||||||
gcpIamAccount | Uma string que representa a conta do IAM ou a conta de serviço do GCP. | ||||||
ip | Uma string que representa o endereço IP do cliente. | ||||||
host | Uma string que representa o nome do host do cliente. | ||||||
errCode | O código de erro do MySQL para uma operação malsucedida. Consulte a Referência de Mensagens de Erro do Servidor MySQL . | ||||||
cmd | Uma string que indica a instrução SQL (tipo de operação) a ser usada. Por exemplo, INSERT , UPDATE ou DELETE . | ||||||
objects | Os objetos de auditoria. Normalmente, uma tabela. Este campo inclui as seguintes informações sobre o objeto:
| ||||||
query | Uma instrução SQL (executada diretamente). | ||||||
chunkCount | Número total de blocos se o tamanho da consulta do log de auditoria for maior que o cloudsql_mysql_audit_event_split_threshold (90 k). | ||||||
chunkIndex | Índice do bloco. chunk_index começa em 1. | ||||||
@type | O tipo é sempre type.googleapis.com/google.cloud.sql.audit.v1.MysqlAuditEntry . |
A seguir está um exemplo de entrada de log de auditoria.
{
"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"
}
Desativar auditoria de banco de dados
Para desabilitar o Cloud SQL para MySQL Audit Plugin, você pode definir o sinalizador de banco de dados cloudsql_mysql_audit como OFF ou remover o sinalizador.
Console
No Google Cloud console, acesse a página Instâncias do Cloud SQL .
- Abra a instância e clique em Editar .
- Role para baixo até a seção Bandeiras .
- Para definir um sinalizador que não foi definido na instância antes, clique em Adicionar sinalizador , escolha
cloudsql_mysql_audit
no menu suspenso e defina seu valor comoOFF
. - Clique em Salvar para salvar suas alterações.
- Confirme suas alterações em Sinalizadores na página Visão geral .
gcloud
Substitua o seguinte:
- INSTANCE_NAME : O nome da instância na qual você está definindo o sinalizador.
gcloud sql instances patch INSTANCE_NAME \ --database-flags cloudsql_mysql_audit=OFF
REST v1beta4
Antes de usar qualquer um dos dados solicitados, faça as seguintes substituições:
- project-id : O ID do projeto
- instance-id : O ID da instância
Método HTTP e URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id
Corpo JSON da solicitação:
{ "settings": { "databaseFlags": [ { "name": "cloudsql_mysql_audit", "value": "OFF" } ] } }
Para enviar sua solicitação, expanda uma destas opções:
Você deve receber uma resposta JSON semelhante à seguinte:
REST v1
Antes de usar qualquer um dos dados solicitados, faça as seguintes substituições:
- project-id : O ID do projeto
- instance-id : O ID da instância
Método HTTP e URL:
PATCH https://sqladmin.googleapis.com/sql/v1/projects/project-id/instances/instance-id
Corpo JSON da solicitação:
{ "settings": { "databaseFlags": [ { "name": "cloudsql_mysql_audit", "value": "OFF" } ] } }
Para enviar sua solicitação, expanda uma destas opções:
Você deve receber uma resposta JSON semelhante à seguinte:
Exemplos de regras de auditoria
Auditar todas as atividades de todos os usuários:
CALL mysql.cloudsql_create_audit_rule('*','*','*','*','B',1,@outval,@outmsg);
Auditar todas as atividades de um único usuário
user1
:CALL mysql.cloudsql_create_audit_rule('user1@*','*','*','*','B',1,@outval,@outmsg);
Auditar todas as atividades para todos os usuários que começam com
user
:CALL mysql.cloudsql_create_audit_rule('user*@*','*','*','*','B',1, @outval,@outmsg);
Auditar todas as operações DML para todos os usuários:
CALL mysql.cloudsql_create_audit_rule('*','*','*','dml','B',1,@outval,@outmsg);
Operação de seleção de auditoria para um banco de dados especial
db1
:CALL mysql.cloudsql_create_audit_rule('*','db1','*','select','B',1,@outval,@outmsg);
Auditar todas as atividades de um banco de dados com caractere especial
db~1
:CALL mysql.cloudsql_create_audit_rule('*','`db~1`','*','*','B',1,@outval,@outmsg);
Auditar operações de seleção e exclusão para a tabela
db1.table1
:CALL mysql.cloudsql_create_audit_rule('*','db1','table1','select,delete','B',1,@outval,@outmsg);
Auditar todas as operações bem-sucedidas:
CALL mysql.cloudsql_create_audit_rule('*','*','*','*','S',1,@outval,@outmsg);
Não audite todas as atividades para todos os usuários que começam com
user
:CALL mysql.cloudsql_create_audit_rule('user*@*','*','*','*','E',1, @outval,@outmsg);
Solução de problemas
Emitir | Solução de problemas |
---|---|
Não consigo ver cloudsql_mysql_audit quando invoco o comando:SHOW (global) variables | cloudsql_mysql_audit é o nome do plugin. Para verificar se ele está ativo, use o seguinte comando: SHOW PLUGINS E verifique a entrada status . |
Por que não consigo ver os logs de auditoria do MySQL depois de habilitar cloudsql_mysql_audit ? | Você deve habilitar os logs de auditoria de acesso a dados (conforme descrito em Configurar logs de auditoria de acesso a dados) . Além disso, as regras de auditoria são necessárias para que o plug-in de auditoria do Cloud SQL para MySQL audite os logs de auditoria desejados. Use procedimentos armazenados com `reload_mode=1` para criar regras de auditoria ou execute o seguinte comando ou reinicie o banco de dados para que as regras de auditoria recém-adicionadas funcionem: CALL mysql.cloudsql_reload_audit_rule(1) |
Vejo o seguinte erro ao atualizar o sinalizador do banco de dados: Erro 1193: Variável de sistema desconhecida 'cloudsql_mysql_audit_xxx' | As flags cloudsql_mysql_audit_xxx só funcionam quando o plugin de auditoria está ativo. Remova todas as flags cloudsql_mysql_audit_xxx existentes da instância e ative o plugin usando o seguinte comando antes de atualizar as flags cloudsql_mysql_audit_xxx : cloudsql_mysql_audit=ON |
Posso ver logs de auditoria gerados mesmo que eu não tenha definido nenhuma regra de auditoria. | Alterações nas tabelas de regras de auditoria ( mysql.audit_log_rules e mysql.audit_log_rules_expanded ) e procedimentos armazenados de auditoria ( mysql.cloudsql_xxxx_audit_rule ) são registradas por padrão. |
Depois de fazer alterações na instância primária, não consigo ver os logs de auditoria nas minhas instâncias de réplica. | Os threads de replicação e de recuperação de falhas não são registrados. O Cloud SQL audita as atividades na instância primária, mas não na instância de réplica. |
Tentei usar o seguinte comando para definir valores de uma lista separada por vírgulas, mas não funciona.gcloud instances patch --database-flags | Se estiver especificando uma lista de valores de sinalizadores separados por vírgulas usando comandos gcloud , use o argumento --flags-file . Primeiro, você precisa criar um arquivo com as seguintes informações: --database-flags: general_log: OFF cloudsql_mysql_audit_max_query_length: '20' cloudsql_mysql_audit_data_masking_cmds: select,update Em seguida, execute o seguinte comando: gcloud sql instances patch --flags-file=flagfile |
O comando a seguir retorna um erro:CALL mysql.cloudsql_create_canonical_rules | Isso é intencional. mysql.cloudsql_create_canonical_rules só deve ser chamado internamente por mysql.cloudsql_create_audit_rule e mysql.cloudsql_update_audit_rule . |
Quais operações posso auditar? | As operações suportadas estão listadas na Lista completa de operações suportadas . Algumas operações, como as seguintes, não são auditadas, pois não afetam o banco de dados: USE db_name ou SHOW VARIABLES Além disso, em alguns casos, as funções não podem ser auditadas como um objeto (recursos não suportados). |
Quero auditar todas as operações em uma tabela específica, então criei a seguinte regra de auditoria:mysql.cloudsql_create_audit_rule("user@*","db", "table","*","B",1,@1,@2); Mas posso ver logs de auditoria que não estão relacionados a esta tabela, como disconnect e connect . | Algumas operações, como desconectar ou conectar, são consideradas globais. Elas ignoram os campos de entrada db e object . |
Quando crio, atualizo ou excluo uma regra de auditoria usando procedimentos armazenados, vejo o seguinte erro. O servidor MySQL está sendo executado com a opção read-only portanto, não pode executar esta instrução. | O Cloud SQL não pode alterar procedimentos armazenados em uma instância somente leitura. Se a instância for primária, remova os sinalizadores read_only . Se a instância for uma réplica, faça as alterações na instância primária. Após as alterações das regras serem replicadas para a instância réplica, execute o seguinte comando na instância réplica para recarregar as regras na réplica: CALL mysql.cloudsql_reload_audit_rule(1) |
Quando crio, atualizo ou excluo uma regra de auditoria, vejo o seguinte erro, mesmo que a alteração tenha sido bem-sucedida.0 rows affected | A resposta 0 rows affected refere-se à última instrução executada no procedimento armazenado, não às tabelas. Para verificar se a regra de auditoria foi alterada, use o seguinte comando: mysql.cloudsql_list_audit_rule |
Não consigo definir cloudsql_mysql_audit_data_masking_cmds e cloudsql_mysql_audit_data_masking_regexp com gcloud . | gcloud requer o uso do argumento --flags-file para definir valores de sinalizadores complexos (os sinalizadores que incluem caracteres especiais). |
Criei um procedimento armazenado usando a instrução CREATE USER , mas a senha não está mascarada. | Por padrão, o mascaramento só funciona para cmds (operações), como os seguintes:CREATE_USER , ALTER_USER , GRANT , UPDATE .Para filtrar a senha ao criar o procedimento armazenado, adicione create_procedure ao cloudsql_mysql_audit_data_masking_cmds . |
Recebi um erro de tempo limite de espera de bloqueio excedido ao tentar criar, atualizar ou excluir regras de auditoria. | Normalmente, esse erro é causado quando duas ou mais sessões tentam modificar as regras de auditoria ao mesmo tempo. Se isso acontecer com frequência, aumente o valor da variável innodb_lock_wait_timeout . Ela pode ser aumentada globalmente (usando o sinalizador do banco de dados) ou apenas para a sessão, por exemplo, usando o seguinte comando:SET innodb_lock_wait_timeout=120 |
O que vem a seguir
- Saiba mais sobre auditoria de banco de dados MySQL .
- Veja a lista completa de operações para auditoria de banco de dados .