Tutorial: Configurar Event Hubs para Azure Cloud HSM

Se configuraste o registo de eventos de operações para Azure Cloud HSM, já tens uma definição de diagnóstico funcional no teu cluster Cloud HSM que encaminha registos HsmServiceOperations para Storage e Log Analytics. Para adicionar Centros de Eventos como destino, adicione um terceiro destino a essa mesma definição de diagnóstico ou crie um novo que vise Centros de Eventos.

As definições de diagnóstico do Azure Monitor suportam múltiplos destinos simultaneamente. Como o seu pipeline de Log Analytics já prova que a emissão de logs do Cloud HSM está a funcionar, os Event Hubs tornam-se outro destino a receber a mesma categoria HsmServiceOperations.

Neste tutorial, você:

  • Crie um namespace de Event Hub e um hub de eventos para registos de Cloud HSM.
  • Configure regras de autorização com permissões de privilégio mínimo.
  • Atualize as definições de diagnóstico para transmitir registos para os Event Hubs.
  • Verifique se os Event Hubs recebem eventos de operação Cloud HSM.

Pré-requisitos

Verifique se existe o grupo de recursos de logs

Os Event Hubs devem ser implementados no mesmo grupo de recursos que contém a sua conta de armazenamento e o espaço de trabalho Log Analytics para registo operacional de eventos. Se não configurou registo operacional de eventos, siga primeiro as orientações em Configure e consulte o registo de eventos de operações para Azure Cloud HSM.

Verifique se o seu grupo de recursos alvo existe:

az group show --name "<resource-group>" --query "{name:name, location:location}" --output table

Criar um namespace de Hubs de Eventos

O namespace é o contentor que contém um ou mais hubs de eventos. Use o nível Standard , que é necessário para a integração das definições de diagnóstico.

az eventhubs namespace create \
  --name "<eventhub-namespace>" \
  --resource-group "<resource-group>" \
  --location "<location>" \
  --sku Standard \
  --capacity 1 \
  --enable-auto-inflate false

Principais opções:

  • SKU Padrão: O nível Básico não suporta definições de diagnóstico como destino.
  • Capacidade 1: Uma unidade de throughput (entrada de 1 MB/s, saída de 2 MB/s) é suficiente para registos de auditoria HSM.
  • Autoinflação desativada: O volume logarítmico do HSM é baixo, por isso a autoinflação não é necessária.

Crie um hub de eventos dentro do namespace

Para receber os registos do Cloud HSM, crie um hub de eventos dentro do namespace.

az eventhubs eventhub create \
  --name "cloudhsm-logs" \
  --namespace-name "<eventhub-namespace>" \
  --resource-group "<resource-group>" \
  --partition-count 2 \
  --retention-time-in-hours 168 \
  --cleanup-policy Delete

Principais opções:

  • Contagem de partições 2: Duas partições são suficientes para o throughput de registo de auditoria HSM.
  • Tempo de retenção 168 horas: Manter mensagens durante sete dias (o máximo para o nível Standard).
  • Política de limpeza Eliminar: Apagar mensagens após o término do período de retenção.

Crie um grupo de consumidores

Crie um grupo de consumidores dedicado ao processamento a jusante. Reserve o grupo padrão $Default para outros usos.

az eventhubs eventhub consumer-group create \
  --name "azure-cloud-hsm" \
  --namespace-name "<eventhub-namespace>" \
  --eventhub-name "cloudhsm-logs" \
  --resource-group "<resource-group>"

Criar uma regra de autorização

As definições de diagnóstico precisam de permissão Enviar para enviar logs para o event hub. Crie uma política de acesso partilhado apenas com a permissão necessária.

az eventhubs namespace authorization-rule create \
  --name "DiagnosticSettingsSendRule" \
  --namespace-name "<eventhub-namespace>" \
  --resource-group "<resource-group>" \
  --rights Send

Observação

Esta regra concede apenas Send permissão, não Listen, ou Manage. Siga o princípio do menor privilégio. Os seus consumidores a jusante (como Funções do Azure ou Stream Analytics) devem usar uma regra separada com permissão Listen.

Obtenha o ID do recurso da regra de autorização

Recupere o ID do recurso da regra de autorização para uso na configuração de diagnóstico.

authRuleId=$(az eventhubs namespace authorization-rule show \
  --name "DiagnosticSettingsSendRule" \
  --namespace-name "<eventhub-namespace>" \
  --resource-group "<resource-group>" \
  --query id --output tsv)

echo "Auth Rule ID: $authRuleId"

Guarde este valor para usar na próxima etapa.

Atualize a definição de diagnóstico para adicionar Centros de Eventos

Tens duas opções para adicionar Event Hubs como destino:

Esta abordagem atualiza a sua definição de diagnóstico existente para adicionar Event Hubs, mantendo o Storage e o Log Analytics.

# Set your resource group variables
hsmResourceGroup="<resource-group>"
logsResourceGroup="<resource-group>"

