Geração de registros de auditoria do Firebase Realtime Database

Nesta página, descrevemos os registros de auditoria criados pelo Firebase como parte do Registros de auditoria do Cloud.

Visão geral

Os serviços do Firebase gravam registros de auditoria para ajudar você a responder às perguntas "Quem fez o quê, onde e quando?". Esses são os Registros de auditoria do Cloud, fornecidos como parte do projeto do Google Cloud conectado ao seu projeto do Firebase.

Cada projeto do Firebase contém apenas os registros de auditoria dos recursos que estão diretamente nele.

Para uma visão geral dos registros de auditoria do Cloud, consulte este link. Para entender melhor o formato do registro de auditoria, consulte Noções básicas dos registros de auditoria.

Registros de auditoria disponíveis

Os seguintes tipos de registros de auditoria estão disponíveis para o Firebase Realtime Database:

  • Registros de auditoria de atividade do administrador

    Inclui operações de "gravação de administrador" que gravam metadados ou informações de configuração.

    Não é possível desativar esses registros.

  • Registros de auditoria de acesso a dados

    Inclui operações de "leitura do administrador" que leem metadados ou informações de configuração. Também inclui operações de "leitura de dados" e "gravação de dados" que leem ou gravam dados fornecidos pelo usuário.

    Ative de forma explícita os registros de auditoria de acesso a dados para receber essas informações.

Para conferir descrições mais completas dos tipos de registros de auditoria, consulte Tipos de registros de auditoria.

Operações auditadas

Veja a seguir um resumo de quais operações da API correspondem a cada tipo de registro de auditoria no Firebase Realtime Database:

Categoria de registros de auditoria Operações do Firebase Realtime Database
Registros de auditoria de atividade do administrador (ADMIN_WRITE)
  • CreateDatabaseInstance
  • DeleteDatabaseInstance
  • DisableDatabaseInstance
  • ReenableDatabaseInstance
Registros de auditoria de acesso a dados (ADMIN_READ)
  • GetDatabaseInstance
  • ListDatabaseInstances
Registros de auditoria de acesso a dados (DATA_READ ou DATA_WRITE)
Registros de auditoria de acesso a dados (DATA_READ)
Registros de auditoria de acesso a dados (DATA_WRITE)
  • Write
  • Update. Consulte WriteMetadata associado.
  • OnDisconnectPut
  • OnDisconnectUpdate. Consulte WriteMetadata associado.
  • OnDisconnectCancel

Informações de autenticação da auditoria

As entradas de registro de auditoria incluem informações sobre a identidade que executou a operação registrada. Para identificar um autor da chamada da solicitação, consulte os campos a seguir no objeto AuditLog:

  • Como estabelecer conexões em tempo real. As operações Connect do Realtime Database não registram dados de autenticação. Esse sistema faz a autenticação depois que uma conexão é estabelecida. Assim, Connect não tem informações de autenticação. O objeto AuthenticationInfo contém um marcador de posição principalEmail de audit-pending-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com.

  • Autenticação do Google. As operações do Realtime Database que usam autenticações padrão do Google, como o tráfego do SDK Admin do Firebase ou das solicitações REST autenticadas com um token OAuth padrão, têm um objeto AuthenticationInfo que contém o e-mail das credenciais.

  • Firebase Authentication. As operações do Realtime Database que usam o Firebase Authentication têm um objeto AuthenticationInfo que contém um valor principalEmail de audit-third-party-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com. O mesmo acontece quando você cria JWTs personalizados para implementar sua própria solução de autenticação.

    • Se um JSON Web Token (JWT, na sigla em inglês) for usado para a autenticação de terceiros, o campo thirdPartyPrincipal vai conter o cabeçalho e o payload do token. Por exemplo, os registros de auditoria para solicitações autenticadas com o Firebase Authentication incluem o token da solicitação desse recurso.
  • Sem autenticação. As operações do Realtime Database sem autenticação têm um objeto AuthenticationInfo que contém um valor principalEmail de audit-no-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com Uma instância do Realtime Database com regras de segurança abertas pode atender a essas solicitações. Recomendamos que todos os usuários protejam os bancos de dados corretamente.

  • Tokens de secrets legados. As operações do Realtime Database que usam tokens legados têm um objeto AuthenticationInfo que contém um marcador de posição principalEmail de audit-secret-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com. Para o JWT assinado por secrets, thirdPartyPrincipal contém os cabeçalhos e o payload do JWT.

