Registro de auditoria do Firebase Realtime Database

Esta página descreve os registros de auditoria criados pelo Firebase como parte dos registros de auditoria do Cloud .

Visão geral

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

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

Para obter uma visão geral dos logs de auditoria da nuvem, consulte Visão geral dos logs de auditoria da nuvem . Para uma compreensão mais profunda do formato do log de auditoria, consulte Compreender os logs de auditoria .

Logs de auditoria disponíveis

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

  • Registros de auditoria de atividades administrativas

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

    Não é possível desativar os registros de auditoria de atividades administrativas.

  • Logs de auditoria de acesso a dados

    Inclui operações de "leitura administrativa" 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.

    Para receber logs de auditoria de acesso a dados, você deve ativá-los explicitamente.

Para obter descrições mais completas dos tipos de log de auditoria, consulte Tipos de logs de auditoria .

Operações auditadas

Veja a seguir um resumo de quais operações de 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 atividades administrativas (ADMIN_WRITE)
  • CriarDatabaseInstance
  • ExcluirDatabaseInstance
  • DesabilitarDatabaseInstance
  • ReenableDatabaseInstance
Registros de auditoria de acesso a dados (ADMIN_READ)
  • GetDatabaseInstance
  • ListaDatabaseInstâncias
Logs de auditoria de acesso a dados (DATA_READ ou DATA_WRITE)
Registros de auditoria de acesso a dados (DATA_READ)
Logs de auditoria de acesso a dados (DATA_WRITE)
  • Escrever
  • Atualizar. Consulte WriteMetadata associado.
  • OnDisconnectPut
  • OnDisconnectUpdate. Consulte WriteMetadata associado.
  • OnDisconnectCancel

Informações de autenticação de auditoria

As entradas do log de auditoria incluem informações sobre a identidade que executou a operação registrada. Para identificar um chamador de solicitação, consulte os seguintes campos no objeto AuditLog:

  • Estabelecendo conexões em tempo real. As operações do Realtime Database Connect não registram dados de autenticação, pois o Realtime Database é autenticado depois que uma conexão é estabelecida. Portanto, Connect não possui informações de autenticação. O objeto AuthenticationInfo contém um espaço reservado principalEmail de audit-pending-auth@firebasedatabase-{REGION_CODE}-prod.iam.gserviceaccount.com .

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

  • Autenticação Firebase. 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 se você implementar sua própria solução de autenticação criando JWTs personalizados.

    • Se um JSON Web Token (JWT) tiver sido usado para autenticação de terceiros, o campo thirdPartyPrincipal incluirá o cabeçalho e a carga útil do token. Por exemplo, os registros de auditoria para solicitações autenticadas com o Firebase Authentication incluem o token do Firebase Authentication dessa solicitação.
  • Sem autenticação. As operações do Realtime Database que não usam nenhuma 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 conceder tais solicitações . Recomendamos que todos os usuários protejam seus bancos de dados adequadamente.

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

Auditar avaliações de regras de segurança do Firebase

Os registros de auditoria do Cloud podem ser usados ​​para identificar solicitações que serão potencialmente afetadas por alterações nas regras.

No objeto AuthorizationInfo , authorization.permission pode ser um dos seguintes:

  • 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 : espaço reservado para Connect e Disconnect . Não é necessária autorização para conectar-se a uma instância do Realtime Database.
  • firebasedatabase.data.cancel : usado para Unlisten e OnDisconnectCancel . A revogação ou cancelamento de uma operação previamente autorizada não requer autorização adicional.

Correlacionar registros de auditoria do Cloud com resultados do Realtime Database Profiler

Você pode realizar análises detalhadas de desempenho no Realtime Database usando o criador de perfil do Realtime Database em combinação com o registro de auditoria do Realtime Database. Cada ferramenta tem seus pontos fortes.

