Recolha registos do AWS Security Hub
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
- 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.
Crie uma função Lambda
- Inicie sessão na AWS Management Console.
- Aceda ao Lambda.
- Clique em Criar função e selecione Criar do zero.
- Indique um nome para a função; por exemplo,
SecurityHubToS3
. - Escolha Python 3.x para o tempo de execução.
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') }
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
- Inicie sessão na AWS Management Console.
- Na barra de pesquisa, escreva e selecione Security Hub na lista de serviços.
- Clique em Definições.
- Na secção Integrações, encontre EventBridge e clique em Ativar.
- Na barra de pesquisa, escreva e selecione EventBridge na lista de serviços.
- Na consola do EventBridge, clique em Regras > Criar regra.
- Forneça a seguinte configuração da regra:
- Nome da regra: indique um nome descritivo para a regra; por exemplo, SendSecurityHubFindingsToS3.
- Origem do evento: selecione Serviços da AWS.
- Nome do serviço: escolha Centro de segurança.
- Tipo de evento: selecione Resultados do Security Hub.
- Defina o destino: escolha Função Lambda.
- Selecione a função Lambda que acabou de criar (
SecurityHubToS3
).
- 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
- Clique no pacote Amazon Cloud Platform.
- Localize o tipo de registo AWS Security Hub.
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.
- Substitua
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.
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.