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
- Central de conteúdo > Pacotes de conteúdo
Configure feeds em Configurações do SIEM > Feeds
Para configurar vários feeds para diferentes tipos de registros nessa família de produtos, consulte Configurar vários feeds.
Para configurar um único feed, siga estas etapas:
- Acesse Configurações do SIEM > Feeds.
- Clique em Adicionar novo feed.
- Na próxima página, clique em Configurar um único feed.
- No campo Nome do feed, insira um nome para o feed, por exemplo, Registros do AWS Security Hub.
- 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 seu bucket do S3.
- Substitua
- URI é um: selecione Diretório ou Diretório que inclui subdiretórios, dependendo da estrutura do bucket.
Opções de exclusão de origem: selecione a opção de exclusão de acordo com suas preferências de ingestão.
ID da chave de acesso: a chave de acesso do usuário com permissões para ler do bucket do S3.
Chave de acesso secreta: a chave secreta do usuário com permissões para ler do bucket do S3.
Namespace do recurso: o namespace do recurso.
Rótulos de ingestão: o rótulo a ser aplicado aos eventos deste feed.
Clique em Próxima.
Revise a nova configuração do feed na tela Finalizar e clique em Enviar.
Configurar feeds na Central de conteúdo
Especifique valores para os seguintes campos:
- 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 seu bucket do S3.
- Substitua
- URI é um: selecione Diretório ou Diretório que inclui subdiretórios, dependendo da estrutura do bucket.
- Opções de exclusão de origem: selecione a opção de exclusão de acordo com suas preferências de ingestão.
ID da chave de acesso: a chave de acesso do usuário com permissões para ler do bucket do S3.
Chave de acesso secreta: a chave secreta do usuário com permissões para ler do bucket do S3.
Opções avançadas
- Nome do feed: um valor pré-preenchido que identifica o feed.
- Tipo de origem: método usado para coletar registros no Google SecOps.
- Namespace do recurso: namespace associado ao feed.
- Rótulos de ingestão: rótulos aplicados a todos os eventos deste feed.
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 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.