Este documento descreve como analisar os registos de auditoria do Cloud Logging através de consultas de SQL padrão do BigQuery na página Log Analytics. As consultas SQL permitem-lhe agregar e analisar os seus registos de auditoria, que fornecem informações sobre as atividades administrativas e os acessos nos seus recursos. Google Cloud
Acerca dos registos de auditoria
Existem quatro tipos de registos de auditoria que podem ser escritos por Google Cloud serviços:
Registos de auditoria da atividade do administrador: os registos de auditoria da atividade do administrador registam chamadas API ou outras ações que modificam a configuração ou os metadados dos recursos. Estes registos são sempre escritos. Não pode configurá-los, excluí-los nem desativá-los.
Registos de auditoria de acesso a dados: os registos de auditoria de acesso a dados registam chamadas API que leem a configuração ou os metadados dos recursos, bem como chamadas API orientadas pelo utilizador que criam, modificam ou leem dados de recursos fornecidos pelo utilizador. Uma vez que o acesso aos dados é uma operação de API frequente, estes registos estão desativados por predefinição (exceto para o BigQuery).
Registos de auditoria de eventos do sistema: os registos de auditoria de eventos do sistema contêm entradas de registo para Google Cloud ações que modificam a configuração dos recursos. Estes registos são gerados pelos sistemas da Google e não pelas ações do utilizador. Não pode configurar, excluir nem desativar os registos de auditoria de eventos do sistema.
Registos de auditoria de acesso negado por política: os registos de auditoria de acesso negado por política são registados quando um serviço nega o acesso a um utilizador ou a uma conta de serviço devido a uma violação da política de segurança. Google Cloud Não é possível desativar estes registos, mas pode usar filtros de exclusão para impedir que sejam armazenados no Logging.
Para mais informações sobre os registos de auditoria, consulte o artigo Vista geral dos registos de auditoria. Para ver uma lista de serviços integrados com registos de auditoria, consulte os Google Cloud serviços com registos de auditoria.
Use registos de auditoria para identificar violações de políticas ou atividade suspeita
Pode usar os registos de auditoria para identificar violações de políticas ou atividade suspeita:
Para identificar uma potencial escalada de privilégios através da gestão de identidade e de acesso (IAM) ou uma evasão de defesa desativando o registo, use os registos de auditoria da atividade do administrador. Para ver um exemplo de consulta que identifica este cenário, consulte o artigo Alterações feitas às definições de registo.
Para identificar uma potencial utilização indevida de APIs ou dados alojados em serviços como o Cloud Storage ou o BigQuery, use os registos de auditoria de acesso aos dados. Para ver um exemplo de consulta que identifica este cenário, consulte o artigo Identifique a utilização elevada da API por um principal.
Para identificar a frequência com que os dados são acedidos e por que utilizadores, consulte todos os registos de auditoria. Para ver um exemplo de consulta que identifica este cenário, consulte o artigo Determine as ações mais comuns realizadas no mês passado.
Antes de começar
Certifique-se de que tem um Google Cloud projeto, uma pasta ou uma organização que gera registos de auditoria.
Certifique-se de que tem acesso a uma vista no contentor de registos para o qual os registos de auditoria são encaminhados. O contentor de registos tem de ser atualizado para usar a análise de registos. Para ver informações sobre como criar um contentor de registos atualizado para usar o Log Analytics, consulte o artigo Configure contentores de registos.
-
Para receber as autorizações de que precisa para criar destinos e ver registos, peça ao seu administrador que lhe conceda as seguintes funções de IAM:
-
Logs Configuration Writer (
roles/logging.configWriter
) no seu projeto -
Visualizador de registos (
roles/logging.viewer
) no seu projeto
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.
Consoante os registos de auditoria que quer ver, pode precisar de funções ou autorizações separadas. Para obter informações sobre a definição de funções de IAM, consulte a documentação de controlo de acesso com a IAM do registo.
-
Logs Configuration Writer (
Para usar as consultas neste documento na página Log Analytics, faça o seguinte:
-
Na Google Cloud consola, aceda à página Log Analytics:
Se usar a barra de pesquisa para encontrar esta página, selecione o resultado cuja legenda é Registo.
Identifique o nome da tabela da vista de registo que quer consultar.
Para identificar este nome, aceda à lista Vistas de registo, localize a vista de registo e, de seguida, selecione Consulta. O painel Consulta é preenchido com uma consulta predefinida que inclui o nome da tabela da vista de registo consultada. O nome da tabela tem o formato
project_ID.region.bucket_ID.view_ID
.Para mais informações sobre como aceder à consulta predefinida, consulte o artigo Consulte uma vista de registo.
Substitua VIEW pelo nome da tabela da vista de registo que quer consultar e, em seguida, copie a consulta.
Cole a consulta no painel Consulta e, de seguida, clique em Executar consulta.
-
Consultas de exemplo
Esta secção fornece exemplos de consultas SQL para consultar registos de auditoria.
Alterações efetuadas às definições de registo
Para identificar quando os registos de auditoria são desativados ou quando são feitas alterações às definições de registo predefinidas, consulte os registos de auditoria da 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
`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 mês passado
Para identificar as ações mais comuns nos últimos 30 dias, consulte todos os registos de auditoria:
SELECT
proto_payload.audit_log.method_name,
proto_payload.audit_log.service_name,
resource.type,
COUNT(*) AS counter
FROM
`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 registos de auditoria nos últimos 30 dias e devolve as 100 ações mais realizadas com informações sobre o method_name
, o service_name
, o tipo de recurso e um contador das ações realizadas.
Detete funções concedidas numa conta de serviço
Para identificar a utilização da identidade de uma conta de serviço ou funções concedidas em contas de serviço, consulte os registos de auditoria da atividade de administrador:
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
`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 registos de auditoria que captam funções concedidas a um principal numa conta de serviço. A função de criador de tokens de conta de serviço permite que o principal use a identidade da conta de serviço. A consulta também especifica um intervalo de tempo dos últimos sete dias e exclui os beneficiários aprovados (%@example.com
).
Identifique a utilização elevada da API por um principal
Para identificar uma utilização invulgarmente elevada da API por parte de um principal, consulte todos os registos 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 `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 o número médio de chamadas API por dia e o desvio padrão dessas chamadas API.
Quando o número médio de chamadas de API é superior à média móvel mais três vezes o desvio padrão, a consulta apresenta as seguintes 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 realizadas.
O que se segue?
Para uma vista geral do Log Analytics, consulte o artigo Log Analytics.
Para mais consultas de exemplo, consulte o artigo Consultas SQL de exemplo.
Para ver mais exemplos de consultas usadas para gerar estatísticas de segurança a partir dos seus registos, consulte o repositório Community Security Analytics.
Para saber como ativar, agregar e analisar os seus registos através do Log Analytics, consulte o artigo Análise de registos de segurança no Google Cloud.