Relatórios de inventário

Os relatórios de inventário ajudam a gerenciar o armazenamento de objetos em grande escala. Essa é uma alternativa mais rápida e programada para a operação da API Objects: list. Use relatórios de inventário se quiser validar a migração de buckets grandes sem impacto na performance ou verificar a integridade de objetos em um único bucket.

Os relatórios de inventário contêm informações de metadados sobre seus objetos, como a classe de armazenamento, a ETag e o tipo de conteúdo do objeto. Essas informações ajudam você a analisar os custos de armazenamento, auditar e validar seus objetos e garantir a conformidade e segurança de dados. É possível exportar relatórios de inventário como arquivos de valores separados por vírgula (CSV, na sigla em inglês) ou Apache Parquet para analisá-los melhor usando ferramentas como o BigQuery.

Nesta página, você encontra uma visão geral dos relatórios de inventário. Para instruções sobre como usar relatórios de inventário, consulte Criar e gerenciar relatórios de inventário.

Visão geral dos relatórios de inventário

Os relatórios de inventário contêm uma lista de objetos e os metadados associados a eles em um determinado bucket, também conhecido como o bucket de origem. Para gerar relatórios de inventário, primeiro é necessário criar uma configuração de relatório de inventário que define a frequência de geração dos relatórios, os campos de metadados que você quer que os relatórios incluam e um bucket para gerar e armazenar os relatórios, também conhecido como o bucket de destino.

Quando você cria uma configuração de relatório de inventário, ela recebe automaticamente um identificador exclusivo universal (UUID, na sigla em inglês). Esse campo não é editável. No entanto, é possível editar os seguintes campos em uma configuração de relatório de inventário:

  • O nome de exibição da configuração de relatório de inventário
  • Os campos de metadados de objetos incluídos nos relatórios de inventário
  • O bucket de destino que armazena os relatórios de inventário
  • A programação que determina com que frequência os relatórios de inventário são gerados
  • O formato de arquivo em que os relatórios de inventário são gerados (CSV ou Apache Parquet)

Quando você exclui uma configuração de relatório de inventário, os novos relatórios de inventário não são mais gerados para a configuração, mas aqueles que já existem permanecem.

Quando usar relatórios de inventário

Os relatórios de inventário são projetados para uma análise rápida de buckets individuais. Você pode usar esses dados para fazer o seguinte:

  • Listar todos os objetos em um bucket

  • Validar o sucesso das transferências de dados

  • Gerar relatórios de auditoria para um bucket específico

Quando não usar relatórios de inventário

Reunir e analisar manualmente relatórios de inventário de vários buckets e projetos pode ser difícil, especialmente para análises em grande escala. Para casos de uso como visibilidade em toda a organização, análise de segurança ou gerenciamento de custos, use os conjuntos de dados do Storage Insights. Os conjuntos de dados do Storage Insights oferecem flexibilidade para configurar um escopo personalizado no nível do bucket, da pasta, do projeto ou da organização. Os conjuntos de dados do Storage Insights também fornecem insights, como metadados personalizados e informações de exclusão reversível.

Para conjuntos de dados do Storage Insights, os dados são atualizados diariamente, e você pode analisá-los usando SQL no BigQuery ou perguntas em linguagem natural com o Gemini.

Use os conjuntos de dados do Storage Insights se suas metas forem as seguintes:

  • Descoberta de dados interorganizacional
  • Análise para otimização de custos e gerenciamento do ciclo de vida
  • Auditoria de governança e segurança
  • Análise de séries temporais para identificar tendências

Os conjuntos de dados do Storage Insights são um recurso exclusivo disponível apenas com a assinatura do Storage Intelligence.

Buckets de origem e destino

O bucket de origem contém os objetos para os quais você quer gerar relatórios de inventário. Ele também contém a configuração de relatório de inventário. É possível ter até 100 configurações de relatório de inventário em um bucket de origem.

O bucket de destino armazena os relatórios de inventário gerados. O bucket de destino precisa atender aos seguintes requisitos:

  • Precisa estar no mesmo local que o bucket de origem.
  • Precisa estar no mesmo projeto que o bucket de origem.
  • Pode ser igual ao bucket de origem.

