Pular para o conteúdo principal

Logs WAF Akamai

info

Visualização

O Lakewatch está em Pré-visualização privada. Para solicitar acesso, entre em contato com a equipe da sua conta da Databricks.

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

Pré-requisitos​

O conector requer:

  1. Lakeflow Spark Declarative Pipelines Serverless ativado no seu workspace.
  2. Unity Catalog, com privilégios para criar ou usar uma conexão Unity Catalog. Consulte Permissões de conexão.
  3. Um administrador do Akamai Control Center deve ativar a Integração SIEM e provisionar o usuário SIEM.
  4. 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.
  5. 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. Observe o ID de configuração de segurança da Web . Você precisa desses valores quando criar um usuário com a função MANAGE_SIEM .

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​

Depois de concluir a configuração acima, crie uma fonte de dados com o conector Akamai WAF na interface do usuário do Lakewatch. Consulte Conectores de API para obter instruções.


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 grava a tabela de origem no destino bruto da fonte de dados. O analisador integrado grava uma tabela analisada separada com o nome do analisador, a menos que você defina um destino analisado ao configurar a fonte de dados.

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.

A tabela analisada carrega lw_id para frente. O analisador também atribui a coluna time analisada e adiciona:

  • lw_meta: Metadados de processamento padrão do Lakewatch.
  • lw_observables: valores extraídos de campos marcados como observáveis de segurança no analisador.

Para obter mais informações, consulte Referência de parser.

Esquema de tabela do conector bruto​

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 do analisador​

O analisador akamai_waf grava objetos aninhados como VARIANT e extrai os campos a seguir 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