Tutorial: Configurar hubs de eventos para Azure HSM na nuvem

Se você já configurou o registro de eventos operacionais para o Azure Cloud HSM, então seu cluster já conta com uma configuração de diagnóstico funcional que encaminha os logs do HsmServiceOperations para o Armazenamento e o Log Analytics. Para adicionar Hubs de Eventos como destino, adicione um terceiro destino à mesma configuração de diagnóstico ou crie um novo que tenha como destino os Hubs de Eventos.

Azure Monitor configurações de diagnóstico dão suporte a vários destinos simultaneamente. Como o pipeline do Log Analytics já comprova que a emissão de logs do Cloud HSM está funcionando, o Hubs de Eventos passa a ser apenas mais um destino para a mesma categoria HsmServiceOperations.

Neste tutorial, você:

  • Crie um namespace do Hub de Eventos e um hub de eventos para logs de HSM em nuvem.
  • Configure regras de autorização com permissões de privilégio mínimo.
  • Atualize as configurações de diagnóstico para transmitir logs para Hubs de Evento.
  • Verifique se os Hubs de Eventos recebem eventos de operação HSM na nuvem.

Pré-requisitos

Verificar se o grupo de recursos de logs existe

O Hubs de Eventos deve ser implantado no mesmo grupo de recursos que contém a conta de armazenamento e o workspace do Log Analytics utilizados para o registro de eventos operacionais. Se você não configurou o log de eventos operacionais, primeiro siga as diretrizes em Configuração e consulta de log de eventos operacionais para Azure Cloud HSM.

Verifique se o grupo de recursos de destino existe:

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

Criar um namespace de Hubs de Eventos

O namespace é o contêiner que contém um ou mais hubs de eventos. Use a camada Standard , que é necessária para a integração de configuraçõ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: a camada Básica não dá suporte a configurações de diagnóstico como destino.
  • Capacidade 1: uma unidade de taxa de transferência (entrada de 1 MB/s, saída de 2 MB/s) é suficiente para logs de auditoria do HSM.
  • Autoinflate desativado: o volume de logs do HSM é baixo, portanto não há necessidade de habilitar o autoinflate.

Criar um hub de eventos dentro do namespace

Para receber os logs do HSM na nuvem, 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 permitir a taxa de transferência dos logs de auditoria do HSM.
  • Tempo de retenção 168 horas: mantenha as mensagens por sete dias (o máximo para a camada Standard).
  • Política de limpeza: Excluir: Excluir mensagens após o período de retenção expirar.

Criar um grupo de consumidores

Crie um grupo de consumidores dedicado para processamento downstream. 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 configurações de diagnóstico precisam de permissão Enviar para publicar logs no hub de eventos. Crie uma política de acesso compartilhado com apenas 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

Essa regra concede apenas Send permissão, não Listen, ou Manage. Siga o princípio dos privilégios mínimos. Seus consumidores downstream (como Azure Functions ou Stream Analytics) devem utilizar uma regra separada com permissão de escuta Listen.

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

Recupere o ID do recurso da regra de autorização para ser usado 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"

Salve esse valor para uso na próxima etapa.

Atualizar a configuração de diagnóstico para adicionar Hubs de Eventos

Você tem duas opções para adicionar Hubs de Eventos como destino:

Essa abordagem atualiza sua configuração de diagnóstico existente para adicionar Hubs de Eventos, mantendo o Armazenamento e 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

Os comandos da CLI e do PowerShell substituem a configuração de diagnóstico completa caso o nome corresponda a um existente. Você deve incluir a conta de armazenamento e o workspace novamente ou esses destinos serão removidos.

Opção B: criar uma configuração de diagnóstico separada somente para Hubs de Eventos

Se você preferir manter sua configuração existente 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

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

Verificar se os Hubs de Eventos estão recebendo mensagens

Depois de definir a configuração de diagnóstico, verifique se os Hubs de Eventos estão recebendo logs de HSM na nuvem.

Verificar a configuração de diagnóstico no portal

  1. No portal do Azure, vá para o cluster HSM da Nuvem.
  2. Em Monitoramento, selecione Configurações de diagnóstico.
  3. Confirme se os Hubs de Eventos estão listados como um destino.

Verificar as métricas dos Hubs de Eventos

Execute o seguinte comando para verificar as mensagens de entrada 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

Exibir mensagens (opcional)

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

# 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

Você pode usar essa cadeia de conexão com o Hubs de Eventos do Azure Explorer, a extensão Hubs de Eventos do Visual Studio Code, ou um script Python para exibir mensagens.