Coletar registros do AWS CloudTrail

Versão do analisador:30.0

Compatível com:

Este documento descreve como coletar registros do AWS CloudTrail configurando um feed do Google Security Operations e como os campos de registro são mapeados para os campos do modelo de dados unificado (UDM) do Google SecOps.

Para mais informações, consulte Ingestão de dados no Google SecOps.

Uma implantação típica consiste no AWS CloudTrail e no feed do Google SecOps configurado para enviar registros ao Google SecOps. Sua implantação pode ser diferente da implantação típica descrita neste documento. A implantação contém os seguintes componentes:

  • AWS CloudTrail: a plataforma que coleta registros.

  • AWS S3: a plataforma que armazena registros.

  • Feed do Google SecOps: o feed do Google SecOps que busca registros do AWS S3 e os grava no Google SecOps.

  • Google SecOps: a plataforma que retém e analisa os registros do AWS CloudTrail.

Um rótulo de ingestão identifica o analisador que normaliza dados de registro brutos para o formato UDM estruturado. As informações neste documento se aplicam ao analisador com o rótulo de ingestão AWS_CLOUDTRAIL.

Antes de começar

Verifique se você tem os pré-requisitos a seguir:

  • Conta da AWS
  • os pré-requisitos para usar o AWS CloudTrail sejam atendidos. Para mais informações, consulte Configuração do AWS CloudTrail.
  • Todos os sistemas na arquitetura de implantação usam o fuso horário UTC.

Etapas básicas para ingerir registros do S3 com o SQS

Nesta seção, descrevemos as etapas básicas para ingerir registros do AWS CloudTrail na instância do Google SecOps. As etapas descrevem como fazer isso usando o Amazon S3 com o Amazon SQS como o tipo de fonte de feed.

Configurar o AWS CloudTrail e o S3

Neste procedimento, você vai configurar os registros do AWS CloudTrail para serem gravados em um bucket do S3.

  1. No console da AWS, pesquise CloudTrail.
  2. Clique em Criar trilha.
  3. Forneça um Nome do rastreamento.
  4. Selecione Criar bucket do S3. Você também pode usar um bucket do S3.
  5. Forneça um nome para o alias do KMS da AWS ou escolha uma chave do KMS da AWS.
  6. Você pode deixar as outras configurações como padrão e clicar em Próxima.
  7. Escolha Tipo de evento, adicione Eventos de dados conforme necessário e clique em Próxima.
  8. Revise as configurações em Revisar e criar e clique em Criar trilha.
  9. No console da AWS, pesquise Buckets do Amazon S3.
  10. Clique no bucket de registros recém-criado e selecione a pasta AWSLogs. Em seguida, clique em Copiar URI do S3 e salve para usar nas etapas a seguir.

Configurar uma fila padrão do SQS e o SNS

Se você usar uma fila do SQS, ela precisa ser uma fila padrão, não uma fila PEPS.

  1. Ative o AWS CloudTrail e configure-o para entregar registros em um bucket do S3 usando uma trilha nova ou atual.
  2. Abra o console do AWS SNS e crie um novo tópico padrão. Nomeie-o, por exemplo, CloudTrail-Notification-Topic.
  3. Crie uma fila do SQS usando o console do AWS SQS, por exemplo, CloudTrail-Notification-Queue, e atualize a política de acesso dela para permitir que o ARN do tópico do SNS envie mensagens. Para detalhes sobre como criar filas do SQS, consulte Primeiros passos com o Amazon SQS.

    Exemplo de snippet de política do SQS:

    {
       "Version": "2012-10-17",
       "Id": `PolicyForSNS`,
       "Statement": [
          {
             "Sid": "AllowSNS",
             "Effect": "Allow",
             "Principal": { "Service": "sns.amazonaws.com" },
             "Action": "SQS:SendMessage",
             "Resource": "arn:aws:sqs:REGION:ACCOUNT_ID:CloudTrail-Notification-Queue",
             "Condition": {
             "ArnEquals": { "aws:SourceArn": "arn:aws:sns:REGION:ACCOUNT_ID:CloudTrail-Notification-Topic"}
             }
          }
       ]
    }
    
  4. Acesse Tópico do SNS → Assinaturas → Criar assinatura, defina o protocolo como SQS e o endpoint como o ARN da fila do SQS.

  5. O CloudTrail não envia novos registros para o SNS de forma nativa. Para ativar as notificações, use um seletor de eventos do CloudTrail para eventos de gerenciamento ou a integração do CloudTrail com os registros do CloudWatch. Em seguida, crie uma regra de evento do CloudWatch que acione as notificações definindo um tópico do SNS como destino. Para mais detalhes, consulte Configurar notificações no bucket do S3.

    Exemplo de padrão de evento:

    {
       "source": ["aws.s3"],
       "detail-type": ["AWS API Call via CloudTrail"],
       "detail": {
          "eventName": ["PutObject"],
          "requestParameters": {
             "bucketName": [`CloudTrail-Notification-Topic`]
          }
       }
    }
    
  6. Verifique se as funções ou políticas do IAM permitem que o CloudWatch Events publique no SNS e se o SNS pode enviar mensagens para o SQS.

