Pular para o conteúdo principal

Logs WAF Akamai

info

Beta

Lakewatch está em Beta. Os administradores de workspace podem controlar o acesso a esse recurso na página Pré-visualizações . Consulte Gerenciar prévias em nível de workspace.

O Lakewatch fornece um conector de API para ingerir logs de WAF do Akamai. Este artigo abrange pré-requisitos, instruções de configuração, esquemas de conector e observáveis de segurança.

Pré-requisitos​

O conector requer:

  1. LakeFlow Pipelines Serverless ativado em seu workspace.
  2. Unity Catalog, com privilégios para criar ou usar uma conexão Unity Catalog. Consulte Permissões de conexão.
  3. A pré-visualização do Lakeflow Connect para Akamai WAF foi habilitada em seu Workspace por um administrador do Workspace. Consulte Habilitar a pré-visualização do conector.
  4. Se a política de rede serverless do seu workspace usa acesso restrito, os domínios da API da fonte devem estar na lista de Domínios permitidos da política. Consulte Permitir os domínios da API de origem em sua política de rede.
  5. Um administrador do Akamai Control Center deve ativar a Integração SIEM e provisionar o usuário SIEM.
  6. O usuário associado às credenciais da API deve ter a função gerenciar SIEM para cada grupo que contenha uma configuração de segurança que você deseja ingerir. Veja Integração com Akamai SIEM.
  7. A integração SIEM e a coleta de dados devem estar ativadas para cada configuração de segurança, e a configuração deve estar ativa na rede de produção. Veja Começar com a API de Integração SIEM.

Limitações conhecidas​

  • O SCD tipo 2 não é compatível, já que os logs do Akamai WAF são apenas para adição.
  • O conector autentica usando credenciais EdgeGrid de longa duração que são default para 2 anos. Depois que elas expirarem, crie novas credenciais e atualize a conexão.
  • A busca histórica não pode exceder as 12 horas de retenção dos logs do WAF pela Akamai. Consulte Escolher há quanto tempo ingerir.

Configurar Akamai para ingestão​

Configure o Akamai para habilitar a autenticação do Databricks.

Obter IDs de configuração de segurança da Web​

  1. Entre no Akamai Control Center como administrador.
  2. Clique no ícone de menu no canto superior esquerdo da página para abrir o painel de navegação.
  3. No painel de navegação, clique em Seus serviços > Segurança da web e do centro de dados > Configurações de segurança > Segurança da web .
  4. Revise a lista de configurações de segurança. Cada configuração tem um dropdown. Observe o ID do contrato e do grupo abaixo do dropdown. Você precisa desses valores quando cria um usuário com a função MANAGE_SIEM .
  5. Para cada configuração de segurança para a qual você deseja ingerir logs:
    1. Clique na versão em Última criada , Homologação ou Produção .
    2. Vá para Configurações avançadas > Registro > Coleta de dados para integração SIEM > ID da configuração de segurança da web .
    3. Anote o ID de configuração de segurança da web . Mantenha esses IDs para a configuração de permissão MANAGE_SIEM e para o campo ID(s) de configuração de segurança da fonte de dados.

Crie um usuário com a função MANAGE_SIEM​

  1. Entre no Akamai Control Center como administrador.
  2. Clique no ícone de menu no canto superior esquerdo da página para abrir o painel de navegação.
  3. No painel de navegação, clique em Seus serviços > Administrador de account > Identidade e acesso .
  4. Clique em Criar usuário .
  5. Insira os valores de email e Verificar email .
  6. Em Assign roles , selecione MANAGE_SIEM para cada um dos grupos usados para definir os IDs de configuração de segurança da Web da etapa anterior.

Criar um cliente de API​

  1. Faça login no Akamai Control Center como o usuário que você criou no o passo anterior.
  2. Clique no ícone de menu no canto superior esquerdo da página para abrir o painel de navegação.
  3. No painel de navegação, clique em Seus serviços > Administrador de account > Identidade e acesso .
  4. Clique em "Criar cliente de API > Avançado" .
  5. Em APIs , selecione Selecionar APIs .
  6. Clique em Reset da seleção de API .
  7. Pesquise a API SIEM .
  8. Em Nível de acesso , selecione SOMENTE LEITURA e, em seguida, clique em Enviar .
  9. Insira um Nome exclusivo para o cliente da API e clique em Criar cliente da API .
  10. Copie os valores client_secret , host , access_token e client_token . O Akamai mostra essas credenciais apenas uma vez. Use-os para criar uma conexão Unity Catalog no Databricks.
dica

Ao criar uma conexão através da UI do Lakewatch, você precisará do Host , Token do Cliente , Segredo do Cliente e Access Token reunidos acima.

Os passos seguintes​

Após concluir a configuração acima, crie uma fonte de dados com o conector Akamai WAF na interface do Lakewatch:

  1. Crie ou selecione uma conexão do Unity Catalog usando o Host , Client Token , Client Secret e Access Token .
  2. No campo ID(s) de Configuração de Segurança necessário do formulário de fonte de dados, insira os IDs de Configuração de Segurança da Web como números inteiros separados por vírgula, por exemplo, 12345, 67890. Esses IDs selecionam quais configurações ingerir e são separados das credenciais de conexão.

Consulte Conectores de API para obter as configurações de fonte de dados restantes.


Esquemas de conector e Lakewatch​

O conector ingere a seguinte tabela de origem do esquema de origem default:

Tabela de origem

Dados da Akamai

Analisador Lakewatch integrado

akamai_waf_events

Eventos de segurança do WAF da API de integração do SIEM da Akamai

akamai_waf

Tabela de origem