Quando você cria uma configuração de relatório de inventário pela primeira vez, um agente de serviço é criado automaticamente em seu nome. Para criar configurações de relatórios de inventário e gravar relatórios de inventário no bucket de destino, você e o agente de serviço precisam ter as permissões do IAM necessárias. Confira as permissões necessárias para você e para o agente de serviço.

Os relatórios de inventário usam os nomes dos buckets de origem e de destino para determinar quais buckets usar ao executar jobs. Se você excluir um bucket de origem ou de destino e depois criar um novo bucket com o mesmo nome, os relatórios de inventário vão executar jobs usando o novo bucket.

Campos de metadados do objeto

Os seguintes campos de metadados podem ser incluídos em um relatório de inventário. Os campos de metadados marcados como "Obrigatório" precisam ser incluídos no relatório de inventário.

Campo de metadados Descrição Observações
projeto O ID do projeto em que o bucket de origem está localizado. Obrigatório
bucket O nome do bucket de origem. Obrigatório
nome O nome do objeto. Obrigatório
local O local do bucket de origem. Opcional
tamanho O tamanho do objeto. Opcional
timeCreated Hora da criação do objeto no formato RFC 3339. Opcional
timeDeleted É o horário de exclusão do objeto no formato RFC 3339. Retornado apenas se esta versão do objeto não for mais uma versão ativa, mas permanecer no bucket como uma versão não atual. Opcional
atualizado O horário de modificação dos metadados de objeto no formato RFC 3339. Opcional
storageClass A classe de armazenamento do objeto. Opcional
etag Tag de entidade HTTP 1.1 do objeto. Opcional
retentionExpirationTime O primeiro momento em que o objeto pode ser excluído, o que depende de qualquer configuração de retenção definida para o objeto e de qualquer política de retenção definido para o bucket que contém o objeto. O valor para retentionExpirationTime é fornecido no formato RFC 3339 (link em inglês). Opcional
crc32c O checksum CRC32C, conforme descrito no Apêndice B do RFC 4960, codificada usando base64 na ordem de bytes big-endian. Para mais informações sobre a soma de verificação CRC32C, consulte Metadados de objeto. Opcional
md5Hash O hash MD5 dos dados, codificado usando base64. Este campo não está presente para objetos compostos. Para mais informações sobre o hash MD5, consulte Metadados de objeto. Opcional
famílias de modelos A geração de conteúdo desse objeto. Usado para controle de versão de objetos. Opcional
metageneration A versão dos metadados desse objeto nessa geração. Usado para condições prévias e para detectar alterações em metadados. Um número da metageração só é significativo no contexto de uma determinada geração de um objeto específico. Opcional
contentType O tipo de conteúdo dos dados do objeto. Se um objeto for armazenado sem um tipo de conteúdo, ele será disponibilizado como application/octet-stream. Opcional
contentEncoding A codificação de conteúdo dos dados do objeto. Opcional
timeStorageClassUpdated O horário em que a classe de armazenamento do objeto foi alterada pela última vez. Quando o objeto é criado inicialmente, ele é definido como timeCreated. Opcional

Para saber mais sobre os campos de metadados de objetos, consulte Metadados de objetos.

Fragmentos de relatório de inventário

Quando um relatório de inventário contém mais de 1.000.000 de objetos, um ou mais objetos de fragmento são gerados para compor o relatório de inventário. Quando todos os fragmentos de um relatório de inventário forem gerados com êxito, um arquivo de manifesto será gerado no mesmo bucket de destino que os fragmentos.

Arquivo de manifesto do relatório de inventário

A presença de um arquivo de manifesto indica que todos os fragmentos que compõem um relatório de inventário foram gerados. O arquivo de manifesto também fornece os nomes dos objetos de fragmento do relatório de inventário.

O arquivo de manifesto segue a convenção de nomenclatura REPORT_CONFIG_UUID_TARGET_DATETIME_manifest.json, em que:

  • REPORT_CONFIG_UUID é o UUID gerado automaticamente da configuração de relatório de inventário.

  • TARGET_DATETIME é a data e a hora em UTC geradas automaticamente em que um relatório de inventário é gerado.

Um exemplo de nome de arquivo de manifesto é fc95c52f-157a-494f-af4a-d4a53a69ba66_2022-11-30T00:00_manifest.json.