Registro de auditoria na nuvem Perfilador do Realtime Database
  • Audita o acesso aos bancos de dados
  • Captura continuamente todas as solicitações
  • Permite consulta retrospectiva
  • Contém informações detalhadas do token de autenticação
  • Incorre em um custo de uso
  • Usado para análise de desempenho
  • Fornece ferramentas úteis para identificação de pontos de acesso e, portanto, otimização de desempenho
  • Pode medir listener-broadcast , que não está disponível nos registros de auditoria devido ao potencial volume de dados
  • Leve e em tempo real, o que o torna ideal para testes de carga ao vivo. As entradas do log de auditoria podem levar alguns minutos para aparecer.

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

Nome da operação de registro de auditoria Valores especiais em
RealtimeDatabaseAuditMetadata
Nome da operação do criador de perfil
Conectar RequestType é REALTIME conexão simultânea
desconectar RequestType é REALTIME desconexão simultânea
Ler RequestType é REALTIME leitura em tempo real
Ler RequestType é REST descansar-ler
Escrever RequestType é REALTIME gravação em tempo real
Escrever RequestType é REST resto-escrever
Atualizar RequestType é REALTIME .
Verifique PreconditionType .
atualização em tempo real
transação em tempo real
Atualizar RequestType é REST .
Verifique PreconditionType .
atualização de descanso
transação restante
OuvinteOuvir RequestType é REALTIME ouvinte-ouvir
OuvinteNão ouvir RequestType é REALTIME ouvinte-não ouvir
OnDisconnectPut RequestType é REALTIME ligado-desconectado
OnDisconnectUpdate RequestType é REALTIME atualização ao desconectar
OnDisconnectCancel RequestType é REALTIME ao desligar-cancelar
RunOnDisconnect RequestType é REALTIME executar ao desconectar

Formato do registro de auditoria

As entradas do log de auditoria incluem os seguintes objetos:

  • A própria entrada de log, que é um objeto do tipo LogEntry . Os campos úteis incluem o seguinte:

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

  • Informações opcionais de auditoria 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 ; integrações mais recentes usam o campo metadata .

Para outros campos nesses objetos e como interpretá-los, revise Compreender os logs de auditoria .

Informações adicionais sobre 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 proprietária dos registros de auditoria e se o registro contém dados de registro de auditoria de atividades do administrador, acesso a dados, política negada ou eventos do sistema. Por exemplo, veja a seguir os nomes dos registros de auditoria de atividades administrativas no nível do projeto e os registros de auditoria de acesso a dados de uma organização. As variáveis ​​denotam identificadores de projeto e organização do Firebase.

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 .

Para ver uma lista completa de todos os nomes de serviço da API Cloud Logging e o tipo de recurso monitorado correspondente, consulte Mapear serviços para recursos .

Tipos de recursos

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

Para ver uma lista de todos os tipos de recursos monitorados do Cloud Logging e informações descritivas, consulte Tipos de recursos monitorados .

Habilitar registro de auditoria

Os registros de auditoria de atividades administrativas estão sempre ativados; você não pode desativá-los.

Os registros de auditoria de acesso a dados são desativados por padrão e não são gravados, a menos que sejam explicitamente ativados (a exceção são os registros de auditoria de acesso a dados do BigQuery, que não podem ser desativados).

Os registros de auditoria de acesso a dados do Realtime Database são alternados verificando DATA_READ e/ou DATA_WRITE no console do GCP. Há um atraso de até uma hora entre o horário em que os registros são ativados/desativados no Console do GCP e o horário em que os registros iniciam/param de ser entregues.

Para obter instruções sobre como ativar alguns ou todos os seus logs de auditoria de acesso a dados, consulte Configurar logs de acesso a dados .

Permissões e funções

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 quais permissões e funções específicas do Logging se aplicam ao seu caso de uso, considere o seguinte:

  • A função Visualizador de logs ( roles/logging.viewer ) fornece acesso somente leitura aos logs de auditoria de atividades administrativas, políticas negadas e eventos do sistema. Se você tiver apenas essa função, não poderá visualizar os logs de auditoria de acesso a dados que estão no bucket _Default .

  • A função Visualizador de logs privados (roles/logging.privateLogViewer ) inclui as permissões contidas em roles/logging.viewer , além da capacidade de ler logs de auditoria de acesso a dados no bucket _Default .

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

