Coletar registros de contexto do Cloud Storage
Este documento explica como exportar e ingerir registros de contexto do Cloud Storage no Google Security Operations usando o Cloud Storage. O analisador limpa e estrutura os dados JSON recebidos dos registros do Cloud Storage. Em seguida, ele mapeia os campos relevantes para o modelo de dados unificado (UDM, na sigla em inglês), enriquecendo os dados com rótulos e metadados para representação e análise consistentes no ecossistema de segurança.
Antes de começar
Verifique se você atende aos seguintes pré-requisitos:
- Instância do Google SecOps.
- O Cloud Storage está configurado e ativo no seu ambiente Google Cloud .
- Acesso privilegiado a Google Cloud e permissões adequadas.
Criar um bucket do Cloud Storage
- Faça login no console doGoogle Cloud .
Acesse a página Buckets do Cloud Storage.
Clique em Criar.
Na página Criar um bucket, insira as informações do seu bucket. Após cada uma das etapas a seguir, clique em Continuar para prosseguir para a próxima etapa:
Na seção Começar, faça o seguinte:
- Insira um nome exclusivo que atenda aos requisitos de nome de bucket. Por exemplo, google-storage-context-logs.
Para ativar o namespace hierárquico, clique na seta de expansão para abrir a seção Otimizar para cargas de trabalho orientadas a arquivos e com uso intensivo de dados e selecione Ativar namespace hierárquico neste bucket.
Para adicionar um rótulo de bucket, clique na seta de expansão para abrir a seção Rótulos.
Clique em Adicionar rótulo e especifique uma chave e um valor para o rótulo.
Na seção Escolha onde armazenar seus dados, faça o seguinte:
- Selecione um tipo de local.
Use o menu do tipo de local para selecionar um Local em que os dados de objetos no bucket serão armazenados permanentemente.
Para configurar a replicação entre buckets, abra a seção Configurar a replicação entre buckets.
Na seção Escolha uma classe de armazenamento para seus dados, selecione uma classe de armazenamento padrão para o bucket ou selecione Classe automática para gerenciamento automático da classe de armazenamento dos dados do bucket.
Na seção Escolha como controlar o acesso a objetos, selecione não para aplicar a prevenção de acesso público e selecione um modelo de controle de acesso para os objetos do bucket.
Na seção Escolha como proteger os dados do objeto, faça o seguinte:
- Selecione qualquer uma das opções em Proteção de dados que você quer definir para o bucket.
- Para escolher como os dados do objeto serão criptografados, clique na seta de expansão identificada como Criptografia de dados e selecione um Método de criptografia de dados.
Clique em Criar.
Configurar a exportação de registros de contexto do Cloud Storage
- Faça login no console doGoogle Cloud .
- Acesse Logging > Roteador de registros.
- Clique em Criar coletor.
Forneça os seguintes parâmetros de configuração:
- Nome do coletor: insira um nome significativo, por exemplo,
Storage-Context-Sink
. - Destino do gravador: selecione Cloud Storage e insira o URI do bucket. Por exemplo,
gs://google-storage-context-logs
. Filtro de registros:
logName="*storage*" resource.type="gcs_bucket"
- Nome do coletor: insira um nome significativo, por exemplo,
Clique em Criar.
Configurar permissões para o Cloud Storage
- Acesse IAM e administrador > IAM.
- Localize a conta de serviço do Cloud Logging.
- Conceda o papel roles/storage.admin no bucket.
Configurar feeds
Há dois pontos de entrada diferentes para configurar feeds na plataforma do Google SecOps:
- Configurações do SIEM > Feeds > Adicionar novo
- Central de conteúdo > Pacotes de conteúdo > Começar
Como configurar o feed de contexto do Cloud Storage
- Clique no pacote Plataforma de computação do Google Cloud.
- Localize o tipo de registro Contexto do Google Cloud Storage do GCP e clique em Adicionar novo feed.
Especifique valores para os seguintes campos:
- Tipo de origem: Google Cloud Storage V2.
- URI do bucket de armazenamento: URL do bucket do Cloud Storage. Por exemplo,
gs://compute-context-logs
. - Opções de exclusão de fontes: selecione a opção de exclusão de acordo com sua preferência.
- Idade máxima do arquivo: inclui arquivos modificados nos últimos dias. O padrão é de 180 dias.
Opções avançadas
- Nome do feed: um valor pré-preenchido que identifica o feed.
- Namespace do recurso: namespace associado ao feed.
- Rótulos de ingestão: rótulos aplicados a todos os eventos deste feed.
- Clique em Criar feed.
Para mais informações sobre como configurar vários feeds para diferentes tipos de registros nessa família de produtos, consulte Configurar feeds por produto.
Tabela de mapeamento do UDM
Campo de registro | Mapeamento da UDM | Lógica |
---|---|---|
ancestrais | event.idm.entity.entity.resource.attribute.labels.value | O valor do ancestral é extraído da matriz de ancestrais no registro bruto. |
assetType | event.idm.entity.entity.resource.type | Mapeado diretamente do campo "assetType" no registro bruto. |
insertId | event.idm.entity.metadata.product_entity_id | Mapeado diretamente do campo "insertId" no registro bruto. |
labels.compute.googleapis.com/resource_name | event.idm.entity.entity.resource.name | Mapeado diretamente do campo labels.compute.googleapis.com/resource_name no registro bruto. |
labels.k8s-pod/controller-revision-hash | event.idm.entity.entity.file.sha1 | Mapeado diretamente do campo "labels.k8s-pod/controller-revision-hash" no registro bruto. |
labels.k8s-pod/name | event.idm.entity.entity.resource.attribute.labels.value | Mapeado diretamente do campo labels.k8s-pod/name no registro bruto. |
labels.k8s-pod/pod-template-generation | event.idm.entity.entity.resource.attribute.labels.value | Mapeado diretamente do campo "labels.k8s-pod/pod-template-generation" no registro bruto. |
logName | event.idm.entity.entity.resource.attribute.labels.value | Mapeado diretamente do campo "logName" no registro bruto. |
nome | event.idm.entity.entity.resource.name | Mapeado diretamente do campo "name" no registro bruto. |
receiveTimestamp | event.idm.entity.entity.resource.attribute.creation_time | Convertido para o formato de carimbo de data/hora do campo "receiveTimestamp" no registro bruto. |
resource.data.iamConfiguration.publicAccessPrevention | event.idm.entity.entity.resource.attribute.labels.value | Mapeado diretamente do campo resource.data.iamConfiguration.publicAccessPrevention no registro bruto. |
resource.data.id | event.idm.entity.entity.resource.product_object_id | Mapeado diretamente do campo "resource.data.id" no registro bruto. |
resource.data.kind | event.idm.entity.entity.resource.type | Mapeado diretamente do campo "resource.data.kind" no registro bruto. |
resource.data.labels.app_id | event.idm.entity.entity.resource.attribute.labels.value | Mapeado diretamente do campo resource.data.labels.app_id no registro bruto. |
resource.data.labels.app_name | event.idm.entity.entity.resource.attribute.labels.value | Mapeado diretamente do campo resource.data.labels.app_name no registro bruto. |
resource.data.labels.bucket_id | event.idm.entity.entity.resource.attribute.labels.value | Mapeado diretamente do campo "resource.data.labels.bucket_id" no registro bruto. |
resource.data.labels.data_classification | event.idm.entity.entity.resource.attribute.labels.value | Mapeado diretamente do campo "resource.data.labels.data_classification" no registro bruto. |
resource.data.labels.dept_name | event.idm.entity.entity.resource.attribute.labels.value | Mapeado diretamente do campo "resource.data.labels.dept_name" no registro bruto. |
resource.data.labels.dept_no | event.idm.entity.entity.resource.attribute.labels.value | Mapeado diretamente do campo resource.data.labels.dept_no no registro bruto. |
resource.data.labels.environment | event.idm.entity.entity.resource.attribute.labels.value | Mapeado diretamente do campo "resource.data.labels.environment" no registro bruto. |
resource.data.labels.goog-composer-environment | event.idm.entity.entity.resource.attribute.labels.value | Mapeado diretamente do campo "resource.data.labels.goog-composer-environment" no registro bruto. |
resource.data.labels.goog-composer-location | event.idm.entity.entity.resource.attribute.labels.value | Mapeado diretamente do campo "resource.data.labels.goog-composer-location" no registro bruto. |
resource.data.labels.goog-composer-version | event.idm.entity.entity.resource.attribute.labels.value | Mapeado diretamente do campo "resource.data.labels.goog-composer-version" no registro bruto. |
resource.data.labels.technical_contact | event.idm.entity.entity.resource.attribute.labels.value | Mapeado diretamente do campo "resource.data.labels.technical_contact" no registro bruto. |
resource.data.labels.type | event.idm.entity.entity.resource.attribute.labels.value | Mapeado diretamente do campo "resource.data.labels.type" no registro bruto. |
resource.data.location | event.idm.entity.entity.location.name | Mapeado diretamente do campo "resource.data.location" no registro bruto. |
resource.data.projectNumber | event.idm.entity.entity.resource.attribute.cloud.project.id | Mapeado diretamente do campo "resource.data.projectNumber" no registro bruto. |
resource.data.selfLink | event.idm.entity.entity.url | Mapeado diretamente do campo "resource.data.selfLink" no registro bruto. |
resource.data.timeCreated | event.idm.entity.entity.resource.attribute.creation_time | Convertido para o formato de carimbo de data/hora do campo "resource.data.timeCreated" no registro bruto. |
resource.data.updated | event.idm.entity.entity.resource.attribute.last_update_time | Convertido para o formato de carimbo de data/hora do campo "resource.data.updated" no registro bruto. |
resource.discoveryDocumentUri | event.idm.entity.entity.file.full_path | Mapeado diretamente do campo "resource.discoveryDocumentUri" no registro bruto. |
resource.labels.cluster_name | event.idm.entity.entity.resource.attribute.labels.value | Mapeado diretamente do campo resource.labels.cluster_name no registro bruto. |
resource.labels.container_name | event.idm.entity.entity.resource.attribute.labels.value | Mapeado diretamente do campo "resource.labels.container_name" no registro bruto. |
resource.labels.location | event.idm.entity.entity.location.name | Mapeado diretamente do campo "resource.labels.location" no registro bruto. |
resource.labels.namespace_name | event.idm.entity.entity.resource.attribute.labels.value | Mapeado diretamente do campo resource.labels.namespace_name no registro bruto. |
resource.labels.pod_name | event.idm.entity.entity.resource.attribute.labels.value | Mapeado diretamente do campo resource.labels.pod_name no registro bruto. |
resource.labels.project_id | event.idm.entity.entity.resource.attribute.cloud.project.id | Mapeado diretamente do campo resource.labels.project_id no registro bruto. |
resource.parent | event.idm.entity.entity.resource.parent | Mapeado diretamente do campo "resource.parent" no registro bruto. |
resource.type | event.idm.entity.entity.resource.type | Mapeado diretamente do campo "resource.type" no registro bruto. |
resource.version | event.idm.entity.entity.resource.attribute.labels.value | Mapeado diretamente do campo "resource.version" no registro bruto. |
textPayload | event.idm.entity.entity.resource.attribute.labels.value | Mapeado diretamente do campo "textPayload" no registro bruto. |
N/A | event.idm.entity.metadata.collected_timestamp | O carimbo de data/hora coletado é o carimbo de data/hora da entrada de registro. |
N/A | event.idm.entity.metadata.entity_type | Fixado no código como RESOURCE . |
N/A | event.idm.entity.metadata.product_name | Fixado no código como GCP Storage Context . |
N/A | event.idm.entity.metadata.vendor_name | Fixado no código como Google Cloud Platform . |
N/A | event.idm.entity.entity.resource.attribute.cloud.environment | Fixado no código como GOOGLE_CLOUD_PLATFORM . |
N/A | event.idm.entity.entity.resource.resource_type | Fixado no código como STORAGE_BUCKET . |
N/A | event.timestamp | O carimbo de data/hora do evento é o carimbo de data/hora da entrada de registro. |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.