O arquivo manifest.json contém os seguintes campos preenchidos automaticamente:

{
  "report_config": REPORT_CONFIG_FIELDS,
  "records_processed": NUMBER_OF_INCLUDED_OBJECTS,
  "snapshot_time": "SNAPSHOT_TIME,
  "target_datetime": "TARGET_DATETIME,
  "shard_count": SHARD_COUNT,
  "report_shards_file_names": [
    SHARD_FILE_NAME
    ...]
}

Em que:

  • REPORT_CONFIG_FIELDS inclui campos contidos no recurso ReportConfig.

  • NUMBER_OF_INCLUDED_OBJECTS é o número de objetos incluídos no relatório de inventário.

  • SNAPSHOT_TIME é a data e hora UTC gerada automaticamente em que o snapshot dos dados ocorre. Todos os dados de um relatório de inventário são capturados no instantâneo.

  • TARGET_DATETIME é a data e hora UTC gerada automaticamente em que um relatório de inventário é gerado.

  • SHARD_COUNT é o número total de fragmentos gerados que compõem o relatório de inventário.

  • SHARD_FILE_NAME é o nome de um fragmento que compõe um relatório de inventário.

Um arquivo de exemplo manifest.json será parecido com o seguinte:

{
  "report_config":
     {
       "name": "projects/123456789098/locations/us/reportConfigs/fcec5187-afa6-48b0-938a-543d16493dc0",
       "createTime": "2023-06-08T08:07:53.397366139Z",
       "updateTime": "2023-06-08T08:07:53.552347723Z",
       "frequencyOptions": {
         "frequency": "DAILY",
         "startDate": {
           "year": 2023,
           "month": 6,
           "day": 9
         }
         "endDate": {
           "year": 2023,
           "month": 6,
           "day": 23
         }
       },
       "csvOptions": {
         "recordSeparator": "\n",
         "delimiter": ","
       },
       "objectMetadataReportOptions": {
         "metadataFields": [
           "project",
           "bucket",
           "name",
           "location",
           "updated",
           "storageClass",
         ],
         "storageFilters": {
           "bucket": "my-test-bucket"
         },
         "storageDestinationOptions": {
           "bucket": "example-bucket",
           "destinationPath": "folder/subfolder"
         }
       }
     },
  "records_processed": 3993900,
  "snapshot_time" : "2023-06-06T00:07:27Z",
  "target_datetime": {
    "year": 2023,
    "month": 6,
    "day": 6
  },
  "shard_count": 4,
  "report_shards_file_names": [
    "fc95c52f-157a-494f-af4a-d4a53a69ba66_2022-11-30T00:54_0.csv",
    "fc95c52f-157a-494f-af4a-d4a53a69ba66_2022-11-30T00:54_1.csv",
    ...
  ],
}

Preços

O uso de relatórios de inventário está sujeito a preços, que dependem da localização do bucket. Para mais informações sobre os preços dos relatórios de inventário, consulte Preços.

Registro de auditoria

O Cloud Storage cria registros de auditoria quando os relatórios de inventário são gerados no bucket de destino. O Cloud Storage gera registros de auditoria sempre que as configurações do relatório de inventário são criadas, atualizadas ou excluídas.

O Cloud Storage não cria registros de auditoria quando uma configuração de relatório de inventário lê metadados de objeto de um bucket de origem.

Integração com o VPC Service Controls

É possível fornecer uma camada extra de segurança aos recursos de relatórios de inventário usando o VPC Service Controls. Ao usar o VPC Service Controls, você adiciona projetos a perímetros de serviço que protegem recursos e serviços contra solicitações originadas de fora do perímetro. Para saber mais sobre o VPC Service Controls e os perímetros de serviço, consulte Configuração e detalhes de perímetro de serviço.

Limitação

Ao ativar a filtragem de IP em buckets do Cloud Storage, você restringe o acesso dos relatórios de inventário ao bucket, independentemente de usarem um agente de serviço para interagir com o Cloud Storage. Para evitar interrupções no serviço, recomendamos não usar a filtragem de IP em buckets do Cloud Storage se você estiver criando relatórios de inventário para esse bucket.

A seguir

Saiba como criar uma configuração de relatório de inventário e começar a gerar relatórios de inventário.