Coletando dados de fontes personalizadas - Amazon Security Lake

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Coletando dados de fontes personalizadas

O Amazon Security Lake pode coletar logs e eventos de fontes personalizadas de terceiros. Para cada fonte personalizada, o Security Lake trata do seguinte:

  • Fornece um prefixo exclusivo da fonte do bucket do Amazon S3.

  • Cria uma função no AWS Identity and Access Management (IAM) que permite que uma fonte personalizada grave dados no data lake. O limite de permissões para essa função é definido por uma política AWS gerenciada chamada AmazonSecurityLakePermissionsBoundary.

  • Cria uma AWS Lake Formation tabela para organizar os objetos que a fonte grava no Security Lake.

  • Configura um AWS Glue rastreador para particionar seus dados de origem. O rastreador o preenche AWS Glue Data Catalog com a mesa. Ele também descobre automaticamente novos dados da fonte e extrai definições do esquema.

Para adicionar uma fonte personalizada ao Security Lake, ela deve atender aos seguintes requisitos:

  1. Destino: a fonte personalizada deve ser capaz de gravar dados no Security Lake como um conjunto de objetos do S3 sob do prefixo atribuído à fonte. Para fontes que contêm várias categorias de dados, você deve fornecer cada classe de evento exclusiva do Open Cybersecurity Schema Framework (OCSF) como uma fonte separada. O Security Lake cria um perfil do IAM que permite que a fonte personalizada grave no local especificado em seu bucket do S3.

    nota

    Use a ferramenta de validação OCSF para verificar se a fonte personalizada é compatível com o. OCSF Schema 1.1

  2. Formato: cada objeto do S3 coletado da fonte personalizada deve ser formatado como um arquivo do Apache Parquet.

  3. Esquema: a mesma classe de evento do OCSF deve ser aplicada a cada registro em um objeto formatado em Parquet.

Melhores práticas para o consumo de fontes personalizadas

Para facilitar o processamento e a consulta eficientes de dados, recomendamos seguir estas melhores práticas ao adicionar uma fonte personalizada ao Security Lake:

Particionamento

Os objetos devem ser particionados por local de origem Região da AWS, Conta da AWS, e data. O caminho dos dados da partição é formatado como bucket-name/source-location/region=region/accountId=accountID/eventDay=YYYYMMDD.

Uma partição de amostra é aws-security-data-lake-us-west-2-lake-uid/source-location/region=us-west-2/accountId=123456789012/eventDay=20230428/.

  • bucket-name: o nome do bucket do Amazon S3 no qual o Security Lake armazena seus dados da fonte personalizada.

  • source-location: prefixo da fonte personalizada em seu bucket do S3. O Security Lake armazena todos os objetos do S3 de uma determinada fonte sob esse prefixo, e o prefixo é exclusivo da fonte em questão.

  • region— Região da AWS no qual os dados são gravados.

  • accountId— Conta da AWS ID ao qual os registros na partição de origem pertencem.

  • eventDay: data em que o evento ocorreu, formatada como uma cadeia de oito caracteres (YYYYMMDD).

Tamanho e taxa do objeto

Objetos gravados no Security Lake devem armazenar logs em buffer por 5 minutos. Se o período do buffer incluir dados demais para serem consultados com eficiência, as fontes personalizadas poderão gravar vários logs na janela de 5 minutos, desde que o tamanho médio desses arquivos permaneça abaixo de 256 MB. Fontes personalizadas com baixo throughput podem gravar objetos menores a cada 5 minutos para manter uma latência de ingestão de 5 minutos, e podem armazenar logs em buffer por períodos mais longos.

Configurações do Parquet

O Security Lake oferece suporte às versões 1.x e 2.x do Parquet. O tamanho da página de dados deve ser limitado a 1 MB (descompactado). O tamanho do grupo de linhas não deve ser maior que 256 MB (compactado). Para compressão dentro do objeto Parquet, o padrão é o preferido.

Classificação

Em cada objeto formatado em Parquet, os logs devem ser ordenados por tempo para reduzir o custo da consulta de dados.

Pré-requisitos para adicionar uma fonte personalizada

Ao adicionar uma fonte personalizada, o Security Lake cria um perfil do IAM que permite que a fonte grave dados no local correto no data lake. O nome da função segue o formatoAmazonSecurityLake-Provider-{name of the custom source}-{region}, onde region é aquele Região da AWS em que você está adicionando a fonte personalizada. O Security Lake atribui uma política à função que permite o acesso ao data lake. Se você criptografou o data lake com uma AWS KMS chave gerenciada pelo cliente, o Security Lake também anexa uma política kms:Decrypt e kms:GenerateDataKey permissões à função. O limite de permissões para essa função é definido por uma política AWS gerenciada chamada AmazonSecurityLakePermissionsBoundary.

