Tutorial: Configuración de Event Hubs para Azure Cloud HSM

Si ha configurado el registro de eventos de operación para Azure Cloud HSM, ya dispone de una configuración de diagnóstico operativa en su clúster de Cloud HSM que enruta los registros HsmServiceOperations a Storage y Log Analytics. Para agregar Event Hubs como destino, agregue un tercer destino a esa misma configuración de diagnóstico o cree uno que tenga como destino Event Hubs.

Las configuraciones de diagnóstico de Azure Monitor admiten varios destinos simultáneamente. Dado que su pipeline de Log Analytics ya demuestra que la emisión de registros desde Cloud HSM funciona, Event Hubs se convierte en otro destino que recibe la misma categoría HsmServiceOperations.

En este tutorial, usted hará lo siguiente:

  • Cree un espacio de nombres de Event Hubs y un Event Hub para los registros de Cloud HSM.
  • Configure reglas de autorización con permisos con privilegios mínimos.
  • Actualice la configuración de diagnóstico para transmitir registros a Event Hubs.
  • Compruebe que Event Hubs recibe eventos de operación HSM en la nube.

Prerrequisitos

Compruebe que el grupo de recursos de registros existe

Event Hubs debería desplegarse en el mismo grupo de recursos que contiene la cuenta de almacenamiento y el área de trabajo de Log Analytics para el registro de eventos operativos. Si no configuró el registro de eventos operativos, siga primero las instrucciones de Configurar y consultar el registro de eventos operativos para Azure Cloud HSM.

Compruebe que el grupo de recursos de destino existe:

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

Crear un espacio de nombres de Event Hubs

El espacio de nombres es el contenedor que contiene uno o varios centros de eventos. Use el nivel Estándar , que es necesario para la integración de la configuración de diagnóstico.

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

Opciones principales:

  • SKU estándar: el nivel Básico no admite la configuración de diagnóstico como destino.
  • Capacidad 1: una unidad de rendimiento (entrada de 1 MB/s, salida de 2 MB/s) es suficiente para los registros de auditoría de HSM.
  • Autoinflate deshabilitado: el volumen de registros de HSM es bajo, por lo que no es necesario el autoinflate.

Creación de un centro de eventos dentro del espacio de nombres

Para recibir los registros de HSM en la nube, cree un centro de eventos dentro del espacio de nombres.

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

Opciones principales:

  • Número de particiones 2: Dos particiones son suficientes para el rendimiento de los registros de auditoría de HSM.
  • Tiempo de retención 168 horas: mantenga los mensajes durante siete días (el máximo para el nivel Estándar).
  • Política de limpieza Eliminar: Eliminar mensajes después de que expire el período de retención.

Creación de un grupo de consumidores

Cree un grupo de consumidores dedicado para el procesamiento de nivel inferior. Reserve el grupo predeterminado $Default para otros usos.

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

Creación de una regla de autorización

La configuración de diagnóstico necesita el permiso Enviar para enviar registros al Event Hub. Cree una directiva de acceso compartido con solo el permiso necesario.

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

Nota:

Esta regla concede solo Send permiso, no Listen, o Manage. Siga el principio de mínimo privilegio. Sus consumidores posteriores (como Azure Functions o Stream Analytics) deben utilizar una regla independiente con permiso Listen.

Obtenga el ID del recurso de la regla de autorización

Recupere el identificador de recurso de la regla de autorización para usar en la configuración 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 usarlo en el paso siguiente.

Actualización de la configuración de diagnóstico para agregar Event Hubs

Tiene dos opciones para agregar Event Hubs como destino:

Este enfoque actualiza la configuración de diagnóstico existente para agregar Event Hubs al tiempo que mantiene Storage y 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

Los comandos de la CLI y PowerShell reemplazan toda la configuración de diagnóstico si el nombre coincide con uno existente. Debe incluir nuevamente la cuenta de almacenamiento y el área de trabajo, o se eliminarán esos destinos.

Opción B: Crear una configuración de diagnóstico independiente solo para Event Hubs

Si prefiere mantener la configuración existente sin cambios y agregar una 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}]'

Nota:

Azure admite hasta cinco configuraciones de diagnóstico por recurso. Una segunda configuración es válida y mantiene separadas las preocupaciones.

Comprobación de que Event Hubs recibe mensajes

Después de configurar la configuración de diagnóstico, compruebe que Event Hubs recibe registros de HSM en la nube.

Comprobación de la configuración de diagnóstico en el portal

  1. En el portal de Azure, vaya al clúster de HSM en la nube.
  2. En Supervisión, seleccione Configuración de diagnóstico.
  3. Confirme que Event Hubs aparece como destino.

Comprobación de las métricas de Event Hubs

Ejecute el siguiente comando para comprobar los mensajes entrantes en la ú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 mensajes (opcional)

Si desea leer algunos mensajes para confirmar el contenido, cree una regla de escucha :

# 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

Puede usar este cadena de conexión con Azure Event Hubs Explorer, la extensión Visual Studio Code Event Hubs o un script de Python para ver los mensajes.