Recolha registos de anfitriões do AWS EC2
Este documento explica como integrar os registos de anfitriões do AWS EC2 no Google Security Operations para monitorização e análise. A integração envolve a análise e o mapeamento dos registos do anfitrião do EC2 para o modelo de dados unificado (UDM), a realização da transformação de dados e a criação de relações entre anfitriões e instâncias do EC2. Os registos fornecem informações valiosas sobre as instâncias, as propriedades do anfitrião, os tipos de instâncias e as métricas de desempenho que podem ser usadas para monitorização de segurança, auditoria e conformidade.
Antes de começar
- Certifique-se de que tem uma instância do Google SecOps.
- Certifique-se de que tem acesso privilegiado à AWS.
Configure o AWS IAM e o S3
- Crie um contentor do Amazon S3 seguindo este guia do utilizador: Criar um contentor.
- Guarde o Nome e a Região do contentor para utilização posterior.
- Crie um utilizador seguindo este guia do utilizador: Criar um utilizador do IAM.
- Selecione o utilizador criado.
- Selecione o separador Credenciais de segurança.
- Clique em Criar chave de acesso na secção Chaves de acesso.
- Selecione Serviço de terceiros como o Exemplo de utilização.
- Clicar em Seguinte.
- Opcional: adicione uma etiqueta de descrição.
- Clique em Criar chave de acesso.
- Clique em Transferir ficheiro CSV para guardar a chave de acesso e a chave de acesso secreta para utilização posterior.
- Clique em Concluído.
- Selecione o separador Autorizações.
- Clique em Adicionar autorizações na secção Políticas de autorizações.
- Selecione Adicionar autorizações.
- Selecione Anexar políticas diretamente
- Pesquise e selecione a política AmazonS3FullAccess.
- Clicar em Seguinte.
- Clique em Adicionar autorizações.
Configure o CloudTrail para o AWS KMS
- Inicie sessão na AWS Management Console.
- Na barra de pesquisa, escreva e selecione CloudTrail na lista de serviços.
- Clique em Criar trilho.
- Indique um nome do rasto; por exemplo,
EC2-Activity-Trail
. - Selecione a caixa de verificação Ativar para todas as contas na minha organização.
- Escreva o URI do contentor do S3 criado anteriormente (o formato deve ser:
s3://your-log-bucket-name/
) ou crie um novo contentor do S3. - Se a SSE-KMS estiver ativada, indique um nome para o alias do AWS KMS ou escolha uma chave do AWS KMS existente.
- Pode deixar as outras definições como predefinições.
- Clicar em Seguinte.
- Selecione Eventos de gestão e Eventos de dados em Tipos de eventos para capturar a atividade do anfitrião do EC2.
- Clicar em Seguinte.
- Reveja as definições em Rever e criar.
- Clique em Criar trilho.
- Opcional: se criou um novo contentor, continue com o processo seguinte:
- Aceda ao S3.
- Identifique e selecione o contentor de registos recém-criado.
- Selecione a pasta AWSLogs.
- Clique em Copiar URI do S3 e guarde-o.
Configure um feed no Google SecOps para carregar hosts do AWS EC2
- Aceda a Definições do SIEM > Feeds.
- Clique em Adicionar novo.
- No campo Nome do feed, introduza um nome para o feed; por exemplo, Registos de anfitriões do AWS EC2.
- Selecione Amazon S3 V2 como o Tipo de origem.
- Selecione AWS EC2 Hosts como o Tipo de registo.
- Clicar em Seguinte.
Especifique valores para os seguintes parâmetros de entrada:
- URI do S3: o URI do contentor.
s3://your-log-bucket-name/
- Substitua
your-log-bucket-name
pelo nome real do contentor.
- Substitua
Opções de eliminação da origem: selecione a opção de eliminação de acordo com a sua preferência.
Idade máxima do ficheiro: inclua ficheiros modificados no último número de dias. A predefinição é 180 dias.
ID da chave de acesso: a chave de acesso do utilizador com acesso ao contentor do S3.
Chave de acesso secreta: a chave secreta do utilizador com acesso ao contentor do S3.
Espaço de nomes do recurso: o espaço de nomes do recurso.
Etiquetas de carregamento: a etiqueta a aplicar aos eventos deste feed.
- URI do S3: o URI do contentor.
Clicar em Seguinte.
Reveja a nova configuração do feed no ecrã Finalizar e, de seguida, clique em Enviar.
Tabela de mapeamento da UDM
Campo de registo | Mapeamento de UDM | Lógica |
---|---|---|
AllocationTime |
entity.metadata.creation_timestamp |
O campo AllocationTime é analisado como uma 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 registo não processado é usado como o valor de uma etiqueta. A chave desta etiqueta está definida como allows_multiple_instance_types . |
AutoPlacement |
entity.entity.asset.attribute.labels.value |
O valor de AutoPlacement do registo não processado é usado como o valor de uma etiqueta. A chave desta etiqueta está definida como auto_placement . |
AvailabilityZone |
entity.entity.asset.attribute.cloud.availability_zone |
O campo AvailabilityZone está diretamente mapeado para o campo availability_zone . |
AvailabilityZoneID |
entity.entity.asset.attribute.labels.value |
O valor de AvailabilityZoneID do registo não processado é usado como o valor de uma etiqueta. A chave desta etiqueta 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 do nome) é convertido numa string e usado como o valor de uma etiqueta. A tecla 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 mudança do nome) é usado como o valor de uma etiqueta. A tecla 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 do nome) é convertido numa string e usado como o valor de uma etiqueta. A tecla 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 do nome) é convertido numa string e usado como o valor de uma etiqueta. A tecla está definida como available_v_cpus . |
ClientToken |
entity.entity.asset.attribute.labels.value |
O valor de ClientToken do registo não processado é usado como o valor de uma etiqueta. A chave desta etiqueta está definida como client_token . |
HostID |
entity.metadata.product_entity_id |
O campo HostID (ou ID após a mudança do nome) é mapeado diretamente para o campo product_entity_id . |
HostID |
entity.entity.asset.asset_id |
O campo HostID (ou ID após a mudança do nome) é mapeado diretamente para o campo asset_id . |
HostMaintenance |
entity.entity.asset.attribute.labels.value |
O valor de HostMaintenance (ou Maintenance após a mudança do nome) do registo não processado é usado como o valor de uma etiqueta. A chave desta etiqueta está definida como host_maintenance . |
HostProperties.Cores |
entity.entity.asset.hardware.cpu_number_cores |
O valor de HostProperties.Cores é convertido num 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 registo não processado é usado como o valor de uma etiqueta. A chave desta etiqueta está definida como host_properties_instance_family . |
HostProperties.InstanceType |
entity.entity.asset.attribute.labels.value |
O valor de HostProperties.InstanceType do registo não processado é usado como o valor de uma etiqueta. A chave desta etiqueta está definida como host_properties_instance_type . |
HostProperties.Sockets |
entity.entity.asset.attribute.labels.value |
O valor de HostProperties.Sockets é convertido numa string e usado como o valor de uma etiqueta. A tecla 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 do nome) é convertido numa string e usado como o valor de uma etiqueta. A tecla está definida como host_properties_total_v_cpus . |
HostRecovery |
entity.entity.asset.attribute.labels.value |
O valor de HostRecovery (ou Recovery após a mudança do nome) do registo não processado é usado como o valor de uma etiqueta. A chave desta etiqueta está definida como host_recovery . |
HostReservationID |
entity.entity.asset.attribute.labels.value |
O valor de HostReservationID (ou ReservationID após a mudança do nome) do registo não processado é usado como o valor de uma etiqueta. A chave desta etiqueta está definida como host_reservation_id . |
MemberOfServiceLinkedResourceGroup |
entity.entity.asset.attribute.labels.value |
O valor de MemberOfServiceLinkedResourceGroup é convertido numa string e usado como o valor de uma etiqueta. A tecla está definida como member_of_service_linked_resource_group . |
OwnerID |
entity.entity.asset.attribute.labels.value |
O valor de OwnerID do registo não processado é usado como o valor de uma etiqueta. A chave desta etiqueta está definida como owner_id . |
ReleaseTime |
entity.entity.asset.attribute.labels.value |
O valor de ReleaseTime do registo não processado é usado como o valor de uma etiqueta. A chave desta etiqueta está definida como release_time . |
State |
entity.entity.asset.attribute.labels.value |
O valor de State do registo não processado é usado como o valor de uma etiqueta. A chave desta etiqueta está definida como state . |
TagSet |
entity.entity.asset.attribute.labels |
A matriz TagSet é iterada e os elementos Key e Value de cada etiqueta são usados como a chave e o valor de uma etiqueta, respetivamente. O valor AMAZON_WEB_SERVICES é atribuído a este campo pelo analisador. O collection_time do registo não processado é mapeado para o campo collected_timestamp . O valor ASSET é atribuído a este campo pelo analisador. O valor AWS EC2 HOSTS é atribuído a este campo pelo analisador. O valor AWS é atribuído a este campo pelo analisador. As relações são derivadas dos campos Instances e OutpostArn , mas estes campos não são mapeados diretamente para o objeto IDM. A lógica do analisador cria objetos de relação com base nestes campos e junta-os à matriz relations . |
collection_time |
entity.metadata.collected_timestamp |
O collection_time do registo é usado como o collected_timestamp do evento. |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais da Google SecOps.