Neste cenário, mostramos como exportar registros do Cloud Logging para o BigQuery para atender aos requisitos de segurança e análise do ambiente de infraestrutura em nuvem da sua organização. As ferramentas analíticas são usadas pelas organizações para facilitar a identificação de alterações não autorizadas em configurações e o acesso inadequado a dados. Para ajudar você a atender a esses requisitos de segurança e análise, o Cloud Logging pode capturar dois tipos de registros de auditoria: os de atividades do administrador e os de acesso a dados.
Nesse cenário, os registros exportados são entregues a um conjunto de dados no BigQuery que você configura como parte da exportação. Conceda permissões para limitar o acesso aos registros conforme apropriado. Simplifique o gerenciamento e a consulta dos dados organizando os dados exportados em tabelas particionadas por data. Essa abordagem pode ajudar a reduzir os custos das consultas, reduzindo a quantidade de dados que são verificados como parte delas. Um benefício do particionamento é poder definir uma data de expiração para as partições para manter os dados de registros apenas enquanto forem úteis. Por exemplo, você pode manter dados de registros de auditoria por três anos e depois excluí-los.
Esse cenário faz parte da série Padrões de design para exportar o Cloud Logging.
Configurar a exportação de registros
No diagrama a seguir, veja as etapas para ativar a exportação de registros para o BigQuery.
- Configure o conjunto de dados de exportação de registros no BigQuery.
- Ative a geração de registros de auditoria para todos os serviços do Google Cloud.
- Configure a exportação de registros
- Defina permissões de política de IAM para o conjunto de dados do BigQuery
Configurar o conjunto de dados no BigQuery
Siga as instruções para configurar um conjunto de dados que hospedará os registros exportados. Se você estiver usando registros agregados, o conjunto de dados do BigQuery deverá estar localizado em um dos projetos do Google Cloud da sua organização. Quando você usa exportações de registros para um único projeto, o conjunto de dados do BigQuery precisa estar no mesmo projeto.
Prática recomendada: ao criar a tabela, defina uma validade de partição para limitar o tamanho do armazenamento da exportação da geração de registros e os custos acumulados de armazenamento ao longo do tempo.
Ativar a geração de registros de auditoria para todos os serviços
Os registros de auditoria do acesso a dados (exceto BigQuery) são desativados por padrão. Para ativar todos os registros de auditoria, siga as instruções para atualizar a política de IAM com a configuração listada na documentação da política de auditoria. Estas são as etapas:
- Download da política de IAM atual como um arquivo
- inclusão do objeto JSON ou YAML da política de registros de auditoria no arquivo de política atual
- atualização do projeto com o arquivo de política atualizado
A seguir, veja um exemplo de objeto JSON usado para ativar todos os registros de auditoria de todos os serviços.
"auditConfigs": [ { "service": "allServices", "auditLogConfigs": [ { "logType": "ADMIN_READ" }, { "logType": "DATA_READ" }, { "logType": "DATA_WRITE" }, ] }, ]
Configurar a exportação de registros
Depois de configurar as exportações agregadas ou a exportação de registros, você precisa refinar os filtros de geração de registros para exportar os registros de auditoria. O filtro de geração de registros a seguir inclui os registros de auditoria de Atividade do administrador e Acesso a dados, além dos registros de tipos de recurso específicos.
logName:"/logs/cloudaudit.googleapis.com" OR resource.type:gce OR resource.type=gcs_bucket OR resource.type=cloudsql_database OR resource.type=bigquery_resource
Na ferramenta de linha de comando gcloud
, use o comando gcloud logging sinks create
ou a chamada de API organizations.sinks.create
para criar um coletor com os filtros apropriados. O exemplo de comando gcloud
a seguir cria um coletor denominado gcp_logging_sink_gcs
para a organização. Esse coletor inclui todos os projetos filhos e especifica a filtragem para selecionar registros de auditoria individuais.
gcloud logging sinks create gcp_logging_sink_bq22 \ bigquery.googleapis.com/projects/compliance-logging-export/datasets/gcp_logging_export \ --log-filter='logName:"/logs/cloudaudit.googleapis.com"' \ --include-children \ --organization=324989855333
A resposta ao comando será semelhante à seguinte:
Created [https://logging.googleapis.com/v2/organizations/324989855333/sinks/gcp_logging_sink_bq]. Please remember to grant `serviceAccount:gcp-logging-sink-bq@logging-o324989855333.iam.gserviceaccount.com` the WRITER role on the dataset.. More information about sinks can be found at /logging/docs/export/configure_export
Na entrada serviceAccount
retornada da chamada de API, a identidade gcp-logging-sink-bq@logging-o324989855333.iam.gserviceaccount.com
é incluída na resposta. Essa identidade representa uma conta de serviço do Google Cloud criada para a exportação. Até que você conceda a essa identidade o acesso de gravação ao destino, as exportações de entradas de registro desse coletor falharão. Para mais informações, consulte a próxima seção ou as permissões necessárias para um conjunto de dados do BigQuery.
Definir permissões de política de IAM para o conjunto de dados do BigQuery
Ao adicionar a conta de serviço gcp-logging-sink-bq@logging-o324989855333.iam.gserviceaccount.com
ao conjunto de dados gcp_logging_export
com as permissões de editor, você concede à conta de serviço permissão para gravar no destino. Até você adicionar essas permissões, a exportação do coletor falhará.
Para adicionar as permissões à conta de serviço, siga estas etapas:
No Console do Cloud, acesse o BigQuery:
Ao lado do conjunto de dados
gcp_logging_export
, clique em arrow_downward e em Compartilhar conjunto de dados.No campo Adicionar pessoas, digite a conta de serviço.
Depois de criar a exportação de registros usando esse filtro, os arquivos de registro começam a ocupar o conjunto de dados do BigQuery no projeto configurado.
Prática recomendada: implemente uma política com o mínimo de permissões necessárias. Você configura as permissões do conjunto de dados com base em contas de usuário, Grupos do Google ou contas de serviço específicas do Google Cloud. Use as permissões de IAM para conceder acesso ao conjunto de dados do BigQuery.
Para um conjunto de permissões de exemplo, execute as instruções a seguir:
- Remova todos os usuários não essenciais das permissões do conjunto de dados do BigQuery.
- Inclua controle total ao administrador do BigQuery.
- Conceda ao usuário de exportação as permissões para gravar os registros de exportação.
- Conceda a outros usuários individuais acesso para ver as exportações de registros do Google Cloud.
É possível atualizar as permissões de IAM para o conjunto de dados diretamente no
Console do Cloud, por meio do utilitário de linha de comando gsutil
ou por meio
da API IAM.
Como usar os registros exportados
Quando você exporta registros para um conjunto de dados do BigQuery, o Cloud Logging cria tabelas datadas para manter as entradas. As entradas de registros são colocadas em tabelas com nomes baseados nos nomes de registros das entradas.
A lista de tabelas é exibida com o sufixo YYYYMMDD, como exibido no exemplo a seguir.
Como os registros exportados são de auditoria, os registros "Atividade do administrador" e "Acesso a dados" são carregados no BigQuery usando o formato protoPayload
.
Como conceder acesso externo
Talvez seja conveniente conceder acesso a registros exportados, a usuários específicos, por exemplo, analistas de segurança, equipe de DevOps e auditores. No BigQuery, há várias opções para conceder acesso seguro aos registros.
Estratégias de local de registros
Há várias opções para selecionar quais registros devem estar disponíveis aos usuários no BigQuery.
Criar cópias dos registros a compartilhar.
Use um método manual ou programático, crie uma cópia de uma tabela de registros individual ou um conjunto de tabelas de registros e coloque as cópias em um conjunto de dados distinto do BigQuery. Em seguida, use as permissões apropriadas do conjunto de dados do BigQuery para compartilhar registros com usuários específicos, conforme apropriado.
Vantagens: é possível limitar a quantidade de dados expostos apenas aos dados copiados.
Desvantagens: é preciso criar, compartilhar e gerenciar conjuntos de dados e permissões separados, o que pode aumentar os custos.
Conceder acesso somente de leitura a todos os registros.
Use um método manual ou programático, defina permissões de leitor às tabelas de exportação de registros do BigQuery. Com isso, é concedido acesso a todas as exportações de registros.
Vantagens: é fácil conceder o acesso.
Desvantagens: conceda acesso a todos os registros em vez de arquivos de registro específicos.
Estratégias de controle de acesso de usuário
Há várias opções para conceder acesso aos registros no BigQuery.
Usar um Grupo do Google.
Crie um Grupo do Google, como
auditors@example.com
, com acesso somente leitura ao conjunto de dados do BigQuery de exportação de registros. Em seguida, gerencie a lista de Contas do Google incluindo ou removendo auditores no Grupo do Google.Vantagens: é fácil gerenciar o acesso por meio de um grupo, porque há um objetivo claro de acesso de usuário.
Desvantagens: não é possível dizer quem tem acesso sem olhar para a associação do grupo.
Usar contas do Google individuais.
Conceda acesso de Conta do Google individual ao conjunto de dados do BigQuery de exportação de registros para cada usuário que precisar.
Vantagens: é fácil adicionar cada usuário de modo manual ou programático.
Desvantagens: não é possível discernir usuários de auditoria de outros visualizadores.
Exemplos de perguntas e consultas
É possível executar várias consultas nos registros de auditoria. Essas consultas realizam análises para entender quem está acessando dados no Google Cloud ou como os escalonadores automáticos operam ao longo do tempo.
Quais usuários acessaram os dados com mais frequência na última semana?
A consulta a seguir usa os registros de auditoria do Cloud "Acesso a dados" para localizar a conta de usuário que aparece com mais frequência nesses registros.
SELECT protopayload_auditlog.authenticationInfo.principalEmail, COUNT(*) AS COUNTER FROM (TABLE_DATE_RANGE( Logging_export.cloudaudit_googleapis_com_data_access_, DATE_ADD(CURRENT_TIMESTAMP(),-7,'DAY'), CURRENT_TIMESTAMP()) ) WHERE protopayload_auditlog.methodName = "jobservice.query" GROUP BY protopayload_auditlog.authenticationInfo.principalEmail ORDER BY protopayload_auditlog.authenticationInfo.principalEmail, COUNTER desc LIMIT 1000
Quais usuários acessaram os dados na tabela "accounts" no mês passado?
A consulta a seguir usa os registros de auditoria do Cloud "Acesso a dados" para localizar a conta de usuário que consultou com mais frequência a tabela "accounts". Substitua your-project-id
pelo ID do projeto.
SELECT protopayload_auditlog.authenticationInfo.principalEmail, COUNT(*) AS COUNTER FROM (TABLE_DATE_RANGE(logging_export.cloudaudit_googleapis_com_data_access_,DATE_ADD(CURRENT_TIMESTAMP(),-30,'DAY'),CURRENT_TIMESTAMP())) WHERE protopayload_auditlog.methodName = "jobservice.query" AND protopayload_auditlog.authorizationInfo.permission = "bigquery.tables.getData" AND protopayload_auditlog.authorizationInfo.resource = "projects/your-project-id/datasets/bqtesting/tables/accounts" GROUP BY protopayload_auditlog.authenticationInfo.principalEmail ORDER BY protopayload_auditlog.authenticationInfo.principalEmail, COUNTER desc LIMIT 1000
Quais usuários excluíram máquinas virtuais na última semana?
A consulta a seguir usa os registros de auditoria "Atividade do administrador" do Cloud para localizar as contas de usuário que excluíram máquinas virtuais na última semana.
SELECT timestamp, resource.labels.instance_id, protopayload_auditlog.authenticationInfo.principalEmail, protopayload_auditlog.resourceName, protopayload_auditlog.methodName FROM (TABLE_DATE_RANGE( logging_export.cloudaudit_googleapis_com_activity_, DATE_ADD(CURRENT_TIMESTAMP(),-7,'DAY'), CURRENT_TIMESTAMP()) ) WHERE resource.type = "gce_instance" AND operation.first IS TRUE AND protopayload_auditlog.methodName = "v1.compute.instances.delete" ORDER BY timestamp, resource.labels.instance_id LIMIT 1000
A consulta a seguir é de acompanhamento e resume a conta por contagem simples.
SELECT protopayload_auditlog.authenticationInfo.principalEmail, count(*) as counter FROM (TABLE_DATE_RANGE( logging_export.cloudaudit_googleapis_com_activity_, DATE_ADD(CURRENT_TIMESTAMP(),-7,'DAY'), CURRENT_TIMESTAMP()) ) WHERE resource.type = "gce_instance" AND operation.first IS TRUE AND protopayload_auditlog.methodName = "v1.compute.instances.delete" GROUP BY protopayload_auditlog.authenticationInfo.principalEmail ORDER BY protopayload_auditlog.authenticationInfo.principalEmail, counter LIMIT 1000
Com que frequência o escalonamento automático foi usado no último mês? Ele está aumentando, diminuindo ou permanece estável?
A consulta a seguir usa os registros de auditoria "Atividade do administrador" do Cloud para descobrir com que frequência o escalonamento automático foi empregado no último mês.
SELECT protopayload_auditlog.methodName, COUNT(*) AS counter FROM (TABLE_DATE_RANGE( logging_export.cloudaudit_googleapis_com_activity_, DATE_ADD(CURRENT_TIMESTAMP(),-30,'DAY'), CURRENT_TIMESTAMP()) ) WHERE resource.type = "gce_instance_group_manager" GROUP BY protopayload_auditlog.methodName, ORDER BY protopayload_auditlog.methodName LIMIT 1000
Usando a consulta a seguir, visualize a tendência das operações do gerenciador de instâncias do Compute Engine ao longo do tempo.
SELECT timestamp, protopayload_auditlog.methodName AS methodName, COUNT(*) AS counter FROM (TABLE_DATE_RANGE( logging_export.cloudaudit_googleapis_com_activity_, DATE_ADD(CURRENT_TIMESTAMP(),-30,'DAY'), CURRENT_TIMESTAMP()) ) WHERE resource.type = "gce_instance_group_manager" GROUP BY timestamp, methodName ORDER BY timestamp, methodName
Use a consulta anterior como uma consulta personalizada de fonte de dados no Google Data Studio para ver a tendência ao longo do tempo, como é exibido no gráfico a seguir.
Consulte consultas personalizadas do Data Studio para mais informações.
Quais conjuntos de dados são acessados com mais frequência e por quem?
A consulta a seguir usa os registros de auditoria "Acesso a dados" do Cloud para encontrar os conjuntos de dados do BigQuery que são acessados com mais frequência e exibe a conta de usuário associada junto com a contagem.
SELECT protopayload_auditlog.authorizationInfo.resource, protopayload_auditlog.authenticationInfo.principalEmail, COUNT(*) AS counter FROM (TABLE_DATE_RANGE( logging_export.cloudaudit_googleapis_com_data_access_, DATE_ADD(CURRENT_TIMESTAMP(),-30,'DAY'), CURRENT_TIMESTAMP()) ) WHERE protopayload_auditlog.authorizationInfo.permission = "bigquery.tables.getData" GROUP BY protopayload_auditlog.authorizationInfo.resource, protopayload_auditlog.authenticationInfo.principalEmail ORDER BY protopayload_auditlog.authorizationInfo.resource, protopayload_auditlog.authenticationInfo.principalEmail, counter DESC LIMIT 1000
Quais foram as 10 principais consultas do BigQuery na semana passada?
A consulta a seguir usa os registros de auditoria "Acesso a dados" do Cloud para localizar as consultas mais comuns.
SELECT protopayload_auditlog.servicedata_v1_bigquery.jobQueryRequest.query, COUNT(*) AS counter FROM (TABLE_DATE_RANGE( Logging_export.cloudaudit_googleapis_com_data_access_, DATE_ADD(CURRENT_TIMESTAMP(),-7,'DAY'), CURRENT_TIMESTAMP())) WHERE protopayload_auditlog.methodName = "jobservice.query" GROUP BY protopayload_auditlog.servicedata_v1_bigquery.jobQueryRequest.query ORDER BY counter DESC LIMIT 1000
Quais são as ações mais comuns gravadas no registro de acesso a dados nos últimos 30 dias?
A consulta a seguir usa os registros de auditoria "Acesso a dados" do Cloud para encontrar as ações mais comuns gravadas nos últimos 30 dias.
SELECT protopayload_auditlog.methodName, resource.type, COUNT(*) AS counter FROM (TABLE_DATE_RANGE( logging_export.cloudaudit_googleapis_com_data_access_, DATE_ADD(CURRENT_TIMESTAMP(),-30,'DAY'), CURRENT_TIMESTAMP()) ) GROUP BY protopayload_auditlog.methodName, resource.type ORDER BY COUNTER DESC LIMIT 1000
A seguir
- Como exportar registros do Cloud Logging para o Elastic Cloud
Veja os outros cenários de exportação:
Teste outros recursos do Google Cloud. Veja nossos tutoriais.