Recolha registos da Okta
Este documento explica como carregar registos do Okta para o Google Security Operations através da API Okta. O analisador extrai registos do sistema, processando eventos únicos e eventos em lote numa matriz JSON. Normaliza os dados para o formato UDM, mapeando os campos do Okta para os equivalentes do UDM, enriquecendo os dados com agentes de utilizador analisados, informações geográficas e detalhes de autenticação, e gerando eventos de resultados de segurança com base nos resultados e nas informações de risco.
Antes de começar
- Instância do Google SecOps
- Acesso privilegiado ao Okta
Como configurar a Okta
Para configurar o SSO do Okta, conclua as seguintes tarefas:
Crie um utilizador administrativo do Okta com privilégios só de leitura
- Inicie sessão na consola do administrador do Okta.
Crie um utilizador padrão.
- Aceda a Diretório > Pessoas.
- Clique em Adicionar pessoa e preencha os campos obrigatórios.
Selecione Segurança > Administradores.
Clique em Adicionar administrador.
No campo Atribuição de administrador por administrador, encontre o utilizador padrão.
Na secção Funções, selecione Administrador só de leitura na lista.
Termine sessão na conta de administrador.
Obtenha a chave da API
- Inicie sessão na consola do administrador do Okta com o utilizador administrador só de leitura.
- Aceda a Segurança > API > Tokens.
- Clique em Criar token.
- Atribua um nome significativo ao token.
- Indique a zona de IP onde a API vai ser usada (pode selecionar qualquer IP se não tiver a certeza).
- Clique em Criar token.
- Copie a chave da API.
- Clique em OK.
Configure feeds
Existem dois pontos de entrada diferentes para configurar feeds na plataforma Google SecOps:
- Definições do SIEM > Feeds > Adicionar novo
- Content Hub > Pacotes de conteúdo > Começar
Como configurar o feed do Okta
Para configurar este tipo de registo, siga estes passos:
- Clique no pacote Okta.
- Localize o tipo de registo Okta.
Especifique valores para os seguintes campos:
- Tipo de origem: API de terceiros (recomendado)
- Cabeçalho HTTP de autenticação: introduza a chave da API Okta no seguinte formato:
Authorization:<API_KEY>
. - Nome do anfitrião da API: especifique o nome do domínio do seu anfitrião do Okta (por exemplo,
<your-domain>.okta.com
). - Espaço de nomes do recurso: o espaço de nomes do recurso.
- Etiquetas de carregamento: a etiqueta aplicada aos eventos deste feed.
Opções avançadas
- Nome do feed: um valor pré-preenchido que identifica o feed.
- Espaço de nomes do recurso: espaço de nomes associado ao feed.
- Etiquetas de carregamento: etiquetas aplicadas a todos os eventos deste feed.
Clique em Criar feed.
Para mais informações sobre a configuração de vários feeds para diferentes tipos de registos nesta família de produtos, consulte o artigo Configure feeds por produto.
Tabela de mapeamento da UDM
Campo de registo | Mapeamento de UDM | Lógica |
---|---|---|
actor.alternateId |
principal.user.email_addresses |
Extraído de actor.alternateId , se for um endereço de email. Se não for um endereço de email, é 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 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 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 deteçã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 em falta. |
debugContext.debugData.deviceFingerprint |
target.asset.asset_id |
Mapeado diretamente, com o prefixo 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 deteção com a chave threatSuspected . Usado para determinar o estado da ameaça (ATIVO ou FALSO_POSITIVO). |
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 (PERMITIR, DESAFIO, BLOQUEAR) com base no valor. |
published |
metadata.event_timestamp |
Analisado para indicação de tempo. |
request.ipChain.n.geographicalContext |
intermediary.location |
Contexto geográfico dos IPs intermediários na cadeia de pedidos. |
request.ipChain.n.ip |
intermediary.ip |
Endereços IP de intermediários na cadeia de pedidos. |
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 email, mapeado para target.user.email_addresses . Se não for um endereço de email, é usado como target.user.userid . |
target.n.detailEntry.clientAppId |
target.asset_id |
Mapeado diretamente, com o prefixo 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 |
Mapeada 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 |
Mapeada com base no tipo de destino. |
target.n.type |
target.user.attribute.roles.name / target.resource.resource_subtype / target.resource_ancestors.resource_subtype |
Mapeada com base no tipo de destino. |
transaction.id |
network.session_id |
Mapeado diretamente. |
transaction.type |
additional.fields.value.string_value |
Mapeado diretamente como valor de string com a chave type em additional.fields . |
uuid |
metadata.product_log_id |
Mapeado diretamente. |
N/A | metadata.vendor_name |
Definido como Okta . |
N/A | metadata.product_name |
Definido como Okta . |
N/A | extensions.auth.type |
Definido como SSO . |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais da Google SecOps.