Coletar registros de contexto do Cloud Compute
Este documento explica como exportar e transferir Google Cloud registros de contexto do Compute para o Google Security Operations usando o Cloud Storage. O analisador extrai informações dos registros no formato JSON. Em seguida, ele normaliza e estrutura os dados extraídos no formato UDM do Google SecOps, com foco em detalhes sobre máquinas virtuais, como especificações de hardware, configuração de rede, configurações de segurança e relacionamentos com outras entidades.
Antes de começar
- Verifique se você tem uma instância do Google SecOps.
- Verifique se o Compute está configurado e ativo no ambiente Google Cloud .
- Verifique se você tem acesso privilegiado a Google Cloud e as permissões adequadas.
Criar um bucket do Cloud Storage
- Faça login no console do Google 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:
Na seção Começar, faça o seguinte:
- Insira um nome exclusivo que atenda aos requisitos de nome de bucket. Por exemplo, compute-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 Google Cloud exportação de registros do Compute
- Faça login no console do Google Cloud.
- Acesse Logging > Roteador de registros.
- Clique em Criar coletor.
Informe os seguintes parâmetros de configuração:
- Nome do coletor: insira um nome significativo. Por exemplo,
Compute-Context-Sink
. - Destino do sink: selecione Cloud Storage e insira o URI do bucket. Por exemplo,
gs://compute-context-logs
. Filtro de registro:
logName="*compute*" resource.type="gce_instance"
- Nome do coletor: insira um nome significativo. Por exemplo,
Clique em Criar.
Configurar permissões do 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 um feed no Google SecOps para ingerir Google Cloud registros de contexto do Compute
- Acesse Configurações do SIEM > Feeds.
- Clique em Adicionar novo.
- No campo Nome do feed, insira um nome para o feed. Por exemplo, Google Cloud Registros de contexto de computação.
- Selecione Google Cloud Storage como o Tipo de origem.
- Selecione Contexto de computação do GCP como o Tipo de registro.
- Clique em Pegar conta de serviço ao lado do campo Conta de serviço do Chronicle.
- Clique em Próxima.
Especifique valores para os seguintes parâmetros de entrada:
- URI do bucket do Storage: URL do bucket do Cloud Storage. Por exemplo,
gs://compute-context-logs
. - URI Is A: selecione Directory which includes subdirectories.
Opções de exclusão de origem: selecione a opção de exclusão de acordo com sua preferência.
Namespace do recurso: o namespace do recurso.
Rótulos de ingestão: o rótulo aplicado aos eventos desse feed.
- URI do bucket do Storage: URL do bucket do Cloud Storage. Por exemplo,
Clique em Próxima.
Revise a configuração do novo feed na tela Finalizar e clique em Enviar.
Tabela de mapeamento do UDM
Campo de registro | Mapeamento do UDM | Lógica |
---|---|---|
ancestrais | event.idm.entity.entity.asset.attribute.labels.value | Cada valor de ancestral na matriz de ancestrais é mapeado para um rótulo separado com a chave ancestors . |
assetType | event.idm.entity.entity.asset.category | Mapeado diretamente do campo "assetType". |
asset_type | event.idm.entity.entity.asset.category | Mapeado diretamente do campo asset_type. |
nome | event.idm.entity.entity.resource.name | Mapeado diretamente do campo de nome. |
resource.data.cpuPlatform | event.idm.entity.entity.asset.hardware.cpu_platform | Mapeado diretamente do campo resource.data.cpuPlatform. |
resource.data.creationTimestamp | event.idm.entity.entity.asset.attribute.creation_time | Analisado para um formato de carimbo de data/hora do campo resource.data.creationTimestamp. |
resource.data.id | event.idm.entity.entity.asset.product_object_id | Mapeado diretamente do campo resource.data.id. |
resource.data.labels.business_function | event.idm.entity.entity.asset.attribute.labels.value | Mapeado diretamente do campo resource.data.labels.business_function, com a chave definida como business_function . |
resource.data.labels.environment | event.idm.entity.entity.asset.attribute.labels.value | Mapeado diretamente do campo resource.data.labels.environment, com a chave definida como environment . |
resource.data.labels.infra_location | event.idm.entity.entity.asset.attribute.labels.value | Mapeado diretamente do campo resource.data.labels.infra_location, com a chave definida como infra_location . |
resource.data.labels.instance_group | event.idm.entity.user.group_identifiers | Mapeado diretamente do campo resource.data.labels.instance_group. |
resource.data.labels.os | event.idm.entity.entity.asset.platform_software.platform_version | Mapeado diretamente do campo resource.data.labels.os. |
resource.data.labels.primary_application | event.idm.entity.entity.asset.attribute.labels.value | Mapeado diretamente do campo resource.data.labels.primary_application, com a chave definida como primary_application . |
resource.data.labels.project_code | event.idm.entity.entity.asset.attribute.labels.value | Mapeado diretamente do campo resource.data.labels.project_code, com a chave definida como project_code . |
resource.data.lastStartTimestamp | event.idm.entity.entity.asset.last_boot_time | Analisado para um formato de carimbo de data/hora do campo resource.data.lastStartTimestamp. |
resource.data.machineType | event.idm.entity.entity.asset.hardware.model | O tipo de máquina é extraído do campo resource.data.machineType usando uma expressão regular. |
resource.data.name | event.idm.entity.entity.asset.hostname | Mapeado diretamente do campo resource.data.name. |
resource.data.networkInterfaces.0.accessConfigs.0.natIP | event.idm.entity.entity.asset.nat_ip | O primeiro endereço IP NAT da primeira interface de rede é mapeado. |
resource.data.networkInterfaces.0.network | event.idm.entity.entity.asset.attribute.cloud.vpc.name | O ID da rede é extraído do campo resource.data.networkInterfaces.0.network usando uma expressão regular. |
resource.data.networkInterfaces.0.networkIP | event.idm.entity.entity.asset.ip | O endereço IP da primeira interface de rede é mapeado. |
resource.data.networkInterfaces.1.networkIP | event.idm.entity.entity.asset.ip | O endereço IP da segunda interface de rede é mapeado. |
resource.data.selfLink | event.idm.entity.entity.url | Mapeado diretamente do campo resource.data.selfLink. |
resource.data.serviceAccounts.0.email | event.idm.entity.relations.entity.user.email_addresses | O endereço de e-mail da primeira conta de serviço é mapeado. |
resource.data.status | event.idm.entity.entity.asset.deployment_status | É associado a ACTIVE se o status for RUNNING , PROVISIONING , STAGING , STOPPING , SUSPENDING , SUSPENDED , REPAIRING ou TERMINATED . Caso contrário, será mapeado para DEPLOYMENT_STATUS_UNSPECIFIED . |
event.idm.entity.entity.asset.attribute.cloud.availability_zone | A zona de disponibilidade é criada pela combinação dos campos "region" e "zone_suffix". | |
event.idm.entity.entity.asset.attribute.cloud.environment | Defina como GOOGLE_CLOUD_PLATFORM . |
|
event.idm.entity.entity.asset.attribute.cloud.project.name | O ID do projeto é extraído do campo de nome usando uma expressão regular. | |
event.idm.entity.entity.asset.attribute.cloud.project.resource_type | Defina como CLOUD_PROJECT . |
|
event.idm.entity.entity.asset.attribute.cloud.vpc.resource_type | Defina como VPC_NETWORK . |
|
event.idm.entity.entity.resource.resource_type | Defina como VIRTUAL_MACHINE se asset_type ou assetType contiver Instance . |
|
event.idm.entity.entity.resource.type | Defina como VIRTUAL_MACHINE se asset_type ou assetType contiver Instance . |
|
event.idm.entity.metadata.collected_timestamp | Defina o carimbo de data/hora do evento do Logstash. | |
event.idm.entity.metadata.entity_type | Defina como ASSET . |
|
event.idm.entity.metadata.product_name | Defina como GCP Compute Context . |
|
event.idm.entity.metadata.vendor_name | Defina como Google Cloud Platform . |
|
event.idm.entity.relations.entity.user.attribute.cloud.environment | Defina como GOOGLE_CLOUD_PLATFORM . |
|
event.idm.entity.relations.entity_type | Defina como USER . |
|
event.idm.entity.relations.relationship | Defina como ADMINISTERS . |
Alterações
2024-01-27
Correção de bugs:
- Os mapeamentos de
name
,resource.data.id
,resource.data.name
,region
,resource.data.selfLink
,project_id
,asset_network_id
e{region}-%{zone_suffix}
foram separados em blocos de mutação distintos.
2024-01-05
Melhoria:
- O mapeamento de
event.idm.entity.entity.namespace
foi removido. - Foi adicionado suporte para analisar todos os
networkIP
deresource.data.networkInterfaces
.
2022-07-29
- Foi adicionada uma verificação condicional para
resource.data.lastStartTimestamp
e mapeada paraentity.asset.last_boot_time
. - Foi adicionada uma verificação condicional para
resource.data.networkInterfaces.0.networkIP
e mapeada paraentity.asset.ip
.
2022-04-04
- Atualização do nome do fornecedor.
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.