Para controlar quais operações SQL e objetos de banco de dados são registrados nos registros de auditoria, configure o registro de sessão e objeto do pgAudit no AlloyDB para PostgreSQL definindo a flag pgaudit.log ou pgaudit.role:
Defina
pgaudit.logpara ativar e configurar a geração de registros de sessão. É possível definir essa flag em uma instância, um banco de dados ou um papel para definir o escopo das operações que o pgAudit registra. Defina a flag como um valor que define o tipo de operações que o pgAudit registra.Defina
pgaudit.rolepara ativar e configurar a geração de registros de objetos, que registra log statements que afetam relações específicas. Defina essa flag como o nome de um papel e conceda acesso de instrução a objetos específicos que você quer registrar. O acesso à instrução incluiSELECT,INSERT,UPDATEeDELETE. O pgAudit registra todas as operações que correspondem à combinação de acesso e objeto executada por qualquer usuário.
As seções a seguir mostram exemplos de opções para definir o comportamento de geração de registros do pgAudit.
Para ver outros recursos da extensão, leia a documentação pgAudit (em inglês).
Configurar a geração de registros de auditoria de sessão para todos os bancos de dados em uma instância
Para configurar a auditoria de todos os bancos de dados em uma instância, defina a flag pgaudit.log no nível da instância.
Exemplo:
- Para ativar a auditoria de todas as operações em todos os bancos de dados de uma instância:
gcloud alloydb instances update my-instance \ --database-flags pgaudit.log=all[,flag2=value2...] \ --region=us-central1 \ --cluster=my-cluster \ --project=my-project - Para ativar a auditoria apenas para operações de leitura e gravação em todos os bancos de dados de uma
instância:
gcloud alloydb instances update my-instance \ --database-flags=^:^pgaudit.log=read,write[:flag2=value2...] \ --region=us-central1 \ --cluster=my-cluster \ --project=my-project
Observe o uso da sintaxe de delimitador alternativo, que permite usar caracteres de vírgula em um valor de flag.
Para mais informações sobre como configurar flags de banco de dados, consulte Configurar flags de banco de dados.
Configurar a geração de registros de auditoria de sessão para um banco de dados específico
É possível configurar a auditoria de um banco de dados específico definindo a flag pgaudit.log
no nível do banco de dados.
Por exemplo, para ativar a auditoria de leitura e gravação em um banco de dados, finance:
ALTER DATABASE finance SET pgaudit.log = 'read,write';
Configurar a geração de registros de auditoria de sessão para um único usuário
É possível ativar a auditoria de um usuário específico definindo a flag pgaudit.log
por nível de papel.
Por exemplo, para definir a auditoria de todas as operações de banco de dados executadas pela usuária Alice:
ALTER ROLE alice SET pgaudit.log = 'all';
Configurar a geração de registros de auditoria de objetos
A auditoria de uma relação é mais restrita do que a auditoria de um banco de dados específico. Quando
você audita uma relação, o sistema atribui um papel de auditor exclusivo ao
parâmetro pgaudit.role. Essa operação registra qualquer objeto ou relação
concedida a esse papel.
Exemplo:
- Para configurar a auditoria de todas as consultas
SELECTna relação de salário no banco de dados de funcionários:CREATE ROLE auditor WITH NOLOGIN; ALTER DATABASE employee SET pgaudit.role = 'auditor'; GRANT SELECT ON salary TO auditor;
Também é possível auditar um subconjunto de colunas para uma determinada relação.
Exemplo:
- Para configurar a geração de registros de auditoria que ocorre somente quando as colunas
incomeetax_statussão acessadas na relação de salário:GRANT SELECT(income, tax_status) ON salary TO auditor;