Recolha registos do AWS Security Hub

Compatível com:

Este documento explica como carregar registos do AWS Security Hub para o Google Security Operations. O AWS Security Hub oferece uma vista abrangente dos alertas e das conclusões de segurança nas contas da AWS. Ao enviar estas conclusões para o Google SecOps, pode usar as capacidades do Google SecOps para melhorar a monitorização e a deteção de ameaças.

Antes de começar

Certifique-se de que cumpre os seguintes pré-requisitos:

  • Instância do Google SecOps
  • Acesso privilegiado ao AWS

Configure o AWS IAM e o S3

  1. Crie um contentor do Amazon S3 seguindo este guia do utilizador: Criar um contentor.
  2. Guarde o Nome e a Região do contentor para utilização posterior.
  3. Crie um utilizador seguindo este guia do utilizador: Criar um utilizador do IAM.
  4. Selecione o utilizador criado.
  5. Selecione o separador Credenciais de segurança.
  6. Clique em Criar chave de acesso na secção Chaves de acesso.
  7. Selecione Serviço de terceiros como o Exemplo de utilização.
  8. Clicar em Seguinte.
  9. Opcional: adicione uma etiqueta de descrição.
  10. Clique em Criar chave de acesso.
  11. Clique em Transferir ficheiro CSV para guardar a chave de acesso e a chave de acesso secreta para utilização posterior.
  12. Clique em Concluído.
  13. Selecione o separador Autorizações.
  14. Clique em Adicionar autorizações na secção Políticas de autorizações.
  15. Selecione Adicionar autorizações.
  16. Selecione Anexar políticas diretamente.
  17. Pesquise e selecione a política AmazonS3FullAccess.
  18. Clicar em Seguinte.
  19. Clique em Adicionar autorizações.

Crie uma função Lambda

  1. Inicie sessão na AWS Management Console.
  2. Aceda ao Lambda.
  3. Clique em Criar função e selecione Criar do zero.
  4. Indique um nome para a função; por exemplo, SecurityHubToS3.
  5. Escolha Python 3.x para o tempo de execução.
  6. Introduza o código Lambda que recebe as conclusões do EventBridge e as escreve no seu contentor do S3:

    import json
    import boto3
    from datetime import datetime
    
    # Initialize the S3 client
    s3_client = boto3.client('s3')
    
    # S3 bucket where findings will be stored
    bucket_name = 'aws-security-hub-findings-stream'
    
    def lambda_handler(event, context):
       # Extract Security Hub findings from the event
       findings = event['detail']['findings']
    
       # Generate a timestamp for the file name to avoid overwriting
       timestamp = datetime.now().strftime('%Y-%m-%dT%H-%M-%S')
    
       # Generate the S3 object key (file name) based on the timestamp
       object_key = f"security_hub_findings_{timestamp}.json"
    
       # Convert findings to JSON format
       findings_json = json.dumps(findings)
    
       # Upload the findings to S3
       try:
          response = s3_client.put_object(
                Bucket=bucket_name,
                Key=object_key,
                Body=findings_json,
                ContentType='application/json'
          )
          print(f"Successfully uploaded findings to S3: {response}")
       except Exception as e:
          print(f"Error uploading findings to S3: {e}")
          raise e
    
       return {
          'statusCode': 200,
          'body': json.dumps('Successfully processed findings')
       }
    
  7. Defina autorizações para o Lambda adicionando uma função IAM à função Lambda com a seguinte política:

    {
       "Version": "2012-10-17",
       "Statement": [
          {
                "Effect": "Allow",
                "Action": [
                   "s3:PutObject"
                ],
                "Resource": "arn:aws:s3:::aws-security-hub-findings-stream/*"
          }
       ]
    }
    

Como configurar o AWS Security Hub para encaminhar resultados com o EventBridge

  1. Inicie sessão na AWS Management Console.
  2. Na barra de pesquisa, escreva e selecione Security Hub na lista de serviços.
  3. Clique em Definições.
  4. Na secção Integrações, encontre EventBridge e clique em Ativar.
  5. Na barra de pesquisa, escreva e selecione EventBridge na lista de serviços.
  6. Na consola do EventBridge, clique em Regras > Criar regra.
  7. Forneça a seguinte configuração da regra:
    1. Nome da regra: indique um nome descritivo para a regra; por exemplo, SendSecurityHubFindingsToS3.
    2. Origem do evento: selecione Serviços da AWS.
    3. Nome do serviço: escolha Centro de segurança.
    4. Tipo de evento: selecione Resultados do Security Hub.
    5. Defina o destino: escolha Função Lambda.
    6. Selecione a função Lambda que acabou de criar (SecurityHubToS3).
  8. Clique em Criar.

