Coletar registros de hosts do AWS EC2
Neste documento, explicamos como integrar os registros de hosts do AWS EC2 ao Google Security Operations para monitoramento e análise. A integração envolve analisar e mapear registros de host do EC2 para o modelo de dados unificado (UDM, na sigla em inglês), realizar a transformação de dados e criar relações entre hosts e instâncias do EC2. Os registros fornecem informações valiosas sobre as instâncias, propriedades do host, tipos de instância e métricas de desempenho que podem ser usadas para monitoramento, auditoria e compliance de segurança.
Antes de começar
- Verifique se você tem uma instância do Google SecOps.
 - Verifique se você tem acesso privilegiado à AWS.
 
Configurar o AWS IAM e o S3
- Crie um bucket do Amazon S3 seguindo este guia do usuário: Como criar um bucket.
 - Salve o Nome e a Região do bucket para uso posterior.
 - Crie um usuário seguindo este guia: Como criar um usuário do IAM.
 - Selecione o usuário criado.
 - Selecione a guia Credenciais de segurança.
 - Clique em Criar chave de acesso na seção Chaves de acesso.
 - Selecione Serviço de terceiros como o Caso de uso.
 - Clique em Próxima.
 - Opcional: adicione uma tag de descrição.
 - Clique em Criar chave de acesso.
 - Clique em Fazer o download do arquivo CSV para salvar a chave de acesso e a chave de acesso secreta para uso posterior.
 - Clique em Concluído.
 - Selecione a guia Permissões.
 - Clique em Adicionar permissões na seção Políticas de permissões.
 - Selecione Adicionar permissões.
 - Selecione Anexar políticas diretamente.
 - Pesquise e selecione a política AmazonS3FullAccess.
 - Clique em Próxima.
 - Clique em Adicionar permissões
 
Configurar o CloudTrail para o AWS KMS
- Faça login no Console de Gerenciamento da AWS.
 - Na barra de pesquisa, digite e selecione CloudTrail na lista de serviços.
 - Clique em Criar rastreamento.
 - Forneça um Nome do rastreamento, por exemplo, 