Configurar o usuário do AWS IAM

Configure um usuário do IAM da AWS que o Google SecOps vai usar para acessar a fila do SQS (se usada) e o bucket do S3.

  1. No console da AWS, pesquise IAM.
  2. Clique em Usuários e, na tela seguinte, em Criar usuários.
  3. Dê um nome ao usuário, por exemplo, chronicle-feed-user, e selecione Provide user access to the AWS Management Console.
  4. Selecione Anexar políticas atuais diretamente e escolha AmazonS3ReadOnlyAccess ou AmazonS3FullAccess, conforme necessário. AmazonS3FullAccess será usado se o Google SecOps precisar limpar os buckets do S3 depois de ler os registros para otimizar os custos de armazenamento do AWS S3.
  5. Como uma alternativa recomendada à etapa anterior, é possível restringir ainda mais o acesso apenas ao bucket do S3 especificado criando uma política personalizada. Clique em Criar política e siga a documentação da AWS para criar uma política personalizada.
  6. Ao aplicar uma política, inclua sqs:DeleteMessage. O Google SecOps não consegue excluir mensagens se a permissão sqs:DeleteMessage não estiver anexada à fila do SQS. Todas as mensagens são acumuladas no lado da AWS, o que causa um atraso porque o Google SecOps tenta transferir os mesmos arquivos repetidamente.
  7. Clique em Próxima:tags.
  8. Adicione tags, se necessário, e clique em Próxima:revisar.
  9. Revise a configuração e clique em Criar usuário.
  10. Depois que o usuário for criado, acesse a guia Credenciais de segurança e clique em Criar chave de acesso.
  11. Escolha CLI e clique em Próxima:tags.
  12. Adicione as tags necessárias e clique em Criar chave de acesso: revisar.
  13. Copie o ID da chave de acesso e a chave de acesso secreta do usuário criado para usar na próxima etapa.

    Para encontrar o SubjectID, siga estas etapas:

    1. Inicie o processo de configuração do feed do AWS CloudTrail no Google SecOps.
    2. Acesse o bucket designado do Amazon S3 e analise os registros do AWS CloudTrail em busca de entradas relacionadas à tentativa de configuração do feed.
    3. Abra a entrada de registro relevante e procure a seção userIdentity nos dados JSON brutos.
    4. Nessa seção, localize o campo principalId ou userName. O valor numérico listado aqui é seu SubjectID exclusivo.
    5. Copie esse SubjectID e adicione-o à política de confiança do papel do IAM da AWS para conceder as permissões de acesso necessárias.

Como configurar permissões de chave do KMS

Uma chave do KMS é necessária para descriptografar os registros do CloudTrail, que são criptografados do lado do servidor. O AWS KMS oferece criptografia e segurança aprimoradas para dados sensíveis armazenados no Amazon S3.

  1. No console da AWS, pesquise serviço de gerenciamento de chaves (KMS).
  2. Clique em Criar chave:Próxima.
  3. Adicione um Alias para a chave. Se quiser, adicione uma Descrição e Tags. Clique em PRÓXIMO: REVISAR.
  4. Depois de revisar a configuração, clique em Próxima.
  5. Selecione os Usuários da chave que devem ter acesso a ela e clique em Concluir.

Configurar feeds

Há dois pontos de entrada diferentes para configurar feeds na plataforma do Google SecOps:

  • Configurações do SIEM > Feeds > Adicionar novo
  • Hub de conteúdo > Pacotes de conteúdo > Comece já

Como configurar o feed do AWS CloudTrail

  1. Clique no pacote Amazon Cloud Platform.
  2. No tipo de registro AWS CloudTrail, especifique os seguintes valores:
  3. Especifique valores para os seguintes campos:

    • 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.
    • Opções de exclusão da fonte: selecione a opção de exclusão de acordo com suas preferências de ingestão.

    • Idade máxima do arquivo: inclui arquivos modificados nos últimos 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.
  4. Clique em Criar feed.

Para mais informações sobre como configurar vários feeds para diferentes tipos de registro nessa família de produtos, consulte Configurar feeds por produto.

Tipos de registros do AWS CloudTrail compatíveis