Verificar permissões

Antes de adicionar uma fonte personalizada, verifique se você tem as permissões para realizar as ações a seguir.

Para verificar suas permissões, use o IAM para revisar as políticas do IAM que estão anexadas à sua identidade do IAM. Em seguida, compare as informações nessas políticas com a seguinte lista de ações que você deve ter permissão para adicionar uma fonte personalizada.

  • glue:CreateCrawler

  • glue:CreateDatabase

  • glue:CreateTable

  • glue:StopCrawlerSchedule

  • iam:GetRole

  • iam:PutRolePolicy

  • iam:DeleteRolePolicy

  • iam:PassRole

  • lakeformation:RegisterResource

  • lakeformation:GrantPermissions

  • s3:ListBucket

  • s3:PutObject

Essas ações permitem que você colete logs e eventos de uma fonte personalizada, os envie para o AWS Glue banco de dados e a tabela corretos e os armazene no Amazon S3.

Se você usar uma AWS KMS chave para criptografia do lado do servidor do seu data lake, também precisará de permissão parakms:CreateGrant, e. kms:DescribeKey kms:GenerateDataKey

Importante

Se você planeja usar o console do Security Lake para adicionar uma fonte personalizada, você pode pular a próxima etapa e continuarComo adicionar uma fonte personalizada. O console do Security Lake oferece um processo simplificado para começar e cria todos os perfis necessários do IAM ou usa os perfis existentes em seu nome.

Se você planeja usar a API Security Lake ou AWS CLI adicionar uma fonte personalizada, continue com a próxima etapa para criar uma função do IAM para permitir o acesso de gravação à localização do bucket do Security Lake.

Crie a função do IAM para permitir acesso de gravação à localização do bucket do Security Lake (API e etapa AWS CLI somente)

Se você estiver usando a API Security Lake ou AWS CLI para adicionar uma fonte personalizada, adicione essa função do IAM para conceder AWS Glue permissão para rastrear seus dados de origem personalizados e identificar partições nos dados. Essas partições são necessárias para organizar seus dados e criar e atualizar tabelas no Catálogo de dados.

Depois de criar esse perfil do IAM, você precisará do nome do recurso da Amazon (ARN) do perfil para adicionar uma fonte personalizada.

Você deve anexar a política arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole AWS gerenciada.

Para conceder as permissões necessárias, você também deve criar e incorporar a seguinte política embutida em sua função Crawler do AWS Glue para permitir a leitura de arquivos de dados da fonte personalizada e a criação/atualização das tabelas no Catálogo de Dados. AWS Glue

{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3WriteRead", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::{{bucketName}}/*" ] } ] }

Anexe a seguinte política de confiança para permitir que uma, Conta da AWS usando a qual, ela possa assumir a função com base na ID externa:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "glue.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Se o bucket do S3 na região em que você está adicionando a fonte personalizada estiver criptografado com uma política gerenciada pelo cliente AWS KMS key, você também deverá anexar a seguinte política à função e à sua política de chaves do KMS:

{ "Effect": "Allow", "Action": [ "kms:GenerateDataKey" "kms:Decrypt" ], "Condition": { "StringLike": { "kms:EncryptionContext:aws:s3:arn": [ "arn:aws:s3:::{{name of S3 bucket created by Security Lake}" ] } }, "Resource": [ "{{ARN of customer managed key}}" ] }

Como adicionar uma fonte personalizada

Depois de criar a função do IAM para invocar o AWS Glue rastreador, siga estas etapas para adicionar uma fonte personalizada no Security Lake.

Console
  1. Abra o console do Security Lake em https://console.aws.amazon.com/securitylake/.

  2. Usando o Região da AWS seletor no canto superior direito da página, selecione a região em que você deseja criar a fonte personalizada.

  3. Escolha Fontes personalizadas no painel de navegação e Criar fonte personalizada.

  4. Na seção Detalhes da fonte personalizada, insira um nome globalmente exclusivo para sua fonte personalizada. Em seguida, selecione uma classe de evento do OCSF que descreva o tipo de dados que a fonte personalizada enviará para o Security Lake.

  5. Para Conta da AWS com permissão para gravar dados, insira o ID da Conta da AWS e o ID externo da fonte personalizada que gravará logs e eventos no data lake.

  6. Para o Acesso ao serviço, crie e use um novo perfil de serviço ou use um perfil de serviço existente que dê permissão ao Security Lake para invocar o AWS Glue.

  7. Escolha Criar.

API