Fazer uma auditoria para avaliar as regras de segurança do Firebase

Os registros de auditoria do Cloud podem ser usados para identificar solicitações possivelmente afetadas por alterações de regras.

No objeto AuthorizationInfo, authorization.permission pode ser uma das seguintes opções:

  • firebasedatabase.data.get: acesso de leitura concedido no caminho especificado em resource.
  • firebasedatabase.data.update: acesso de gravação concedido no caminho especificado em resource.
  • firebasedatabase.data.connect: marcador de posição para Connect e Disconnect. Nenhuma autorização é necessária para se conectar a uma instância do Realtime Database.
  • firebasedatabase.data.cancel: usado para Unlisten e OnDisconnectCancel. A revogação ou o cancelamento de uma operação autorizada anteriormente não exige outras autorizações.

Associar os registros de auditoria do Cloud aos resultados do criador de perfil do Realtime Database

É possível fazer análises detalhadas de desempenho no Realtime Database usando o Criador de perfil do Realtime Database junto com a geração de registros de auditoria do Realtime Database. Cada ferramenta tem seus pontos positivos.

Cloud Audit Logging Criador de perfil do Realtime Database
  • Audita o acesso aos bancos de dados
  • Captura de forma contínua todas as solicitações
  • Permite consultas retrospectivas
  • Contém informações detalhadas do token de autenticação
  • Gera um custo de uso
  • É usado para analisar o desempenho
  • Oferece ferramentas úteis para identificar pontos de acesso e otimizar o desempenho
  • Mede o listener-broadcast, indisponível nos registros de auditoria devido ao possível volume de dados
  • É um recurso leve, ideal para testes de carga em tempo real. As entradas de registro de auditoria podem levar alguns minutos para aparecer.

O conteúdo do registro de auditoria corresponde às métricas do criador de perfil, conforme mostrado abaixo.

Nome da operação do registro de auditoria Valores especiais em
RealtimeDatabaseAuditMetadata
Nome da operação do criador de perfil
Connect RequestType é REALTIME concurrent-connect
Disconnect RequestType é REALTIME concurrent-disconnect
Read RequestType é REALTIME realtime-read
Read RequestType é REST rest-read
Write RequestType é REALTIME realtime-write
Write RequestType é REST rest-write
Update RequestType é REALTIME.
Verificar PreconditionType.
realtime-update
realtime-transaction
Update RequestType é REST.
Verificar PreconditionType.
rest-update
rest-transaction
ListenerListen RequestType é REALTIME listener-listen
ListenerUnlisten RequestType é REALTIME listener-unlisten
OnDisconnectPut RequestType é REALTIME on-disconnect-put
OnDisconnectUpdate RequestType é REALTIME on-disconnect-update
OnDisconnectCancel RequestType é REALTIME on-disconnect-cancel
RunOnDisconnect RequestType é REALTIME run-on-disconnect

Formato do registro de auditoria

As entradas de registro de auditoria incluem os seguintes objetos:

  • A própria entrada de registro, que é um objeto do tipo LogEntry. Veja alguns campos úteis:

    • O logName contém o ID do recurso e o tipo de registro de auditoria.
    • O resource contém o destino da operação auditada.
    • O timestamp contém o horário da operação auditada.
    • O protoPayload contém as informações auditadas.
  • Os dados de registro de auditoria, que são um objeto AuditLog localizado no campo protoPayload da entrada de registro.

  • Informações de auditoria opcionais e específicas do serviço, que são um objeto específico do serviço. Para integrações mais antigas, esse objeto é mantido no campo serviceData do objeto AuditLog. As integrações mais recentes usam o campo metadata.

Confira outros campos nesses objetos e como interpretá-los em Noções básicas sobre registros de auditoria.

Outras informações sobre os campos em protoPayload.metadata para operações DATA_READ e DATA_WRITE estão disponíveis na documentação de referência.

Nome do registro