O analisador do AWS CloudTrail é compatível com os seguintes serviços:

  • apigateway.amazonaws.com
  • appconfig.amazonaws.com
  • autoscaling.amazonaws.com
  • cloud9.amazonaws.com
  • cloudsearch.amazonaws.com
  • cloudshell.amazonaws.com
  • cloudtrail.amazonaws.com
  • config.amazonaws.com
  • devicefarm.amazonaws.com
  • ds.amazonaws.com
  • dynamodb.amazonaws.com
  • ec2-instance-connect.amazonaws.com
  • ec2.amazonaws.com
  • ecr-public.amazonaws.com
  • ecr.amazonaws.com
  • ecs.amazonaws.com
  • eks.amazonaws.com
  • elasticache.amazonaws.com
  • elasticloadbalancing.amazonaws.com
  • firehose.amazonaws.com
  • guardduty.amazonaws.com
  • health.amazonaws.com
  • iam.amazonaws.com
  • imagebuilder.amazonaws.com
  • kinesis.amazonaws.com
  • kinesisanalytics.amazonaws.com
  • kinesisvideo.amazonaws.com
  • kms.amazonaws.com
  • lambda.amazonaws.com
  • logs.amazonaws.com
  • macie2.amazonaws.com
  • monitoring.amazonaws.com
  • network-firewall.amazonaws.com
  • organizations.amazonaws.com
  • quicksight.amazonaws.com
  • ram.amazonaws.com
  • rds.amazonaws.com
  • resource-explorer-2.amazonaws.com
  • resource-groups.amazonaws.com
  • route53-recovery-readiness.amazonaws.com
  • route53.amazonaws.com
  • route53domains.amazonaws.com
  • route53resolver.amazonaws.com
  • s3-outposts.amazonaws.com
  • s3.amazonaws.com
  • s3express.amazonaws.com
  • secretsmanager.amazonaws.com
  • securityhub.amazonaws.com
  • ses.amazonaws.com
  • signin.amazonaws.com
  • ssm.amazonaws.com
  • sts.amazonaws.com
  • waf-regional.amazonaws.com
  • waf.amazonaws.com
  • wafv2.amazonaws.com

Formatos de registro do AWS CloudTrail compatíveis

O analisador do AWS CloudTrail é compatível com registros no formato JSON.

Registros de amostra do AWS CloudTrail compatíveis

  • JSON:

    {
      "Records": [{
          "eventVersion": "1.08",
          "userIdentity": {
              "type": "AssumedRole",
              "principalId": "AROAXELJRGZMPHEYTK4Q4:redlock",
              "arn": "arn:aws:sts::111111111111:assumed-role/PrismaCloudReadOnlyRole/redlock",
              "accountId": "111111111111",
              "accessKeyId": "ASIAXELJRGZMNUCV3DC4",
              "sessionContext": {
                  "sessionIssuer": {
                      "type": "Role",
                      "principalId": "AROAXELJRGZMPHEYTK4Q4",
                      "arn": "arn:aws:iam::111111111111:role/PrismaCloudReadOnlyRole",
                      "accountId": "111111111111",
                      "userName": "PrismaCloudReadOnlyRole"
                  },
                  "webIdFederationData": {},
                  "attributes": {
                      "creationDate": "2021-07-01T03:20:01Z",
                      "mfaAuthenticated": "false"
                  }
              }
          },
          "eventTime": "2021-07-01T03:35:42Z",
          "eventSource": "kms.amazonaws.com",
          "eventName": "DescribeKey",
          "awsRegion": "eu-west-1",
          "sourceIPAddress": "198.51.100.0",
          "userAgent": "aws-sdk-java/1.11.1025Linux/4.14.232-176.381.amzn2.x86_64OpenJDK_64-Bit_Server_VM/11.0.10+9java/11.0.10groovy/2.5.12vendor/AdoptOpenJDKcfg/retry-mode/legacy",
          "requestParameters": {
              "keyId": "11a011a1-1010-11a1-a0aa-c4e1a9367642"
          },
          "responseElements": null,
          "requestID": "11a011a1-1010-11a1-a0aa-604ac86fc50e",
          "eventID": "11a011a1-1010-11a1-a0aa-17ef2bdeb889",
          "readOnly": true,
          "resources": [{
              "accountId": "111111111111",
              "type": "AWS::KMS::Key",
              "ARN": "arn:aws:kms:eu-west-1:111111111111:key/11a011a1-1010-11a1-a0aa-c4e1a9367642"
          }],
          "eventType": "AwsApiCall",
          "managementEvent": true,
          "recipientAccountId": "111111111111",
          "eventCategory": "Management"
      }]
    }
    

Para mais informações sobre o mapeamento de campos e o mapeamento de UDM, consulte Mapeamento de campos do AWS CloudTrail.

Registro de alterações

Confira o registro de alterações deste analisador

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