Coletar registros da Central de Segurança da AWS

Compatível com:

Este documento explica como transferir os registros do AWS Security Hub para o Google Security Operations. O AWS Security Hub oferece uma visão abrangente dos alertas e descobertas de segurança em todas as contas da AWS. Ao enviar essas descobertas para o Google SecOps, você pode usar os recursos do Google SecOps para melhorar o monitoramento e a detecção de ameaças.

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

  1. Crie um bucket do Amazon S3 seguindo este guia do usuário: Criar um bucket.
  2. Salve o Nome e a Região do bucket para uso futuro.
  3. Crie um usuário seguindo este guia: Como criar um usuário do IAM.
  4. Selecione o Usuário criado.
  5. Selecione a guia Credenciais de segurança.
  6. Clique em Criar chave de acesso na seção Chaves de acesso.
  7. Selecione Serviço de terceiros como o caso de uso.
  8. Clique em Próxima.
  9. Opcional: adicione uma tag de descrição.
  10. Clique em Criar chave de acesso.
  11. Clique em Fazer o download do arquivo CSV para salvar a chave de acesso e a chave de acesso secreta para uso futuro.
  12. Clique em Concluído.
  13. Selecione a guia Permissões.
  14. Clique em Adicionar permissões na seção Políticas de permissões.
  15. Selecione Adicionar permissões.
  16. Selecione Anexar políticas diretamente.
  17. Pesquise e selecione a política AmazonS3FullAccess.
  18. Clique em Próxima.
  19. Clique em Adicionar permissões

Criar uma função Lambda

  1. Faça login no Console de Gerenciamento da AWS.
  2. Acesse Lambda.
  3. Clique em Criar função e selecione Autor do zero.
  4. Dê um nome à função, por exemplo, SecurityHubToS3.
  5. Escolha Python 3.x para o ambiente de execução.
  6. Insira o código da Lambda que recebe as descobertas do EventBridge e as grava no bucket 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, indent=4)
    
       # 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 as permissões para o Lambda adicionando uma função do 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/*"
          }
       ]
    }
    

Configurar o AWS Security Hub para encaminhar descobertas com o EventBridge

  1. Faça login no Console de Gerenciamento da AWS.
  2. Na barra de pesquisa, digite e selecione Security Hub na lista de serviços.
  3. Clique em Configurações.
  4. Na seção Integrations, encontre EventBridge e clique em Enable.
  5. Na barra de pesquisa, digite e selecione EventBridge na lista de serviços.
  6. No console da EventBridge, clique em Regras > Criar regra.
  7. Forneça a seguinte configuração de regra:
    1. Nome da regra: forneça um nome descritivo para a regra. Por exemplo, SendSecurityHubFindingsToS3.
    2. Origem do evento: selecione Serviços da AWS.
    3. Nome do serviço: escolha Hub de segurança.
    4. Tipo de evento: selecione Descobertas do hub de segurança.
    5. Definir o destino: escolha Função Lambda.
    6. Selecione a função Lambda que você acabou de criar (SecurityHubToS3).
  8. Clique em Criar.

