Coletar registros da AWS Control Tower
Este documento explica como ingerir registros da AWS Control Tower no Google Security Operations. A AWS Control Tower permite governança, compliance e monitoramento de segurança em várias contas da AWS. Com essa integração, é possível analisar registros da AWS Control Tower para melhorar a visibilidade e a postura de segurança.
Antes de começar
Verifique se você atende aos seguintes pré-requisitos:
- Instância do Google SecOps
- Acesso privilegiado à AWS
Configurar o bucket do Amazon 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 as políticas AmazonS3FullAccess e CloudWatchLogsFullAccess.
- Clique em Próxima.
- Clique em Adicionar permissões
Configurar o CloudTrail na AWS Control Tower
- Faça login no Console de Gerenciamento da AWS.
- Acesse a AWS Control Tower.
- Na barra de pesquisa, digite CloudTrail e selecione na lista de serviços.
Clique em Criar rastreamento para criar um novo rastreamento.
Especifique as configurações de rastreamento:
- Nome do rastreamento: forneça um nome significativo para o rastreamento (por exemplo, ControlTowerTrail).
- Aplicar o rastreamento a todas as regiões: selecione Sim em Aplicar o rastreamento a todas as regiões.
- Eventos de gerenciamento: verifique se os eventos de Leitura/gravação estão definidos como Todos.
- Opcional: Eventos de dados: ative os eventos de dados do S3 e do Lambda para capturar atividades detalhadas.
- Opcional: Validação de arquivos de registro: ative essa opção para garantir que os arquivos de registro não sejam adulterados depois de armazenados.
No seletor Evento, escolha registrar Eventos de gerenciamento e Eventos de dados.
Como configurar o CloudTrail
- Acesse o console do IAM da AWS.
- Clique em Funções.
- Procure a função que o CloudTrail usa
AWSServiceRoleForCloudTrail
. Ela é criada automaticamente quando você configura o CloudTrail. - Na guia Permissões da função, clique em Anexar políticas.
- Pesquisar por
CloudTrailS3DeliveryPolicy
. - Marque a caixa de seleção ao lado da política de
CloudTrailS3DeliveryPolicy
. - Clique em Anexar política.
- Acesse o console do CloudTrail da AWS.
- Na seção Local de armazenamento, selecione S3 como o destino dos arquivos de registro.
- Selecione o bucket do S3 que você criou anteriormente.
- Clique em Permitir quando solicitado para conceder ao CloudTrail permissão para gravar registros no bucket escolhido.
- Revise as configurações e clique em Criar (ou Salvar alterações se você estiver editando um rastreamento atual).
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 AWS Control Tower
- Clique no pacote Amazon Cloud Platform.
- Localize o tipo de registro AWS Control Tower.
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 da UDM | Lógica |
---|---|---|
awsAccountId | target.user.group_identifiers | O ID da conta da AWS associada ao evento. |
digestPublicKeyFingerprint | target.file.sha1 | A impressão digital da chave pública usada para assinar o resumo. |
digestPublicKeyFingerprint | target.resource.attribute.labels.value | A impressão digital da chave pública usada para assinar o resumo. |
digestS3Bucket | target.resource.name | O nome do bucket do S3 em que o resumo está armazenado. |
digestS3Object | target.file.full_path | O caminho para o objeto de resumo no bucket do S3. |
digestSignatureAlgorithm | network.tls.cipher | O algoritmo usado para assinar o resumo. |
digestSignatureAlgorithm | target.resource.attribute.labels.value | O algoritmo usado para assinar o resumo. |
digestStartTime | metadata.event_timestamp | O horário de início do período do resumo. Usado como horário do evento se eventTime não estiver disponível. |
eventCategory | security_result.category_details | A categoria do evento. |
eventID | metadata.product_log_id | O ID exclusivo do evento. |
eventName | metadata.product_event_type | O nome do evento. |
eventName | security_result.summary | O nome do evento, usado para gerar o resumo do resultado de segurança. |
eventSource | target.application | A origem do evento. |
eventTime | metadata.event_timestamp | Hora em que o evento ocorreu |
eventType | additional.fields.value.string_value | O tipo do evento. |
logFiles.hashValue | about.file.sha256 | O hash SHA-256 do arquivo de registro. |
logFiles.s3Bucket | about.resource.name | O nome do bucket do S3 em que o arquivo de registro está armazenado. |
logFiles.s3Object | about.file.full_path | O caminho para o objeto do arquivo de registros no bucket do S3. |
previousDigestHashValue | target.file.sha256 | O hash SHA-256 do resumo anterior. |
recipientAccountId | target.resource.attribute.labels.value | O ID da conta da AWS do destinatário do evento. |
Records.awsRegion | principal.location.name | A região da AWS em que o evento ocorreu. |
Records.errorCode | security_result.rule_id | O código do erro, se houver, associado à solicitação. |
Records.errorMessage | security_result.description | A mensagem de erro, se houver, associada à solicitação. |
Records.eventCategory | security_result.category_details | A categoria do evento. |
Records.eventID | metadata.product_log_id | O ID exclusivo do evento. |
Records.eventName | metadata.product_event_type | O nome do evento. |
Records.eventName | security_result.summary | O nome do evento, usado para gerar o resumo do resultado de segurança. |
Records.eventSource | target.application | A origem do evento. |
Records.eventTime | metadata.event_timestamp | Hora em que o evento ocorreu |
Records.eventType | additional.fields.value.string_value | O tipo do evento. |
Records.requestID | target.resource.attribute.labels.value | O ID da solicitação. |
Records.requestParameters.groupName | target.group.group_display_name | O nome do grupo, se houver, associado à solicitação. |
Records.requestParameters.userName | src.user.userid | O nome do usuário, se houver, associado à solicitação. |
Records.requestParameters.userName | src.user.user_display_name | O nome do usuário, se houver, associado à solicitação. |
Records.responseElements.ConsoleLogin | security_action | O resultado da tentativa de login no console. |
Records.responseElements.ConsoleLogin | security_result.summary | O resultado da tentativa de login no console, usado para gerar o resumo dos resultados de segurança. |
Records.sourceIPAddress | principal.hostname | O endereço IP do principal. Usado como nome do host se não for um IP válido. |
Records.sourceIPAddress | principal.ip | O endereço IP do principal. |
Records.tlsDetails.cipherSuite | network.tls.cipher | O pacote de criptografia usado para a conexão TLS. |
Records.tlsDetails.tlsVersion | network.tls.version | A versão do TLS usada para a conexão. |
Records.userAgent | network.http.user_agent | O user agent da solicitação. |
Records.userIdentity.accessKeyId | additional.fields.value.string_value | O ID da chave de acesso usado para a solicitação. |
Records.userIdentity.accountId | principal.user.group_identifiers | O ID da conta da AWS do usuário. |
Records.userIdentity.arn | principal.user.attribute.labels.value | O ARN do usuário. |
Records.userIdentity.arn | target.user.userid | O ARN do usuário. Usado como userid se userName não estiver disponível. |
Records.userIdentity.principalId | principal.user.product_object_id | O ID principal do usuário. |
Records.userIdentity.sessionContext.attributes.mfaAuthenticated | principal.user.attribute.labels.value | Indica se a MFA foi usada na solicitação. |
Records.userIdentity.sessionContext.sessionIssuer.userName | principal.user.userid | O nome de usuário que emitiu a sessão. |
Records.userIdentity.type | principal.resource.type | O tipo de identidade usado para a solicitação. |
Records.userIdentity.userName | target.user.userid | O nome de usuário. |
- | extensions.auth.mechanism | Defina como "REMOTE". |
- | metadata.event_type | Defina como "STATUS_UPDATE", "USER_RESOURCE_ACCESS", "USER_LOGIN" ou "GENERIC_EVENT" com base no eventName. |
- | metadata.log_type | Defina como "AWS_CONTROL_TOWER". |
- | metadata.product_name | Defina como "AWS Control Tower". |
- | metadata.vendor_name | Defina como "AWS". |
- | principal.asset.attribute.cloud.environment | Defina como "AMAZON_WEB_SERVICES". |
- | security_result.action | Defina como "ALLOW" ou "BLOCK" com base no errorCode. |
- | security_result.severity | Defina como "INFORMATIONAL". |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.