# Find the HSM cluster name (auto-generated during deployment)
hsmClusterName=$(az resource list \
  --resource-group $hsmResourceGroup \
  --resource-type Microsoft.HardwareSecurityModules/cloudHsmClusters \
  --query "[0].name" --output tsv)
echo "HSM Cluster: $hsmClusterName"

# Get the HSM cluster resource ID
hsmResourceId=$(az resource show \
  --resource-group $hsmResourceGroup \
  --resource-type Microsoft.HardwareSecurityModules/cloudHsmClusters \
  --name $hsmClusterName \
  --query id --output tsv)

# Get your existing storage account ID
storageAccountId=$(az storage account list \
  --resource-group $logsResourceGroup \
  --query "[0].id" --output tsv)

# Get your existing Log Analytics workspace ID
workspaceId=$(az monitor log-analytics workspace list \
  --resource-group $logsResourceGroup \
  --query "[0].id" --output tsv)

# Get the Event Hub auth rule ID
authRuleId=$(az eventhubs namespace authorization-rule show \
  --name "DiagnosticSettingsSendRule" \
  --namespace-name "<eventhub-namespace>" \
  --resource-group $logsResourceGroup \
  --query id --output tsv)

# Update the diagnostic setting with all three destinations
az monitor diagnostic-settings create \
  --name "<diagnostic-setting-name>" \
  --resource $hsmResourceId \
  --storage-account $storageAccountId \
  --workspace $workspaceId \
  --event-hub "cloudhsm-logs" \
  --event-hub-rule $authRuleId \
  --logs '[{"category":"HsmServiceOperations","enabled":true}]'

Importante

Tanto os comandos em CLI como em PowerShell substituem toda a configuração de diagnóstico se o nome coincidir com um já existente. Tens de incluir novamente a conta de armazenamento e o espaço de trabalho, ou esses destinos são removidos.

Opção B: Criar uma definição de diagnóstico separada apenas para Hubs de Eventos

Se preferires manter a tua configuração atual inalterada e adicionar uma segunda,

# Find the HSM cluster name
hsmClusterName=$(az resource list \
  --resource-group "<resource-group>" \
  --resource-type Microsoft.HardwareSecurityModules/cloudHsmClusters \
  --query "[0].name" --output tsv)

hsmResourceId=$(az resource show \
  --resource-group "<resource-group>" \
  --resource-type Microsoft.HardwareSecurityModules/cloudHsmClusters \
  --name $hsmClusterName \
  --query id --output tsv)

authRuleId=$(az eventhubs namespace authorization-rule show \
  --name "DiagnosticSettingsSendRule" \
  --namespace-name "<eventhub-namespace>" \
  --resource-group "<resource-group>" \
  --query id --output tsv)

az monitor diagnostic-settings create \
  --name "chsm-eventhub-diagnostic-setting" \
  --resource $hsmResourceId \
  --event-hub "cloudhsm-logs" \
  --event-hub-rule $authRuleId \
  --logs '[{"category":"HsmServiceOperations","enabled":true}]'

Observação

O Azure suporta até cinco definições de diagnóstico por recurso. Uma segunda configuração é válida e mantém as preocupações separadas.

O Verify Event Hubs está a receber mensagens

Depois de configurares a definição de diagnóstico, verifica se o Event Hubs está a receber registos do Cloud HSM.

Verifique as definições de diagnóstico no portal

  1. No portal Azure, aceda ao seu cluster Cloud HSM.
  2. Em Monitorização, selecione Definições de diagnóstico.
  3. Confirme que o Event Hubs está listado como destino.

Verifique as métricas dos Event Hubs

Execute o seguinte comando para verificar as mensagens recebidas na última hora:

# Get your subscription ID
subId=$(az account show --query id --output tsv)

# Check incoming messages (last 1 hour)
az monitor metrics list \
  --resource "/subscriptions/$subId/resourceGroups/<resource-group>/providers/Microsoft.EventHub/namespaces/<eventhub-namespace>" \
  --metric "SuccessfulRequests" \
  --interval PT1H \
  --output table

Ver mensagens (opcional)

Se quiser ler algumas mensagens para confirmar o conteúdo, crie uma regra de Ouvir :

# Create a Listen rule for your consumer
az eventhubs namespace authorization-rule create \
  --name "ConsumerListenRule" \
  --namespace-name "<eventhub-namespace>" \
  --resource-group "<resource-group>" \
  --rights Listen

# Get the connection string
az eventhubs namespace authorization-rule keys list \
  --name "ConsumerListenRule" \
  --namespace-name "<eventhub-namespace>" \
  --resource-group "<resource-group>" \
  --query primaryConnectionString --output tsv

Pode usar esta cadeia de ligação com o Hubs de Eventos do Azure Explorer, a extensão Visual Studio Code Event Hubs ou um script Python para visualizar mensagens.