Coletar registros do Okta

Compatível com:

Este documento explica como ingerir registros do Okta no Google Security Operations usando a API do Okta. O analisador extrai registros do sistema, processando eventos únicos e em lote em uma matriz JSON. Ele normaliza os dados no formato UDM, mapeando campos do Okta para equivalentes da UDM, enriquecendo os dados com user agents analisados, informações geográficas e detalhes de autenticação, além de gerar eventos de resultados de segurança com base em resultados e informações de risco.

Antes de começar

  • Instância do Google SecOps
  • Acesso privilegiado ao Okta

Como configurar o Okta

Para configurar o SSO do Okta, conclua as seguintes tarefas:

Criar um usuário administrativo do Okta com privilégios somente leitura

  1. Faça login no console de administrador do Okta.
  2. Crie um usuário padrão.

    • Acesse Diretório > Pessoas.
    • Clique em Adicionar pessoa e preencha os campos obrigatórios.
  3. Selecione Segurança > Administradores.

  4. Clique em Adicionar administrador.

  5. No campo Atribuição de administrador por administrador, encontre o usuário padrão.

  6. Na seção papéis, selecione Administrador somente leitura na lista.

  7. Saia da conta de administrador.

Receber chave da API

  1. Faça login no Admin Console do Okta com o usuário administrador somente leitura.
  2. Acesse Segurança > API > Tokens.
  3. Clique em Criar token.
  4. Dê um nome significativo ao token.
  5. Informe a zona de IP em que a API será usada. Se não tiver certeza, selecione qualquer IP.
  6. Clique em Criar token.
  7. Copie a chave de API.
  8. Clique em OK, entendi.

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 do Okta

Para configurar esse tipo de registro, siga estas etapas:

  1. Clique no pacote Okta.
  2. Localize o logtype Okta.
  3. Especifique valores para os seguintes campos:

    • Tipo de origem: API de terceiros (recomendado)
    • Cabeçalho HTTP de autenticação: insira a chave de API do Okta no seguinte formato: Authorization:<API_KEY>.
    • Nome do host da API: especifique o nome de domínio do host do Okta (por exemplo, <your-domain>.okta.com).
    • Namespace do recurso: o namespace do recurso.
    • Rótulos de ingestão: o rótulo aplicado aos eventos deste feed.

    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 registros nessa família de produtos, consulte Configurar feeds por produto.

Tabela de mapeamento do UDM