Configurar um feed no Google SecOps para ingerir registros do AWS Security Hub

  1. Acesse Configurações do SIEM > Feeds.
  2. Clique em Adicionar novo.
  3. No campo Nome do feed, insira um nome para o feed, por exemplo, AWS Security Hub Logs.
  4. Selecione Amazon S3 como o Tipo de origem.
  5. Selecione AWS Security Hub como o Tipo de registro.
  6. Clique em Próxima.
  7. Especifique valores para os seguintes parâmetros de entrada:

    • Região: a região em que o bucket do Amazon S3 está localizado.
    • URI do S3: o URI do bucket.
      • s3://your-log-bucket-name/
        • Substitua your-log-bucket-name pelo nome real do bucket.
    • O URI é: selecione Diretório ou Diretório que inclui subdiretórios.
    • Opções de exclusão de origem: selecione a opção de exclusão de acordo com sua preferência.

    • 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 desse feed.

  8. Clique em Próxima.

  9. 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
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 compliance do item de configuração.
configurationItem.configuration.configRuleList[].complianceType security_result.summary Status de conformidade de 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 particular 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 O horário da captura do item de configuração, convertido em um carimbo de data/hora.
configurationItem.configurationItemStatus target.asset.attribute.labels.Configuration Item Status O status 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 contato extraídos das tags, analisados para e-mail e nome de usuário.
configurationItem.tags.OS / configurationItem.tags.Os target.asset.platform_software.platform O sistema operacional das tags, mapeado para a plataforma se for Windows ou Linux.
configurationItemDiff.changeType metadata.event_type O tipo de mudança, 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 O rótulo de gravidade da descoberta, convertido 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. Consulte abaixo Vários campos usados para campos adicionais, informações principais e 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. Consulte 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 de 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 detalhes 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 O horário de criação da entrada de registro original, usado como carimbo de data/hora do evento.
(Parser Logic) metadata.log_type Defina como AWS_SECURITY_HUB.
(Parser Logic) metadata.product_name Defina como AWS Security Hub.
(Parser Logic) metadata.vendor_name Defina como AMAZON.
(Parser Logic) target.asset.attribute.cloud.environment Defina como AMAZON_WEB_SERVICES.
(Parser Logic) metadata.event_type Defina como USER_RESOURCE_ACCESS como padrão se não for mapeado 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 status for OK ou ResourceDiscovered. Defina como RESOURCE_DELETION se configurationItem ou configurationItems estiver presente e o status for ResourceDeleted.
(Parser Logic) metadata.description Defina como guardduty se detail.findings[].ProductFields.aws/guardduty/service/serviceName estiver presente.
(Parser Logic) target.asset.attribute.cloud.vpc.resource_type Defina como VPC_NETWORK se configurationItems.relationships[].resourceId corresponder a vpc.
(Parser Logic) target.resource.resource_type Defina como VIRTUAL_MACHINE se configurationItem ou configurationItems estiver presente. Defina como UNSPECIFIED se nenhum outro tipo de recurso estiver definido.
(Parser Logic) target.asset.platform_software.platform Defina como WINDOWS ou LINUX com base na presença de Windows ou (Linux|LINUX) na mensagem para configurationItem. Para configurationItems, ele é definido com base em configItem.tags.OS ou configItem.tags.Os.
(Parser Logic) disambiguation_key Adicionado quando vários eventos são gerados a partir de uma única entrada de registro.

Alterações

2025-02-18

Melhoria:

  • Adição de suporte a uma nova matriz de formato de registro JSON.

2025-01-20

Melhoria:

  • Foi adicionado suporte ao novo formato de registro.

2025-01-16

Melhoria:

  • Adição de suporte a um novo formato de registro JSON.

2023-06-20

Melhoria:

  • metadata.event_type foi modificado de GENERIC_EVENT para USER_RESOURCE_ACCESS.

2023-03-24

Melhoria:

  • Quando detail.findings.0.Resources.0.Type == AwsEcsTaskDefinition:
  • target.resource.resource_type foi mapeado para TASK.
  • event_type foi mapeado para USER_RESOURCE_ACCESS.
  • detail.findings.0.ProductFields.Resources:0/Id foi mapeado para principal.asset_id.
  • Todos os outros registros com falha foram analisados como GENERIC_EVENT, porque STATUS_UPDATE não era uma boa opção de análise para eles.

2022-08-22

Melhoria:

  • O nome do fornecedor foi atualizado de AWS SECURITY HUB para AMAZON.
  • O nome do produto foi atualizado de AWS SECURITY HUB para AWS Security Hub.
  • Analisado Os novos registros de formato JSON contêm configurationItem ou configurationItems.
  • Processamos os registros que foram ingeridos como um arquivo de importação separando-os usando um loop e analisando cada um como eventos individuais.

2022-07-01

  • Analisador recém-criado.

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