Coletar registros da Central de Segurança da AWS
Neste documento, explicamos como ingerir registros do AWS Security Hub no Google Security Operations. O AWS Security Hub oferece uma visão abrangente de alertas e descobertas de segurança em contas da AWS. Ao enviar essas descobertas para o Google SecOps, você pode usar os recursos dele para melhorar o monitoramento e a detecção de ameaças.
Antes de começar
Verifique se você atende aos seguintes pré-requisitos:
- Instância do Google SecOps
- Acesso privilegiado à AWS
Configurar o AWS IAM e o S3
- Crie um bucket do Amazon S3 seguindo este guia do usuário: Como criar um bucket.
- Salve o Nome e a Região do bucket para uso posterior.
- 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 posterior.
- 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 Criar do zero.
- Dê um nome à função, por exemplo,
SecurityHubToS3
. - Escolha Python 3.x para o ambiente de execução.
Insira o código do Lambda que extrai 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) # 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 do Lambda adicionando uma função do IAM à função do 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 a Central de segurança da AWS 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 Integrações, encontre EventBridge e clique em Ativar.
- Na barra de pesquisa, digite e selecione EventBridge na lista de serviços.
- No console do EventBridge, clique em Regras > Criar regra.
- Forneça a seguinte configuração de regra:
- Nome da regra: informe um nome descritivo para a regra, por exemplo, SendSecurityHubFindingsToS3.
- Origem do evento: selecione Serviços da AWS.
- Nome do serviço: escolha Security Hub.
- Tipo de evento: selecione Descobertas do Security Hub.
- Defina o destino: escolha Função Lambda.
- Selecione a função Lambda que você acabou de criar (
SecurityHubToS3
).
- Clique em Criar.
Configurar feeds
Há dois pontos de entrada diferentes para configurar feeds na plataforma do Google SecOps:
- Configurações do SIEM > Feeds > Adicionar novo
- Central de conteúdo > Pacotes de conteúdo > Começar
Como configurar o feed da Central de Segurança da AWS
- Clique no pacote Amazon Cloud Platform.
- Localize o tipo de registro Central de Segurança da AWS.
Especifique os valores nos campos a seguir.
- Tipo de origem: Amazon SQS V2
- Nome da fila: o nome da fila do SQS de onde ler.
- URI do S3: o URI do bucket.
s3://your-log-bucket-name/
- Substitua
your-log-bucket-name
pelo nome real do seu bucket do S3.
- Substitua
Opções de exclusão de origem: selecione a opção de exclusão de acordo com suas preferências de ingestão.
Idade máxima do arquivo: inclui arquivos modificados no último número de dias. O padrão é de 180 dias.
ID da chave de acesso à fila do SQS: uma chave de acesso à conta que é uma string alfanumérica de 20 caracteres.
Chave de acesso secreta da fila do SQS: uma chave de acesso da conta que é uma string alfanumérica de 40 caracteres.
Opções avançadas
- Nome do feed: um valor pré-preenchido que identifica o feed.
- Namespace do recurso: namespace associado ao feed.
- Rótulos de ingestão: rótulos aplicados a todos os eventos deste feed.
Clique em Criar feed.
Para mais informações sobre como configurar vários feeds para diferentes tipos de registros nessa família de produtos, consulte Configurar feeds por produto.
Tabela de mapeamento da UDM
Campo de registro | Mapeamento do UDM | Lógica |
---|---|---|
account |
principal.group.product_object_id |
O ID da conta da AWS associada à 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 compliance 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 de 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 de tags e 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 associada à 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 associada à 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 informações adicionais, 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 mapeamento de tipo, 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 |
O horário de criação da entrada de registro original, usado como carimbo de data/hora do evento. |
(Lógica do analisador) | metadata.log_type |
Defina como AWS_SECURITY_HUB . |
(Lógica do analisador) | metadata.product_name |
Defina como AWS Security Hub . |
(Lógica do analisador) | metadata.vendor_name |
Defina como AMAZON . |
(Lógica do analisador) | target.asset.attribute.cloud.environment |
Defina como AMAZON_WEB_SERVICES . |
(Lógica do analisador) | metadata.event_type |
Definido como USER_RESOURCE_ACCESS por 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 . |
(Lógica do analisador) | metadata.description |
Defina como guardduty se detail.findings[].ProductFields.aws/guardduty/service/serviceName estiver presente. |
(Lógica do analisador) | target.asset.attribute.cloud.vpc.resource_type |
Defina 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. Defina como UNSPECIFIED se nenhum outro tipo de recurso estiver definido. |
(Lógica do analisador) | 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 . |
(Lógica do analisador) | disambiguation_key |
Adicionado quando vários eventos são gerados de uma única entrada de registro. |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.