Coletar registros de gerenciamento de APIs do Azure
Versão do analisador: 1.0
Este documento explica como criar um feed do Hub de Eventos do Azure para ingerir registros do Gerenciamento de APIs do Azure no Google Security Operations.
O Gerenciamento de APIs do Azure é uma plataforma de gerenciamento híbrida e multicloud para APIs em todos os ambientes. Ele ajuda as organizações a publicar APIs para desenvolvedores externos, parceiros e internos, liberando o potencial dos dados e serviços. O gerenciamento de APIs oferece ferramentas para descoberta de APIs, funcionalidade de gateway, políticas de segurança, análise e engajamento de desenvolvedores. Os registros de diagnóstico capturam informações detalhadas sobre as operações do gateway de API, incluindo solicitações, respostas e erros.
Antes de começar
Verifique se você atende aos seguintes pré-requisitos:
- Uma instância do Google SecOps
- Acesso privilegiado ao portal do Microsoft Azure com permissões para:
- Criar namespaces de Hubs de Eventos
- Criar hubs de eventos
- Definir as configurações de diagnóstico para o gerenciamento de APIs do Azure
- Gerenciar políticas de acesso
Uma instância de serviço de gerenciamento de APIs do Azure
Criar namespace do Hub de Eventos
Um namespace de Hub de Eventos é um contêiner de gerenciamento para um ou mais Hubs de Eventos.
- No portal do Azure, pesquise por Hubs de Eventos.
- Clique em + Criar.
Informe os seguintes detalhes de configuração:
Configuração Valor Assinatura Selecione sua assinatura do Azure Grupo de recursos Selecionar uma existente ou criar uma nova Nome do namespace Insira um nome exclusivo (por exemplo, secops-apim-eventhub).Local Selecione a região (por exemplo, East US).Nível de preço Standard (recomendado para produção) Unidades de capacidade de processamento Comece com 1 e ative o inflamento automático (recomendado) Clique em Revisar + criar.
Revise a visão geral e clique em Criar.
Aguarde a conclusão da implantação (1 a 2 minutos).
Criar hub de eventos
- Depois que o namespace for implantado, acesse o namespace do Hub de Eventos.
- No menu de navegação à esquerda, selecione Hubs de eventos em Entidades.
- Clique em + Event Hub.
Informe os seguintes detalhes de configuração:
Configuração Valor Nome Insira um nome exclusivo (por exemplo, apim-logs).Contagem de partições 40 (recomendado para o escalonamento ideal do Google SecOps) Retenção de mensagens 7 dias (mínimo recomendado) Captura Desativado (não é necessário para o Google SecOps) Clique em Criar.
Receber a string de conexão do Hub de Eventos
O Google SecOps requer uma string de conexão para autenticar no hub de eventos.
Opção A: string de conexão no nível do namespace (recomendado)
- Acesse o namespace do Hub de Eventos.
- Na navegação à esquerda, selecione Políticas de acesso compartilhado em Configurações.
- Clique na política padrão RootManageSharedAccessKey.
- Copie a chave primária da string de conexão.
- Salve essa string de conexão com segurança.
Exemplo:
Original: Endpoint=sb://secops-apim-eventhub.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=abc123==;EntityPath=apim-logs Remove EntityPath: Endpoint=sb://secops-apim-eventhub.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=abc123==
Opção B: string de conexão no nível do hub de eventos
- Acesse o Hub de Eventos (não o namespace).
- Na navegação à esquerda, selecione Políticas de acesso compartilhado em Configurações.
- Clique em + Adicionar para criar uma nova política.
- Informe os seguintes detalhes de configuração:
- Nome da política: insira um nome descritivo (por exemplo,
chronicle-read). - Permissões: selecione Somente ouvir (acesso somente leitura).
- Nome da política: insira um nome descritivo (por exemplo,
- Clique em Criar.
- Clique na política recém-criada.
- Copie a chave primária da string de conexão.
Salve essa string de conexão com segurança.
Configurar o gerenciamento de APIs do Azure para fazer streaming para o Hub de Eventos
- No portal do Azure, pesquise Serviços de gerenciamento de APIs.
- Selecione a instância do serviço de gerenciamento de APIs.
- No menu de navegação à esquerda, selecione Configurações de diagnóstico em Monitoramento.
- Clique em + Adicionar configuração de diagnóstico.
- Informe os seguintes detalhes de configuração:
- Nome da configuração de diagnóstico: insira um nome descritivo (por exemplo,
apim-to-secops). - Na seção Registros, selecione as seguintes categorias:
- GatewayLogs: registros de solicitação e resposta do gateway de API
- WebSocketConnectionLogs: registros de conexão do WebSocket (se aplicável)
- DeveloperPortalAuditLogs: registros de auditoria do portal do desenvolvedor (se aplicável)
- GatewayLlmLogs: registros do gateway de IA generativa (se aplicável)
- GatewayMCPLogs: registros do servidor do Protocolo de Contexto de Modelo (MCP), se aplicável.
- Na seção Detalhes do destino, marque a caixa de seleção Transmitir para um hub de eventos.
- Assinatura: selecione a assinatura que contém o namespace do hub de eventos.
- Namespace do hub de eventos: selecione o namespace que você criou anteriormente (por exemplo,
secops-apim-eventhub). - Nome do hub de eventos: selecione o hub de eventos que você criou (por exemplo,
apim-logs). - Nome da política do hub de eventos: selecione RootManageSharedAccessKey ou uma política personalizada com permissões de envio.
- Nome da configuração de diagnóstico: insira um nome descritivo (por exemplo,
Clique em Salvar.
(Opcional) Configurar o Azure Blob Storage para checkpoints
O Google SecOps pode usar o Armazenamento de Blobs do Azure para armazenar checkpoints do Hub de Eventos, que rastreiam quais eventos foram processados. Isso evita a ingestão duplicada se o feed for interrompido temporariamente.
Criar uma conta de armazenamento para checkpoints
- No portal do Azure, pesquise Contas de armazenamento.
- Clique em + Criar.
Informe os seguintes detalhes de configuração:
Configuração Valor Assinatura Selecione sua assinatura do Azure Grupo de recursos Use o mesmo grupo de recursos do hub de eventos. Nome da conta de armazenamento Insira um nome exclusivo (por exemplo, secopsapimcheckpoint).Região Mesma região do hub de eventos Desempenho Padrão Redundância LRS (armazenamento com redundância local) Clique em Revisar + criar.
Clique em Criar.
Criar contêiner de blob
- Acesse a conta de armazenamento que você acabou de criar.
- No menu de navegação à esquerda, selecione Contêineres em Repositório de dados.
- Clique em + Contêiner.
- Informe os seguintes detalhes de configuração:
- Nome: insira
checkpoints. - Nível de acesso público: particular (sem acesso anônimo)
- Nome: insira
- Clique em Criar.
Receber credenciais da conta de armazenamento
- Na conta de armazenamento, selecione Chaves de acesso em Segurança + rede.
- Clique em Mostrar chaves.
- Copie e salve:
- Nome da conta de armazenamento: o nome da sua conta de armazenamento.
- Chave 1: o valor da chave de acesso.
Você vai fornecer esses valores ao criar o feed do Google SecOps.
(Opcional) Criar um grupo de consumidores dedicado
Por padrão, o Hub de Eventos fornece um grupo de consumidores chamado $Default. Para ambientes de produção, recomendamos criar um grupo de consumidores dedicado para o Google SecOps.
- Acesse o Hub de Eventos (não o namespace).
- Na navegação à esquerda, selecione Grupos de consumidores em Entidades.
- Clique em + Grupo de consumidores.
- Informe os seguintes detalhes de configuração:
- Nome: insira um nome descritivo (por exemplo,
chronicle).
- Nome: insira um nome descritivo (por exemplo,
Clique em Criar.
Configurar um feed no Google SecOps para ingerir registros do Gerenciamento de APIs do Azure
- Acesse Configurações > Gerenciamento de dados > Feeds. Se você estiver em uma plataforma somente SIEM, acesse Configurações > Feeds.
- Clique em Adicionar novo feed.
- Na página seguinte, clique em Configurar um único feed.
- No campo Nome do feed, insira um nome para o feed (por exemplo,
Azure API Management Logs). - Selecione Hub de Eventos do Microsoft Azure como o Tipo de origem.
- Selecione Gerenciamento de APIs do Azure como o Tipo de registro.
- Clique em Próxima.
Especifique valores para os seguintes parâmetros de entrada:
String de conexão do hub de eventos: insira a string de conexão do hub de eventos que você capturou anteriormente.
Se você estiver usando uma string de conexão no nível do namespace:
- Verifique se você removeu o parâmetro
EntityPath. - Você também precisa informar o Nome do hub de eventos no próximo campo.
- Verifique se você removeu o parâmetro
Se você estiver usando uma string de conexão no nível do hub de eventos:
- Usar a string de conexão como está (inclui
EntityPath) - O campo Nome do hub de eventos pode ser deixado em branco.
- Usar a string de conexão como está (inclui
Nome do hub de eventos: insira o nome do hub de eventos (por exemplo,
apim-logs).- Obrigatório se você estiver usando uma string de conexão no nível do namespace.
- Opcional se você estiver usando uma string de conexão no nível do hub de eventos.
Grupo de consumidores (opcional): insira o nome do grupo de consumidores.
- Deixe em branco para usar o grupo de consumidores padrão
$Default. - Se você criou um grupo de consumidores dedicado, insira o nome dele (por exemplo,
chronicle).
- Deixe em branco para usar o grupo de consumidores padrão
Nome do contêiner de armazenamento de blobs (opcional): para o checkpoint, insira o nome do contêiner (por exemplo,
checkpoints)
Se você fornecer armazenamento de blobs para checkpoints:
- Nome da conta de armazenamento do Azure: insira o nome da conta de armazenamento da configuração de checkpoint.
Chave da conta de armazenamento do Azure: insira a chave de acesso da configuração de checkpoint.
Namespace do recurso: o namespace do recurso
Rótulos de ingestão: o rótulo que será aplicado aos eventos desse feed.
Clique em Próxima.
Revise a configuração do novo feed na tela Finalizar e clique em Enviar.
Para mais informações sobre os feeds do Google SecOps, consulte a documentação de feeds do Google SecOps.
Tabela de mapeamento de UDM
| Campo de registro | Mapeamento de UDM | Lógica |
|---|---|---|
Level_label |
additional.fields |
Mesclado |
Sku_label |
additional.fields |
Mesclado |
apiId_label |
additional.fields |
Mesclado |
apiRevision_label |
additional.fields |
Mesclado |
apimSubscriptionId_label |
additional.fields |
Mesclado |
backendMethod_label |
additional.fields |
Mesclado |
backendProtocol_label |
additional.fields |
Mesclado |
backendResponseCode_label |
additional.fields |
Mesclado |
backendTime_label |
additional.fields |
Mesclado |
cache_label |
additional.fields |
Mesclado |
clientProtocol_label |
additional.fields |
Mesclado |
durationMs_label |
additional.fields |
Mesclado |
eventName_label |
additional.fields |
Mesclado |
eventid_label |
additional.fields |
Mesclado |
functionInvocationId_label |
additional.fields |
Mesclado |
functionName_label |
additional.fields |
Mesclado |
hostInstanceId_label |
additional.fields |
Mesclado |
hostVersion_label |
additional.fields |
Mesclado |
isRequestSuccess_label |
additional.fields |
Mesclado |
operationId_label |
additional.fields |
Mesclado |
productId_label |
additional.fields |
Mesclado |
properties.message |
metadata.description |
Mapeado diretamente |
time |
metadata.event_timestamp |
Analisado como ISO8601 |
has_principal |
metadata.event_type |
Mapeado: true → STATUS_UPDATE |
operationName |
metadata.product_event_type |
Mapeado diretamente |
DeploymentVersion |
metadata.product_version |
Mapeado diretamente |
properties.method |
network.http.method |
Mapeado diretamente |
properties.responseCode |
network.http.response_code |
Mapeado diretamente |
properties.responseSize |
network.received_bytes |
Mapeado diretamente |
properties.requestSize |
network.sent_bytes |
Mapeado diretamente |
correlationId |
network.session_id |
Mapeado diretamente |
properties.clientTlsCipherSuite |
network.tls.cipher |
Mapeado diretamente |
properties.clientTlsVersion |
network.tls.version |
Mapeado diretamente |
callerIpAddress |
principal.asset.ip |
Mesclado |
callerIpAddress |
principal.ip |
Mesclado |
location |
principal.location.name |
Mapeado diretamente |
properties.url |
principal.url |
Mapeado diretamente |
properties.userId |
principal.user.userid |
Mapeado diretamente |
action |
security_result.action |
Mesclado |
resultType |
security_result.action |
Mapeado: Succeeded → action |
category |
security_result.category_details |
Mesclado |
properties.category |
security_result.category_details |
Mesclado |
level |
security_result.severity |
Mapeado diretamente |
resultType |
security_result.summary |
Mapeado diretamente |
properties.appName |
target.application |
Mapeado diretamente |
properties.processId |
target.process.pid |
Mapeado diretamente |
roleInstance_label |
target.resource.attribute.labels |
Mesclado |
resourceId |
target.resource.product_object_id |
Mapeado diretamente |
properties.backendUrl |
target.url |
Mapeado diretamente |
| N/A | metadata.event_type |
Constante: GENERIC_EVENT |
| N/A | metadata.product_name |
Constante: AZURE API MANAGEMENT |
| N/A | metadata.vendor_name |
Constante: AZURE_API_MANAGEMENT |
| N/A | network.tls.version_protocol |
Constante: HTTP |
Registro de alterações
Confira o registro de alterações deste analisador
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.