Dados da Akamai

Analisador Lakewatch integrado

akamai_waf_events

Eventos de segurança do WAF da API de integração do SIEM da Akamai

akamai_waf

O conector escreve cada tabela de fonte diretamente no destino configurado para seu parser integrado. Por default, a tabela de destino é nomeada após o parser. Você pode definir um destino diferente durante a criação da datasource. Não há uma tabela de staging bruta separada ou o passo de parsing posterior.

Colunas gerenciadas pelo Lakewatch​

O conector adiciona lw_id, uma string não nula que o Lakewatch usa para desduplicação estável e ordenação de tempo. Ele deriva lw_id do timestamp do evento e _databricks_primary_key. O conector deriva:

  • _databricks_primary_key de um hash estável do evento de origem.
  • time de httpMessage.start, interpretado como segundos da época Unix. O conector usa time como o campo de cursor para ingestão incremental.

Para fontes de dados do Lakewatch, o conector também adiciona:

  • lw_meta: A identidade da fonte de dados e da conexão, o nome e a versão do parser e o tempo de ingestão.
  • lw_observables: Observáveis de segurança extraídos pelo conector.

Para obter mais informações, consulte Tabelas de saída do conector.

Esquema da tabela de saída do conector​

O destino inclui as colunas de origem e de evento abaixo, juntamente com as colunas lw_meta e lw_observables descritas acima.

O esquema a seguir combina os campos padrão do Lakeflow Connect com a coluna lw_id exclusiva do Lakewatch. Para definições de campo, consulte a API de integração do SIEM da Akamai.

Esquema

Coluna

Tipo de dados

lw_id

STRING

_databricks_primary_key

LONG

time

TIMESTAMP

format

STRING

type

STRING

version

STRING

attackData

STRUCT<appliedAction: STRING, clientIP: STRING, configId: STRING, policyId: STRING, ruleActions: STRING, ruleData: STRING, ruleMessages: STRING, ruleSelectors: STRING, ruleTags: STRING, ruleVersions: STRING, rules: STRING, apiId: STRING, apiKey: STRING, clientReputation: STRING, slowPostAction: STRING, slowPostRate: STRING, decodedRules: ARRAY<STRUCT<rule: STRING, ruleAction: STRING, ruleData: STRING, ruleMessage: STRING, ruleSelector: STRING, ruleTag: STRING, ruleVersion: STRING>>>

botData

STRUCT<botScore: STRING, responseSegment: STRING>

clientData

STRUCT<telemetryType: STRING, appBundleId: STRING, appVersion: STRING, sdkVersion: STRING>

custom

STRING

geo

STRUCT<asn: STRING, city: STRING, continent: STRING, country: STRING, regionCode: STRING>

httpMessage

STRUCT<bytes: STRING, host: STRING, method: STRING, path: STRING, port: STRING, protocol: STRING, query: STRING, requestHeaders: STRING, requestId: STRING, responseHeaders: STRING, start: STRING, status: STRING, tls: STRING>

identity

STRUCT<ja4: STRING, tlsFingerprintV2: STRING, tlsFingerprintV3: STRING>

userRiskData

STRUCT<allow: STRING, emailDomain: STRING, general: STRING, originUserId: STRING, risk: STRING, score: STRING, status: STRING, trust: STRING, username: STRING, uuid: STRING>

Coluna

Tipo de dados

lw_id

STRING

_databricks_primary_key

LONG

time

TIMESTAMP

format

STRING

type

STRING

version

STRING

attackData

STRUCT<appliedAction: STRING, clientIP: STRING, configId: STRING, policyId: STRING, ruleActions: STRING, ruleData: STRING, ruleMessages: STRING, ruleSelectors: STRING, ruleTags: STRING, ruleVersions: STRING, rules: STRING, apiId: STRING, apiKey: STRING, clientReputation: STRING, slowPostAction: STRING, slowPostRate: STRING, decodedRules: ARRAY<STRUCT<rule: STRING, ruleAction: STRING, ruleData: STRING, ruleMessage: STRING, ruleSelector: STRING, ruleTag: STRING, ruleVersion: STRING>>>

botData

STRUCT<botScore: STRING, responseSegment: STRING>

clientData

STRUCT<telemetryType: STRING, appBundleId: STRING, appVersion: STRING, sdkVersion: STRING>

custom

STRING

geo

STRUCT<asn: STRING, city: STRING, continent: STRING, country: STRING, regionCode: STRING>

httpMessage

STRUCT<bytes: STRING, host: STRING, method: STRING, path: STRING, port: STRING, protocol: STRING, query: STRING, requestHeaders: STRING, requestId: STRING, responseHeaders: STRING, start: STRING, status: STRING, tls: STRING>

identity

STRUCT<ja4: STRING, tlsFingerprintV2: STRING, tlsFingerprintV3: STRING>

userRiskData

STRUCT<allow: STRING, emailDomain: STRING, general: STRING, originUserId: STRING, risk: STRING, score: STRING, status: STRING, trust: STRING, username: STRING, uuid: STRING>

Observáveis de segurança​

O conector extrai os seguintes campos para lw_observables.

Observáveis

campo

Observável

attackData.clientIP

ip

httpMessage.host

hostname

httpMessage.requestId

trace_id

userRiskData.emailDomain

domain

userRiskData.originUserId

actor_id

userRiskData.username

username

userRiskData.uuid

actor_id

campo

Observável

attackData.clientIP

ip

httpMessage.host

hostname

httpMessage.requestId

trace_id

userRiskData.emailDomain

domain

userRiskData.originUserId

actor_id

userRiskData.username

username

userRiskData.uuid

actor_id