Para obter 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, você precisa saber o identificador do projeto, da pasta ou da organização do Firebase cujas informações de registro de auditoria você deseja visualizar. Você pode especificar ainda outros campos LogEntry indexados, como resource.type ; para obter detalhes, revise Localizar entradas de log rapidamente .

A seguir estão os nomes dos logs de auditoria; eles incluem variáveis ​​para os identificadores do projeto, pasta ou 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

Você pode visualizar registros de auditoria no Cloud Logging usando o Console do GCP, a ferramenta de linha de comando gcloud ou a API Logging.

Console

Você pode usar o Logs Explorer no Console do GCP para recuperar as entradas do registro de auditoria do seu projeto, pasta ou organização do Firebase:

  1. No Console do GCP, acesse a página Logging > Logs Explorer .

    Acesse a página do Explorador de registros

  2. Na página Logs Explorer , selecione um projeto, pasta ou organização existente do Firebase.

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

    • Em Tipo de recurso , selecione o recurso do Google Cloud cujos registros de auditoria você deseja ver.

    • Em Nome do log , selecione o tipo de log de auditoria que você deseja ver:

      • Para registros de auditoria de atividades administrativas, selecione atividade .
      • Para logs de auditoria de acesso a dados, selecione data_access .
      • Para logs de auditoria de eventos do sistema, selecione system_event .
      • Para logs de auditoria de política negada, selecione policy .

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

    Para obter mais detalhes sobre consultas usando o Logs Explorer, consulte Criar consultas de log .

gcloud

A ferramenta de linha de comando gcloud fornece uma interface de linha de comando para a API Cloud Logging. Forneça um PROJECT_ID , FOLDER_ID ou ORGANIZATION_ID válido em cada um dos nomes de log.

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

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

Para ler as entradas do log de auditoria em nível de pasta, execute o seguinte comando:

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

Para ler as entradas do log 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 obter mais informações sobre como usar a ferramenta gcloud , consulte Ler entradas de log .

API

Ao criar suas consultas, substitua as variáveis ​​por valores válidos, substitua o nome ou os identificadores apropriados do log de auditoria no nível do projeto, no nível da pasta ou no nível da organização, conforme listado nos nomes do log de auditoria. Por exemplo, se sua consulta incluir um PROJECT_ID , o identificador de projeto fornecido deverá se referir ao projeto do Firebase atualmente selecionado.

Para usar a API Logging para examinar as entradas do registro de auditoria, faça o seguinte:

  1. Vá para a seção Experimente esta API na documentação do método entries.list .

  2. Coloque o seguinte na parte do corpo da solicitação do formulário Experimente esta API . Clicar neste formulário pré-preenchido preenche automaticamente o corpo da solicitação, mas você precisa fornecer um PROJECT_ID válido em cada um dos nomes de log.

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

Para obter mais detalhes sobre consultas, consulte Linguagem de consulta de registro em log .

Para obter um exemplo de entrada de log de auditoria e como localizar as informações mais importantes nela, consulte Exemplo de entrada de log de auditoria .

Logs de auditoria de roteamento

Você pode rotear logs de auditoria para destinos compatíveis da mesma forma que pode rotear outros tipos de logs. Aqui estão alguns motivos pelos quais você pode querer rotear seus registros de auditoria:

  • Para manter os registros de auditoria por um período mais longo ou usar recursos de pesquisa mais avançados, você pode encaminhar cópias dos registros de auditoria para o Google Cloud Storage, o BigQuery ou o Google Cloud Pub/Sub. Usando o Cloud Pub/Sub, você pode rotear para outros aplicativos, outros repositórios e terceiros.

  • Para gerenciar seus registros de auditoria em toda a organização, você pode criar coletores agregados que podem rotear registros de qualquer um ou de todos os projetos do Firebase na organização.

  • Se os registros de auditoria de acesso a dados ativados estiverem enviando projetos do Firebase para suas cotas de registros, você poderá criar coletores que excluam os registros de auditoria de acesso a dados do Logging.

Para obter instruções sobre logs de roteamento, consulte Configurar coletores .

Preços

Os logs de auditoria de atividades administrativas e os logs de auditoria de eventos do sistema são gratuitos.

Os logs de auditoria de acesso a dados e os logs de auditoria de política negada são cobrados.

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