Neste documento, descrevemos como analisar os registros de auditoria do Cloud Logging usando consultas SQL padrão do BigQuery no Análise de dados de registros. Com as consultas SQL, é possível agregar e analisar registros de auditoria, que fornecem informações sobre atividades administrativas e de acesso a dados nos recursos do Google Cloud.
Sobre os registros de auditoria
O Google Cloud pode gravar quatro tipos de registros de auditoria serviços:
Registros de auditoria de atividades do administrador: esses registros gravam chamadas de API ou outras ações que modificam a configuração ou os metadados dos recursos. Esses registros são sempre gravados. Não é possível configurá-los, excluí-los ou desativá-los.
Registros de auditoria de acesso a dados: esses registros gravam chamadas de API que ler a configuração ou os metadados de recursos, bem como as APIs com base no usuário chamadas que criam, modificam ou leem dados de recursos fornecidos pelo usuário. Devido ao o acesso aos dados é uma operação frequente da API, esses registros são desativada por padrão, exceto para o BigQuery.
Registros de auditoria de eventos do sistema: esses registros contêm entradas de registro de Ações do Google Cloud que modificam a configuração de recursos. Esses registros são gerados pelos sistemas do Google; esses registros não são gerados pelo usuário ações. Não é possível configurar, excluir ou desativar os registros de auditoria de eventos do sistema.
Registros de auditoria de políticas negadas: esses registros são feitos quando um serviço do Google Cloud nega acesso a um usuário ou conta de serviço devido a uma violação da política de segurança. Esses registros não podem ser desativados, mas é possível usar filtros de exclusão para evitar que esses registros sejam armazenados em a geração de registros.
Para mais informações sobre registros de auditoria, consulte Visão geral dos registros de auditoria. Para uma lista de serviços integrados com registros de auditoria, consulte Serviços do Google Cloud com registros de auditoria.
Use registros de auditoria para identificar violações da política ou atividades suspeitas
Você pode usar os registros de auditoria para identificar violações de políticas ou atividades suspeitas:
Para identificar um possível escalonamento de privilégios usando Identity and Access Management (IAM) ou evasão de defesa desativando o Cloud Logging, use os registros de auditoria de atividade do administrador. Para um exemplo de consulta que identifica esse cenário, consulte Mudanças feitas nas configurações de geração de registros.
Para identificar o possível uso indevido de APIs ou de dados hospedados em serviços como o Cloud Storage ou o BigQuery, use os registros de auditoria de acesso a dados. Para um exemplo de consulta que identifica esse cenário, consulte Identificar o alto uso da API por um principal
Para identificar com que frequência os dados são acessados e por quais usuários, consulte todos os registros de auditoria. Para conferir um exemplo de consulta que identifica esse cenário, consulte Determinar as ações mais comuns realizadas no último mês.
Antes de começar
Verifique se você tem um projeto, uma pasta ou uma organização do Google Cloud que gere registros de auditoria.
Verifique se você tem acesso a uma visualização no bucket de registros que os registros de auditoria são encaminhados. O bucket de registros precisa ser atualizado para usar a Análise de dados de registros. Para informações sobre como criar um bucket de registros que é atualizado para usar A Análise de dados de registros, consulte Configurar buckets de registros.
-
Para ter as permissões necessárias para criar coletores e acessar registros, peça ao administrador para conceder a você os seguintes papéis do IAM:
-
Gravador de configuração de registros (
roles/logging.configWriter
) no seu projeto -
Visualizador de registros (
roles/logging.viewer
) no seu projeto
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.
Dependendo dos registros de auditoria que você quer visualizar, talvez seja necessário separar papéis ou permissões do usuário. Para informações sobre como definir papéis do IAM, consulte a documentação Controle de acesso com o IAM do Logging.
-
Gravador de configuração de registros (
Para usar as consultas deste documento na página Análise de dados de registros, faça o seguintes:
-
No console do Google Cloud, acesse a página Análise de dados de registros:
Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo Logging.
Identifique o nome da tabela da visualização de registro que você quer consultar.
Para identificar esse nome, acesse a lista Visualizações de registro, localize a visualização de registro e selecione Consulta. O painel Consulta é preenchido com uma consulta padrão, que inclui o nome da tabela da visualização de registro consultada. O nome da tabela tem o no formato
project_ID.region.bucket_ID.view_ID
.Para mais informações sobre como acessar a consulta padrão, confira Consulte uma visualização de registros.
Substitua TABLE_NAME_OF_LOG_VIEW pelo nome da tabela da visualização de registros. que você quer consultar e copie a consulta.
Cole a consulta no painel Consulta e clique em Executar consulta.
-
Amostras de consultas
Nesta seção, você verá exemplos de consultas SQL para consultar registros de auditoria.
Mudanças feitas nas configurações de registro
Identificar quando os registros de auditoria estão desativados ou quando foram feitas alterações nos registros Configurações de geração de registros, consulte os registros de auditoria de atividade do administrador:
SELECT
receive_timestamp, timestamp AS eventTimestamp,
proto_payload.audit_log.request_metadata.caller_ip,
proto_payload.audit_log.authentication_info.principal_email,
proto_payload.audit_log.resource_name,
proto_payload.audit_log.method_name
FROM
`TABLE_NAME_OF_LOG_VIEW`
WHERE
proto_payload.audit_log.service_name = "logging.googleapis.com"
AND log_id = "cloudaudit.googleapis.com/activity"
Determinar as ações mais comuns realizadas no último mês
Para identificar quais ações são realizadas com mais frequência nos últimos 30 dias, consulte todos os registros de auditoria:
SELECT
proto_payload.audit_log.method_name,
proto_payload.audit_log.service_name,
resource.type,
COUNT(*) AS counter
FROM
`TABLE_NAME_OF_LOG_VIEW`
WHERE
timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 DAY)
AND log_id="cloudaudit.googleapis.com/data_access"
GROUP BY
proto_payload.audit_log.method_name,
proto_payload.audit_log.service_name,
resource.type
ORDER BY
counter DESC
LIMIT 100
A consulta anterior pesquisa todos os registros de auditoria dos últimos 30 dias e retorna
as 100 ações mais realizadas com informações sobre method_name
,
service_name
, tipo de recurso e um contador das ações realizadas.
Detectar papéis concedidos em uma conta de serviço
Para identificar a representação de uma conta de serviço ou os papéis concedidos a elas, consultar os registros de auditoria de atividades administrativas:
SELECT
timestamp,
proto_payload.audit_log.authentication_info.principal_email as grantor,
JSON_VALUE(bindingDelta.member) as grantee,
JSON_VALUE(bindingDelta.role) as role,
proto_payload.audit_log.resource_name,
proto_payload.audit_log.method_name
FROM
`TABLE_NAME_OF_LOG_VIEW`,
UNNEST(JSON_QUERY_ARRAY(proto_payload.audit_log.service_data.policyDelta.bindingDeltas)) AS bindingDelta
WHERE
timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY)
AND log_id = "cloudaudit.googleapis.com/activity"
AND (
(resource.type = "service_account"
AND proto_payload.audit_log.method_name LIKE "google.iam.admin.%.SetIAMPolicy")
OR
(resource.type IN ("project", "folder", "organization")
AND proto_payload.audit_log.method_name = "SetIamPolicy"
AND JSON_VALUE(bindingDelta.role) LIKE "roles/iam.serviceAccount%")
)
AND JSON_VALUE(bindingDelta.action) = "ADD"
-- Principal (grantee) exclusions
AND JSON_VALUE(bindingDelta.member) NOT LIKE "%@example.com"
ORDER BY
timestamp DESC
A consulta anterior procura registros de auditoria que capturam papéis concedidos a um
principal em uma conta de serviço. Com o papel de criador do token da conta de serviço,
principal representam a conta de serviço. A consulta também especifica um horário
nos últimos sete dias e exclui os beneficiários aprovados (%@example.com
).
Identificar o alto uso da API por um principal
Para identificar um uso incomum da API por um principal, consulte todos os registros de auditoria:
SELECT
*
FROM (
SELECT
*,
AVG(counter) OVER (
PARTITION BY principal_email
ORDER BY day
ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS avg,
STDDEV(counter) OVER (
PARTITION BY principal_email
ORDER BY day
ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS stddev,
COUNT(*) OVER (
PARTITION BY principal_email
RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS numSamples
FROM (
SELECT
proto_payload.audit_log.authentication_info.principal_email,
EXTRACT(DATE FROM timestamp) AS day,
ARRAY_AGG(DISTINCT proto_payload.audit_log.method_name IGNORE NULLS) AS actions,
COUNT(*) AS counter
FROM `TABLE_NAME_OF_LOG_VIEW`
WHERE
timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 60 DAY)
AND proto_payload.audit_log.authentication_info.principal_email IS NOT NULL
AND proto_payload.audit_log.method_name NOT LIKE "storage.%.get"
AND proto_payload.audit_log.method_name NOT LIKE "v1.compute.%.list"
AND proto_payload.audit_log.method_name NOT LIKE "beta.compute.%.list"
GROUP BY
proto_payload.audit_log.authentication_info.principal_email,
day
)
)
WHERE
counter > avg + 3 * stddev
AND day >= DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY)
ORDER BY
counter DESC
Para o principal especificado, principal_email
, a consulta calcula a média
número de chamadas de API por dia e o desvio padrão dessas chamadas de API.
Quando o número médio de chamadas de API é maior do que a média em execução mais
três vezes o desvio padrão, a consulta exibirá o seguinte
informações:
- Um contador das ações realizadas.
- A média calculada de ações realizadas por dia.
- As ações específicas que foram executadas.
A seguir
Para uma visão geral da Análise de dados de registros, consulte Análise de dados de registros.
Para ver mais exemplos de consultas, veja Exemplos de consultas SQL.
Para mais consultas de amostra usadas para gerar insights de segurança com base nos seus registros, consulte o repositório Análise de segurança da comunidade.
Para saber como ativar, agregar e analisar seus registros usando na Análise de dados de registros, consulte Análise de registros de segurança no Google Cloud.