Configure feeds

Existem dois pontos de entrada diferentes para configurar feeds na plataforma Google SecOps:

  • Definições do SIEM > Feeds > Adicionar novo
  • Content Hub > Pacotes de conteúdo > Começar

Como configurar o feed do AWS Security Hub

  1. Clique no pacote Amazon Cloud Platform.
  2. Localize o tipo de registo AWS Security Hub.
  3. Especifique os valores nos seguintes campos.

    • Tipo de origem: Amazon SQS V2
    • Nome da fila: o nome da fila SQS a partir da qual ler
    • URI do S3: o URI do contentor.
      • s3://your-log-bucket-name/
        • Substitua your-log-bucket-name pelo nome real do seu contentor do S3.
    • Opções de eliminação de origens: selecione a opção de eliminação de acordo com as suas preferências de carregamento.

    • Idade máxima do ficheiro: inclua ficheiros modificados no último número de dias. A predefinição é 180 dias.

    • ID da chave de acesso à fila SQS: uma chave de acesso à conta que é uma string alfanumérica de 20 carateres.

    • Chave de acesso secreta da fila SQS: uma chave de acesso à conta que é uma string alfanumérica de 40 carateres.

    Opções avançadas

    • Nome do feed: um valor pré-preenchido que identifica o feed.
    • Espaço de nomes do recurso: espaço de nomes associado ao feed.
    • Etiquetas de carregamento: etiquetas aplicadas a todos os eventos deste feed.
  4. Clique em Criar feed.

Para mais informações sobre a configuração de vários feeds para diferentes tipos de registos nesta família de produtos, consulte o artigo Configure feeds por produto.

Tabela de mapeamento da UDM