Os nomes dos recursos dos Registros de auditoria do Cloud indicam o projeto do Firebase ou outra entidade do Google Cloud que tem os registros de auditoria e se eles contêm dados de registro de auditoria de atividades do administrador, acesso a dados, política negada ou eventos do sistema. Por exemplo, veja abaixo os nomes dos registros de auditoria de atividade do administrador e de acesso a dados de uma organização no nível do projeto. As variáveis indicam identificadores de projeto do Firebase e organização.

projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity
organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fdata_access

Nome do serviço

Os registros de auditoria do Firebase Realtime Database usam o nome de serviço firebasedatabase.googleapis.com.

Veja uma lista completa de todos os nomes de serviço da API Cloud Logging e o tipo de recurso monitorado correspondente em Mapear serviços para recursos.

Tipos de recurso

Os registros de auditoria do Firebase Realtime Database usam o tipo de recurso audited_resource para todos os registros de auditoria.

Veja uma lista de todos os tipos de recursos monitorados do Cloud Logging e informações descritivas em Tipos de recursos monitorados.

Ativar registros de auditoria

Os registros de auditoria de atividade do administrador estão sempre ativados. Não é possível desativá-los.

Por padrão, os registros de auditoria de acesso a dados são desativados e não são gravados, a menos que essa opção seja ativada. Os registros de auditoria de acesso a dados do BigQuery são uma exceção e não podem ser desativados.

Os registros de auditoria de acesso a dados do Realtime Database são alternados marcando DATA_READ e/ou DATA_WRITE no Console do GCP. Há um atraso de uma hora entre o momento em que os registros são ativados/desativados no Console do GCP e o momento em que a entrega deles começa ou é interrompida.

Confira as instruções sobre como ativar alguns ou todos os registros de auditoria de acesso a dados em Configurar registros de acesso a dados.

Permissões e papéis

As permissões e papéis do Cloud IAM determinam sua capacidade de acessar dados de registros de auditoria nos recursos do Google Cloud.