Para adicionar uma fonte personalizada programaticamente, use a CreateCustomLogSourceoperação da API Security Lake. Use a operação no Região da AWS local em que você deseja criar a fonte personalizada. Se você estiver usando o AWS Command Line Interface (AWS CLI), execute o comando create-custom-log-source.

Em sua solicitação, use os parâmetros compatíveis para especificar as configurações da fonte personalizada:

  • sourceName— Especifique um nome para a fonte. O nome deve ser um valor regionalmente exclusivo.

  • eventClasses— Especifique uma ou mais classes de eventos OCSF para descrever o tipo de dados que a fonte enviará ao Security Lake. Para obter uma lista das classes de eventos do OCSF suportadas como fonte no Security Lake, consulte Open Cybersecurity Schema Framework (OCSF).

  • sourceVersion— Opcionalmente, especifique um valor para limitar a coleta de registros a uma versão específica dos dados de origem personalizados.

  • crawlerConfiguration— Especifique o Amazon Resource Name (ARN) da função do IAM que você criou para invocar o rastreador. AWS Glue Para ver as etapas detalhadas para criar uma função do IAM, consulte Pré-requisitos para adicionar uma fonte personalizada

  • providerIdentity— especifique a AWS identidade e a ID externa que a fonte usará para gravar registros e eventos no data lake.

O exemplo a seguir adiciona uma fonte personalizada como fonte de registro na conta do provedor de registros designado nas regiões designadas. Este exemplo está formatado para Linux, macOS ou Unix e usa o caractere de continuação de linha “barra invertida (\)” para melhorar a legibilidade.

$ aws securitylake create-custom-log-source \ --source-name EXAMPLE_CUSTOM_SOURCE \ --event-classes '["DNS_ACTIVITY", "NETWORK_ACTIVITY"]' \ --configuration crawlerConfiguration={"roleArn=arn:aws:iam::XXX:role/service-role/RoleName"},providerIdentity={"externalId=ExternalId,principal=principal"} \ --region=[“ap-southeast-2”]

Mantendo os dados de origem personalizados atualizados no AWS Glue

Depois de adicionar uma fonte personalizada no Security Lake, o Security Lake cria um AWS Glue rastreador. O crawler se conecta à sua fonte personalizada, determina as estruturas de dados e preenche o Catálogo de dados do AWS Glue com tabelas.

Recomendamos executar manualmente o crawler para manter seu esquema de fonte personalizado atualizado e manter a funcionalidade de consulta no Athena e em outros serviços de consulta. Especificamente, você deve executar o crawler se alguma das seguintes alterações ocorrer em seu conjunto de dados de entrada de uma fonte personalizada:

  • O conjunto de dados tem uma ou mais novas colunas de nível superior.

  • O conjunto de dados tem um ou mais campos novos em uma coluna com um tipo de dados struct.

Para obter instruções sobre como executar um rastreador, consulte Como programar um AWS Glue rastreador no Guia do desenvolvedor.AWS Glue

O Security Lake não pode excluir nem atualizar os crawlers existentes na sua conta. Se você excluir uma fonte personalizada, recomendamos excluir o crawler associado se você planeja criar uma fonte personalizada com o mesmo nome no futuro.

Como excluir uma fonte personalizada

Exclua uma fonte personalizada para parar de enviar dados da fonte para o Security Lake.

Console
  1. Abra o console do Security Lake em https://console.aws.amazon.com/securitylake/.

  2. Usando o Região da AWS seletor no canto superior direito da página, selecione a região da qual você deseja remover a fonte personalizada.

  3. No painel de navegação, escolha Fontes personalizadas.

  4. Selecione a fonte personalizada que deseja remover.

  5. Escolha Cancelar o registro da fonte personalizada e Excluir para confirmar a ação.

API

Para excluir uma fonte personalizada programaticamente, use a DeleteCustomLogSourceoperação da API Security Lake. Se você estiver usando o AWS Command Line Interface (AWS CLI), execute o comando delete-custom-log-source. Use a operação na Região da AWS em que você deseja excluir a fonte personalizada.

Em sua solicitação, use o parâmetro sourceName para especificar o nome da fonte personalizada a ser excluída. Ou especifique o nome da fonte personalizada e use o parâmetro sourceVersion para limitar o escopo da exclusão somente a uma versão específica dos dados da fonte personalizada.

O exemplo a seguir exclui uma fonte de log personalizada do Security Lake.

Este exemplo está formatado para Linux, macOS ou Unix e usa o caractere de continuação de linha “barra invertida (\)” para melhorar a legibilidade.

$ aws securitylake delete-custom-log-source \ --source-name EXAMPLE_CUSTOM_SOURCE