Campo de registro Mapeamento do UDM Lógica
actor.alternateId principal.user.email_addresses Extraído de actor.alternateId se for um endereço de e-mail. Se não for um endereço de e-mail, será usado como principal.user.userid.
actor.displayName principal.user.user_display_name Mapeado diretamente.
actor.id principal.user.product_object_id Mapeado diretamente.
actor.type principal.user.attribute.roles.name Mapeado diretamente.
authenticationContext.authenticationProvider security_result.detection_fields.value Mapeado diretamente, com a chave authenticationProvider.
authenticationContext.credentialProvider security_result.detection_fields.value Mapeado diretamente, com a chave credentialProvider.
authenticationContext.credentialType extensions.auth.mechanism Usado para derivar o mecanismo de autenticação (OTP, USERNAME_PASSWORD, LOCAL).
authenticationContext.externalSessionId network.parent_session_id Mapeado diretamente.
client.device principal.asset.type / additional.fields.value.string_value Mapeado para principal.asset.type (WORKSTATION, MOBILE, ROLE_UNSPECIFIED) com base no valor. Também mapeado como valor de string com a chave device em additional.fields.
client.geographicalContext.city principal.location.city Mapeado diretamente.
client.geographicalContext.country principal.location.country_or_region Mapeado diretamente.
client.geographicalContext.geolocation.lat principal.location.region_latitude Mapeado diretamente.
client.geographicalContext.geolocation.lon principal.location.region_longitude Mapeado diretamente.
client.geographicalContext.postalCode additional.fields.value.string_value Mapeado diretamente como um valor de string com a chave Postal code em additional.fields.
client.geographicalContext.state principal.location.state Mapeado diretamente.
client.ipAddress principal.ip, principal.asset.ip Mapeado diretamente.
client.userAgent.browser target.resource.attribute.labels.value Mapeado diretamente, com a chave Browser.
client.userAgent.os principal.platform Mapeado para a plataforma (LINUX, WINDOWS, MAC) com base no valor.
client.userAgent.rawUserAgent network.http.user_agent, network.http.parsed_user_agent Mapeados e analisados diretamente.
client.zone additional.fields.value.string_value Mapeado diretamente como um valor de string com a chave zone em additional.fields.
debugContext.debugData.behaviors security_result.description, security_result.detection_fields Mapeado diretamente para a descrição. Os comportamentos individuais são extraídos e adicionados como campos de detecção.
debugContext.debugData.changedAttributes security_result.detection_fields.value Mapeado diretamente, com a chave changedAttributes.
debugContext.debugData.clientAddress principal.ip, principal.asset.ip Mapeado diretamente se request.ipChain e client.ipAddress estiverem ausentes.
debugContext.debugData.deviceFingerprint target.asset.asset_id Mapeado diretamente, prefixado com device_finger_print:.
debugContext.debugData.dtHash security_result.detection_fields.value Mapeado diretamente, com a chave dtHash.
debugContext.debugData.factor security_result.detection_fields.value Mapeado diretamente, com a chave factor.
debugContext.debugData.factorIntent security_result.detection_fields.value Mapeado diretamente, com a chave factorIntent.
debugContext.debugData.logOnlySecurityData.risk.reasons security_result.detection_fields.value Mapeado diretamente, com a chave Risk Reasons.
debugContext.debugData.privilegeGranted target.user.attribute.roles Divididos em privilégios individuais e adicionados como funções com nome e descrição.
debugContext.debugData.pushOnlyResponseType security_result.detection_fields.value Mapeado diretamente, com a chave pushOnlyResponseType.
debugContext.debugData.pushWithNumberChallengeResponseType security_result.detection_fields.value Mapeado diretamente, com a chave pushWithNumberChallengeResponseType.
debugContext.debugData.requestUri extensions.auth.auth_details Mapeado diretamente.
debugContext.debugData.suspiciousActivityEventId security_result.detection_fields.value Mapeado diretamente, com a chave suspiciousActivityEventId.
debugContext.debugData.suspiciousActivityEventType security_result.detection_fields.value Mapeado diretamente, com a chave suspiciousActivityEventType.
debugContext.debugData.threatDetections security_result.detection_fields.value Mapeado diretamente, com a chave threatDetections.
debugContext.debugData.threatSuspected security_result.detection_fields.value, security_result.threat_status Mapeado como um campo de detecção com a chave threatSuspected. Usado para derivar o status da ameaça (ACTIVE ou FALSE_POSITIVE).
debugContext.debugData.url target.url Mapeado diretamente.
displayMessage security_result.summary Mapeado diretamente.
eventType metadata.product_event_type, metadata.event_type Mapeado diretamente para product_event_type. Usado para derivar event_type (USER_LOGIN, USER_LOGOUT, USER_CHANGE_PASSWORD, USER_CHANGE_PERMISSIONS, USER_DELETION, GROUP_MODIFICATION, SETTING_MODIFICATION, SCHEDULED_TASK_ENABLE, RESOURCE_CREATION, USER_UNCATEGORIZED).
legacyEventType security_result.detection_fields.value Mapeado diretamente, com a chave legacyEventType.
outcome.reason security_result.category_details Mapeado diretamente.
outcome.result security_result.action Mapeado para ação (ALLOW, CHALLENGE, BLOCK) com base no valor.
published metadata.event_timestamp Analisado para carimbo de data/hora.
request.ipChain.n.geographicalContext intermediary.location Contexto geográfico dos IPs intermediários na cadeia de solicitação.
request.ipChain.n.ip intermediary.ip Endereços IP de intermediários na cadeia de solicitação.
securityContext.asNumber security_result.detection_fields.value Mapeado diretamente, com a chave asNumber.
securityContext.asOrg security_result.detection_fields.value Mapeado diretamente, com a chave asOrg.
securityContext.domain security_result.detection_fields.value Mapeado diretamente, com a chave domain.
securityContext.isp security_result.detection_fields.value Mapeado diretamente, com a chave isp.
securityContext.isProxy security_result.detection_fields.value Mapeado diretamente, com a chave anonymized IP.
target.n.alternateId target.user.email_addresses / target.user.userid Se for um endereço de e-mail, mapeado para target.user.email_addresses. Se não for um endereço de e-mail, será usado como target.user.userid.
target.n.detailEntry.clientAppId target.asset_id Mapeado diretamente, prefixado com Client_app_id:.
target.n.detailEntry.methodTypeUsed target.resource_ancestors.attribute.labels.value Mapeado diretamente, com a chave methodTypeUsed quando o tipo de destino é AuthenticatorEnrollment.
target.n.detailEntry.methodUsedVerifiedProperties target.resource_ancestors.attribute.labels.value Mapeado diretamente, com a chave methodUsedVerifiedProperties quando o tipo de destino é AuthenticatorEnrollment.
target.n.detailEntry.policyType target.resource_ancestors.attribute.labels.value Mapeado diretamente, com a chave Policy Type.
target.n.detailEntry.signOnModeType security_result.detection_fields.value Mapeado diretamente, com a chave signOnModeType.
target.n.displayName target.user.user_display_name / target.application / target.resource.name Mapeamento com base no tipo de destino.
target.n.id target.user.product_object_id / target.resource.product_object_id / target.resource_ancestors.product_object_id Mapeamento com base no tipo de destino.
target.n.type target.user.attribute.roles.name / target.resource.resource_subtype / target.resource_ancestors.resource_subtype Mapeamento com base no tipo de destino.
transaction.id network.session_id Mapeado diretamente.
transaction.type additional.fields.value.string_value Mapeado diretamente como um valor de string com a chave type em additional.fields.
uuid metadata.product_log_id Mapeado diretamente.
N/A metadata.vendor_name Defina como Okta.
N/A metadata.product_name Defina como Okta.
N/A extensions.auth.type Defina como SSO.

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