EC2-Activity-Trail. - Marque a caixa de seleção Ativar para todas as contas na minha organização.
 - Digite o URI do bucket do S3 criado anteriormente (o formato deve ser: 
s3://your-log-bucket-name/) ou crie um novo bucket do S3. - Se o SSE-KMS estiver ativado, forneça um nome para o alias do KMS da AWS ou escolha uma chave do KMS da AWS.
 - Você pode deixar as outras configurações como padrão.
 - Clique em Próxima.
 - Selecione Eventos de gerenciamento e Eventos de dados em Tipos de eventos para capturar a atividade do host do EC2.
 - Clique em Próxima.
 - Revise as configurações em Revisar e criar.
 - Clique em Criar rastreamento.
 - Opcional: se você criou um bucket, continue com o processo a seguir:
- Acesse S3.
 - Identifique e selecione o bucket de registros recém-criado.
 - Selecione a pasta AWSLogs.
 - Clique em Copiar URI do S3 e salve.
 
 
Configurar um feed no Google SecOps para ingerir hosts do EC2 da AWS
- Acesse Configurações do SIEM > Feeds.
 - Clique em Adicionar novo.
 - No campo Nome do feed, insira um nome para o feed, por exemplo, Registros de hosts do AWS EC2.
 - Selecione Amazon S3 V2 como o Tipo de origem.
 - Selecione Hosts do AWS EC2 como o Tipo de registro.
 - Clique em Próxima.
 Especifique valores para os seguintes parâmetros de entrada:
- URI do S3: o URI do bucket.
s3://your-log-bucket-name/- Substitua 
your-log-bucket-namepelo nome real do bucket. 
- Substitua 
 
 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 no último número de dias. O padrão é de 180 dias.
ID da chave de acesso: a chave de acesso do usuário com acesso ao bucket do S3.
Chave de acesso secreta: a chave secreta do usuário com acesso ao bucket do S3.
Namespace do recurso: o namespace do recurso.
Rótulos de ingestão: o rótulo a ser aplicado aos eventos deste feed.
- URI do S3: o URI do bucket.
 Clique em Próxima.
Revise a nova configuração do feed na tela Finalizar e clique em Enviar.
Tabela de mapeamento da UDM
| Campo de registro | Mapeamento do UDM | Lógica | 
|---|---|---|
AllocationTime | 
entity.metadata.creation_timestamp | 
O campo AllocationTime é analisado como um carimbo de data/hora e mapeado para o campo creation_timestamp.  O analisador tenta vários formatos (aaaa-MM-dd HH:mm:ss, RFC 3339, UNIX, ISO8601). | 
AllowsMultipleInstanceTypes | 
entity.entity.asset.attribute.labels.value | 
O valor de AllowsMultipleInstanceTypes do registro bruto é usado como o valor de um rótulo. A chave desse rótulo está definida como allows_multiple_instance_types. | 
AutoPlacement | 
entity.entity.asset.attribute.labels.value | 
O valor de AutoPlacement do registro bruto é usado como o valor de um rótulo. A chave desse rótulo está definida como auto_placement. | 
AvailabilityZone | 
entity.entity.asset.attribute.cloud.availability_zone | 
O campo AvailabilityZone é mapeado diretamente para o campo availability_zone. | 
AvailabilityZoneID | 
entity.entity.asset.attribute.labels.value | 
O valor de AvailabilityZoneID do registro bruto é usado como o valor de um rótulo. A chave desse rótulo está definida como availability_zone_id. | 
AvailableCapacity.AvailableInstanceCapacity.AvailableCapacity | 
entity.entity.asset.attribute.labels.value | 
O valor de AvailableCapacity.AvailableInstanceCapacity.AvailableCapacity (ou AvailableCapacity.Instance.Available após a mudança de nome) é convertido em uma string e usado como o valor de um marcador. A chave está definida como available_instance_capacity_available_capacity. | 
AvailableCapacity.AvailableInstanceCapacity.InstanceType | 
entity.entity.asset.attribute.labels.value | 
O valor de AvailableCapacity.AvailableInstanceCapacity.InstanceType (ou AvailableCapacity.Instance.Type após a renomeação) é usado como o valor de um rótulo. A chave está definida como available_instance_capacity_instance_type. | 
AvailableCapacity.AvailableInstanceCapacity.TotalCapacity | 
entity.entity.asset.attribute.labels.value | 
O valor de AvailableCapacity.AvailableInstanceCapacity.TotalCapacity (ou AvailableCapacity.Instance.Total após a mudança de nome) é convertido em uma string e usado como o valor de um marcador. A chave está definida como total_capacity. | 
AvailableCapacity.AvailableVCpus | 
entity.entity.asset.attribute.labels.value | 
O valor de AvailableCapacity.AvailableVCpus (ou AvailableCapacity.VCPUs após a mudança de nome) é convertido em uma string e usado como o valor de um marcador. A chave está definida como available_v_cpus. | 
ClientToken | 
entity.entity.asset.attribute.labels.value | 
O valor de ClientToken do registro bruto é usado como o valor de um rótulo. A chave desse rótulo está definida como client_token. | 
HostID | 
entity.metadata.product_entity_id | 
O campo HostID (ou ID após a renomeação) é mapeado diretamente para o campo product_entity_id. | 
HostID | 
entity.entity.asset.asset_id | 
O campo HostID (ou ID após a renomeação) é mapeado diretamente para o campo asset_id. | 
HostMaintenance | 
entity.entity.asset.attribute.labels.value | 
O valor de HostMaintenance (ou Maintenance após a renomeação) do registro bruto é usado como o valor de um rótulo. A chave desse rótulo está definida como host_maintenance. | 
HostProperties.Cores | 
entity.entity.asset.hardware.cpu_number_cores | 
O valor de HostProperties.Cores é convertido em um número inteiro sem sinal e mapeado para cpu_number_cores. | 
HostProperties.InstanceFamily | 
entity.entity.asset.attribute.labels.value | 
O valor de HostProperties.InstanceFamily do registro bruto é usado como o valor de um rótulo. A chave desse rótulo está definida como host_properties_instance_family. | 
HostProperties.InstanceType | 
entity.entity.asset.attribute.labels.value | 
O valor de HostProperties.InstanceType do registro bruto é usado como o valor de um rótulo. A chave desse rótulo está definida como host_properties_instance_type. | 
HostProperties.Sockets | 
entity.entity.asset.attribute.labels.value | 
O valor de HostProperties.Sockets é convertido em uma string e usado como o valor de um rótulo. A chave está definida como host_properties_sockets. | 
HostProperties.TotalVCpus | 
entity.entity.asset.attribute.labels.value | 
O valor de HostProperties.TotalVCpus (ou HostProperties.TotalVCPUs após a mudança de nome) é convertido em uma string e usado como o valor de um marcador. A chave está definida como host_properties_total_v_cpus. | 
HostRecovery | 
entity.entity.asset.attribute.labels.value | 
O valor de HostRecovery (ou Recovery após a renomeação) do registro bruto é usado como o valor de um rótulo. A chave desse rótulo está definida como host_recovery. | 
HostReservationID | 
entity.entity.asset.attribute.labels.value | 
O valor de HostReservationID (ou ReservationID após a renomeação) do registro bruto é usado como o valor de um rótulo. A chave desse rótulo está definida como host_reservation_id. | 
MemberOfServiceLinkedResourceGroup | 
entity.entity.asset.attribute.labels.value | 
O valor de MemberOfServiceLinkedResourceGroup é convertido em uma string e usado como o valor de um rótulo. A chave está definida como member_of_service_linked_resource_group. | 
OwnerID | 
entity.entity.asset.attribute.labels.value | 
O valor de OwnerID do registro bruto é usado como o valor de um rótulo. A chave desse rótulo está definida como owner_id. | 
ReleaseTime | 
entity.entity.asset.attribute.labels.value | 
O valor de ReleaseTime do registro bruto é usado como o valor de um rótulo. A chave desse rótulo está definida como release_time. | 
State | 
entity.entity.asset.attribute.labels.value | 
O valor de State do registro bruto é usado como o valor de um rótulo. A chave desse rótulo está definida como state. | 
TagSet | 
entity.entity.asset.attribute.labels | 
A matriz TagSet é iterada, e o Key e o Value de cada tag são usados como a chave e o valor de um rótulo, respectivamente.  O valor AMAZON_WEB_SERVICES é atribuído a esse campo pelo analisador. O collection_time do registro bruto é mapeado para o campo collected_timestamp. O valor ASSET é atribuído a esse campo pelo analisador. O valor AWS EC2 HOSTS é atribuído a esse campo pelo analisador. O valor AWS é atribuído a esse campo pelo analisador. As relações são derivadas dos campos Instances e OutpostArn, mas esses campos não são mapeados diretamente para o objeto IDM. A lógica do analisador cria objetos de relação com base nesses campos e os mescla na matriz relations. | 
collection_time | 
entity.metadata.collected_timestamp | 
O collection_time do registro é usado como o collected_timestamp do evento. | 
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.