Coletar registros da Central de Segurança da AWS
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
- Crie um bucket do Amazon S3 seguindo este guia do usuário: Criar um bucket.
- Salve o Nome e a Região do bucket para uso futuro.
- 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 futuro.
- 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
Criar uma função Lambda
- Faça login no Console de Gerenciamento da AWS.
- Acesse Lambda.
- Clique em Criar função e selecione Autor do zero.
- Dê um nome à função, por exemplo,
SecurityHubToS3
. - Escolha Python 3.x para o ambiente de execução.
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') }
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
- Faça login no Console de Gerenciamento da AWS.
- Na barra de pesquisa, digite e selecione Security Hub na lista de serviços.
- Clique em Configurações.
- Na seção Integrations, encontre EventBridge e clique em Enable.
- Na barra de pesquisa, digite e selecione EventBridge na lista de serviços.
- No console da EventBridge, clique em Regras > Criar regra.
- Forneça a seguinte configuração de regra:
- Nome da regra: forneça um nome descritivo para a regra. Por exemplo, SendSecurityHubFindingsToS3.
- Origem do evento: selecione Serviços da AWS.
- Nome do serviço: escolha Hub de segurança.
- Tipo de evento: selecione Descobertas do hub de segurança.
- Definir o destino: escolha Função Lambda.
- Selecione a função Lambda que você acabou de criar (
SecurityHubToS3
).
- Clique em Criar.
Configurar um feed no Google SecOps para ingerir registros do AWS Security Hub
- Acesse Configurações do SIEM > Feeds.
- Clique em Adicionar novo.
- No campo Nome do feed, insira um nome para o feed, por exemplo, AWS Security Hub Logs.
- Selecione Amazon S3 como o Tipo de origem.
- Selecione AWS Security Hub como o Tipo de registro.
- Clique em Próxima.
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.
- Substitua
- 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.
Clique em Próxima.
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 deGENERIC_EVENT
paraUSER_RESOURCE_ACCESS
.
2023-03-24
Melhoria:
- Quando
detail.findings.0.Resources.0.Type
==AwsEcsTaskDefinition
: target.resource.resource_type
foi mapeado paraTASK
.event_type
foi mapeado paraUSER_RESOURCE_ACCESS
.detail.findings.0.ProductFields.Resources:0/Id
foi mapeado paraprincipal.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
paraAMAZON
. - O nome do produto foi atualizado de
AWS SECURITY HUB
paraAWS Security Hub
. - Analisado Os novos registros de formato JSON contêm
configurationItem
ouconfigurationItems
. - 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.