Ao decidir as permissões e papéis específicos do Logging que se aplicam ao seu caso de uso, considere o seguinte:

  • O papel Visualizador de registros (roles/logging.viewer) fornece acesso somente leitura aos registros de auditoria de atividade do administrador, política negada e eventos do sistema. Se você tiver apenas esse papel, não será possível ver os registros de auditoria de acesso a dados que estão no bucket _Default.

  • O papel Visualizador de registros particulares (roles/logging.privateLogViewer inclui as permissões contidas em roles/logging.viewer, além da capacidade de ler os registros de auditoria de acesso a dados no bucket _Default.

    Observe que, se esses registros privados forem armazenados em buckets definidos pelo usuário, qualquer usuário que tenha permissões para ler registros nesses intervalos poderá ler os registros privados. Para mais informações sobre buckets de registro, consulte Visão geral de roteamento e armazenamento.

Para mais informações sobre as permissões e os papéis do Cloud IAM que se aplicam aos dados de registros de auditoria, consulte Controle de acesso.

Ver registros

Para encontrar e visualizar registros de auditoria, é preciso saber o identificador do projeto do Firebase, da pasta ou da organização do Google Cloud. É possível especificar outros campos LogEntry indexados, como resource.type. Para detalhes, acesse Encontrar entradas de registro rapidamente.

Confira a seguir os nomes dos registros de auditoria que incluem variáveis para os identificadores do projeto, da pasta ou da organização do Firebase:

   projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity
   projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_access
   projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event
   projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fpolicy

   folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Factivity
   folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fdata_access
   folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fsystem_event
   folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fpolicy

   organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Factivity
   organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fdata_access
   organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fsystem_event
   organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fpolicy

Para ver os registros de auditoria no Cloud Logging, use o Console do GCP, a ferramenta de linha de comando gcloud ou a API Logging.

Console

Use o Explorador de registros no Console do GCP para recuperar as entradas de registro de auditoria para o projeto, para a pasta ou para a organização do Firebase:

  1. No Console do GCP, acesse a página Logging > Explorador de registros.

    Acessar a página Explorador de registros

  2. Na página Explorador de registros, selecione um projeto, uma pasta ou uma organização do Firebase.

  3. No painel Criador de consultas, faça o seguinte:

    • Em Tipo de recurso, selecione o recurso do Google Cloud com os registros de auditoria que você quer ver.

    • Em Nome do registro, selecione o tipo de registro de auditoria que você quer ver:

      • Para os registros de auditoria da atividade do administrador, selecione Atividade.
      • Para os registros de auditoria de acesso a dados, selecione data_access.
      • Para os registros de auditoria de eventos do sistema, selecione system_event.
      • Em "Registros de auditoria de política negada", selecione policy.

    Se você não vir essas opções, isso significa que não há registros de auditoria desse tipo disponíveis no projeto, na pasta ou na organização do Firebase.

    Para mais detalhes sobre como fazer consultas usando o Explorador de registros, consulte Como criar consultas de registro.

gcloud

A ferramenta de linha de comando gcloud fornece à API Cloud Logging uma interface de linha de comando. Insira um PROJECT_ID, FOLDER_ID ou ORGANIZATION_ID válido em cada um dos nomes de registro.

Para ler as entradas de registro de auditoria no nível do projeto do Firebase, execute o comando a seguir:

gcloud logging read "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com" --project=PROJECT_ID

Para ler suas entradas de registro de auditoria no nível da pasta, execute o comando a seguir:

gcloud logging read "logName : folders/FOLDER_ID/logs/cloudaudit.googleapis.com" --folder=FOLDER_ID

Para ler as entradas de registro de auditoria no nível da organização, execute o seguinte comando:

gcloud logging read "logName : organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com" --organization=ORGANIZATION_ID

Para mais informações sobre como usar a ferramenta gcloud, consulte Ler entradas de registro.

API

Ao criar consultas, substitua as variáveis por valores válidos, bem como nomes ou identificadores dos registros de auditoria adequados do projeto, da pasta ou da organização, conforme listado nos nomes dos registros de auditoria. Por exemplo, se a consulta incluir um PROJECT_ID, o identificador do projeto que você fornecer precisará fazer referência ao projeto do Firebase selecionado.

Se quiser usar a API Logging para analisar suas entradas de registro de auditoria, siga estas instruções:

  1. Acesse a seção Testar esta API da documentação do método entries.list.

  2. Digite o seguinte na parte do Corpo da solicitação do formulário Teste esta API. Clique nesse formulário preenchido automaticamente para preencher automaticamente o corpo da solicitação, mas é necessário inserir um PROJECT_ID válido em cada um dos nomes de registro.

    {
      "resourceNames": [
        "projects/PROJECT_ID"
      ],
      "pageSize": 5,
      "filter": "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com"
    }
    
  3. Clique em Executar.

Para mais detalhes sobre consultas, acesse Linguagem de consulta do Logging.

Para um exemplo de entrada de registro de auditoria e como encontrar as informações mais importantes, consulte Exemplo de entrada de registro de auditoria.

Encaminhar registros de auditoria

É possível encaminhar registros de auditoria para destinos suportados da mesma maneira que é possível rotear outros tipos de registros. Veja alguns motivos para encaminhar registros de auditoria:

  • Para manter os registros de auditoria por mais tempo ou usar recursos de pesquisa mais avançados, encaminhar cópias dos seus registros de auditoria para o Google Cloud Storage, BigQuery ou Cloud Pub/Sub. Com o Cloud Pub/Sub, é possível encaminhar para outros aplicativos, repositórios e terceiros.

  • Para gerenciar seus registros de auditoria em toda a organização, crie coletores agregados que podem encaminhar registros de qualquer ou todos os projetos do Firebase na organização.

  • Se os registros ativados de auditoria de acesso a dados estiverem enviando seus projetos do Firebase para as cotas de registros, será possível criar coletores que excluam os registros de auditoria de acesso a dados do Logging.

Para instruções sobre o roteamento de registros, consulte Configurar coletores.

Preços

Registros de auditoria de atividades do administrador e registros de auditoria de eventos do sistema.

Os registros de auditoria de acesso a dados e os registros de auditoria de políticas negadas estão sujeitos a cobrança.

Para mais informações sobre os preços do Cloud Logging, consulte Preços do pacote de operações do Google Cloud: Cloud Logging.