Campo de registo Mapeamento de UDM Lógica
account principal.group.product_object_id O ID da conta da AWS associado à descoberta.
configurationItem.ARN target.resource.id O Nome do recurso da Amazon (ARN) do item de configuração.
configurationItem.awsAccountId principal.user.userid O ID da conta da AWS do item de configuração.
configurationItem.awsRegion target.asset.location.country_or_region A região da AWS do item de configuração.
configurationItem.configuration.complianceType security_result.summary O tipo de conformidade do item de configuração.
configurationItem.configuration.configRuleList[].complianceType security_result.summary Estado de conformidade para cada regra de configuração.
configurationItem.configuration.configRuleList[].configRuleArn security_result.rule_id O ARN da regra do AWS Config.
configurationItem.configuration.configRuleList[].configRuleId security_result.about.labels.configRuleId O ID da regra do AWS Config.
configurationItem.configuration.configRuleList[].configRuleName security_result.rule_name O nome da regra do AWS Config.
configurationItem.configuration.privateIpAddress target.ip O endereço IP privado do item de configuração.
configurationItem.configuration.publicIpAddress target.ip O endereço IP público do item de configuração.
configurationItem.configurationItemCaptureTime target.asset.attribute.creation_time A hora de captura do item de configuração, convertida numa data/hora.
configurationItem.configurationItemStatus target.asset.attribute.labels.Configuration Item Status O estado do item de configuração.
configurationItem.relationships[].resourceId target.asset.attribute.cloud.vpc.id O ID do recurso relacionado, usado para o ID da VPC se corresponder a vpc.
configurationItem.resourceId target.resource.id O ID do recurso do item de configuração.
configurationItem.resourceName target.resource.name O nome do recurso.
configurationItem.resourceType target.resource.resource_subtype O tipo de recurso do item de configuração.
configurationItem.tags.Contact principal.user.user_display_name OU principal.user.email_addresses Detalhes de contacto extraídos de etiquetas, analisados para email e nome de utilizador.
configurationItem.tags.OS/configurationItem.tags.Os target.asset.platform_software.platform O sistema operativo das etiquetas, mapeado para a plataforma se for Windows ou Linux.
configurationItemDiff.changeType metadata.event_type O tipo de alteração, mapeado para RESOURCE_WRITTEN ou RESOURCE_CREATION.
detail.accountId principal.group.product_object_id O ID da conta da AWS associado à descoberta.
detail.actionDescription detail.actionName detail.description sec_result.description A descrição da descoberta.
detail.findings[].AwsAccountId principal.group.product_object_id O ID da conta da AWS associado à descoberta.
detail.findings[].CompanyName detail.findings[].CreatedAt detail.findings[].Description sec_result.description A descrição da descoberta.
detail.findings[].FindingProviderFields.Severity.Label sec_result.severity A etiqueta de gravidade da descoberta, convertida em letras maiúsculas.
detail.findings[].FindingProviderFields.Types[] detail.findings[].FirstObservedAt detail.findings[].GeneratorId detail.findings[].Id detail.findings[].LastObservedAt detail.findings[].ProductArn detail.findings[].ProductFields. Veja abaixo Vários campos usados para campos adicionais, principal e informações de destino.
detail.findings[].ProductName detail.findings[].RecordState detail.findings[].Region target.location.name A região da AWS da descoberta.
detail.findings[].Resources[].Details. Veja abaixo Detalhes sobre os recursos envolvidos na descoberta.
detail.findings[].Resources[].Id target.resource.product_object_id O ID do recurso.
detail.findings[].Resources[].Partition detail.findings[].Resources[].Region target.location.name A região da AWS do recurso.
detail.findings[].Resources[].Tags detail.findings[].Resources[].Type target.resource.resource_type, target.resource.resource_subtype, metadata.event_type O tipo de recurso, usado para o mapeamento do tipo de recurso, subtipo e tipo de evento.
detail.findings[].Sample detail.findings[].SchemaVersion detail.findings[].Severity.Label detail.findings[].SourceUrl detail.findings[].Title sec_result.summary O título da descoberta.
detail.findings[].Types[] detail.findings[].UpdatedAt detail.findings[].Workflow.Status detail.findings[].WorkflowState detail-type metadata.product_event_type O tipo de detalhe do evento.
id metadata.product_log_id O ID do evento.
region target.location.name A região da AWS do evento.
resources[] source time version (lógica do analisador) metadata.event_timestamp A hora de criação da entrada do registo original, usada como data/hora do evento.
(Lógica do analisador) metadata.log_type Definido como AWS_SECURITY_HUB.
(Lógica do analisador) metadata.product_name Definido como AWS Security Hub.
(Lógica do analisador) metadata.vendor_name Definido como AMAZON.
(Lógica do analisador) target.asset.attribute.cloud.environment Definido como AMAZON_WEB_SERVICES.
(Lógica do analisador) metadata.event_type Definido como USER_RESOURCE_ACCESS por predefinição se não for mapeado a partir de Resources[].Type ou configurationItemDiff.changeType. Definido como STATUS_UPDATE se configurationItems estiver presente e nenhum outro tipo de evento estiver definido. Defina como RESOURCE_READ se configurationItem ou configurationItems estiver presente e o estado for OK ou ResourceDiscovered. Defina como RESOURCE_DELETION se configurationItem ou configurationItems estiver presente e o estado for ResourceDeleted.
(Lógica do analisador) metadata.description Definido como guardduty se detail.findings[].ProductFields.aws/guardduty/service/serviceName estiver presente.
(Lógica do analisador) target.asset.attribute.cloud.vpc.resource_type Definido como VPC_NETWORK se configurationItems.relationships[].resourceId corresponder a vpc.
(Lógica do analisador) target.resource.resource_type Defina como VIRTUAL_MACHINE se configurationItem ou configurationItems estiver presente. Definido como UNSPECIFIED se não estiver definido nenhum outro tipo de recurso.
(Lógica do analisador) target.asset.platform_software.platform Definido como WINDOWS ou LINUX com base na presença de Windows ou (Linux|LINUX) na mensagem para configurationItem. Para configurationItems, a definição baseia-se em configItem.tags.OS ou configItem.tags.Os.
(Lógica do analisador) disambiguation_key Adicionado quando são gerados vários eventos a partir de uma única entrada de registo.

Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais da Google SecOps.