Freigeben über


Lernprogramm: Konfigurieren von Event Hubs für Azure Cloud HSM

Wenn Sie die Ereignisprotokollierung für Azure Cloud HSM konfiguriert haben, verfügen Sie bereits über eine funktionierende Diagnoseeinstellung auf Ihrem Cloud HSM-Cluster, die HsmServiceOperations Protokolle an Speicher und Log Analytics weiterleiten. Um Event Hubs als Ziel hinzuzufügen, fügen Sie dieser Diagnoseeinstellung ein drittes Ziel hinzu, oder erstellen Sie eine neue, die auf Event Hubs ausgerichtet ist.

Azure Monitor Diagnoseeinstellungen unterstützen mehrere Ziele gleichzeitig. Da Ihre Log Analytics-Pipeline bereits beweist, dass die Protokollemissionen von Cloud HSM funktionieren, wird Event Hubs zu einem weiteren Ziel, das dieselbe HsmServiceOperations Kategorie empfängt.

In diesem Tutorial lernen Sie Folgendes:

  • Erstellen Sie einen Event Hub-Namespace und einen Event Hub für Cloud HSM-Protokolle.
  • Konfigurieren Sie Autorisierungsregeln mit den geringsten Rechten.
  • Aktualisieren Sie Diagnoseeinstellungen, um Protokolle an Event Hubs zu streamen.
  • Stellen Sie sicher, dass Event Hubs Cloud HSM-Vorgangsereignisse empfängt.

Voraussetzungen

Überprüfen, ob die Protokollressourcengruppe vorhanden ist

Event Hubs sollten in derselben Ressourcengruppe bereitgestellt werden, die Ihr Speicherkonto und Ihren Log Analytics-Arbeitsbereich zur Betriebsereignisprotokollierung enthält. Wenn Sie die Betriebsereignisprotokollierung nicht eingerichtet haben, folgen Sie zuerst den Anweisungen in Konfigurieren und Abfragen der Protokollierung von Betriebsvorgangsereignissen für Azure Cloud HSM.

Überprüfen Sie, ob Ihre zielorientierte Ressourcengruppe vorhanden ist:

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

Erstellen eines Event Hubs-Namespaces

Der Namespace ist der Container, der einen oder mehrere Event Hubs enthält. Verwenden Sie die Standardebene , die für die Integration von Diagnoseeinstellungen erforderlich ist.

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

Schlüsseloptionen:

  • Standard-SKU: Die Basisebene unterstützt keine Diagnoseeinstellungen als Ziel.
  • Kapazität 1: Eine Durchsatzeinheit (1-MB/s-Eingang, 2-MB/s-Ausgang) reicht für HSM-Überwachungsprotokolle aus.
  • Autoinflate deaktiviert: Das HSM-Log-Volumen ist niedrig, daher ist Autoinflate nicht erforderlich.

Erstellen eines Event Hubs im Namespace

Um die Cloud HSM-Protokolle zu empfangen, erstellen Sie einen Event Hub im 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

Schlüsseloptionen:

  • Partitionsanzahl 2: Zwei Partitionen sind für den HSM-Überwachungsprotokolldurchsatz ausreichend.
  • Aufbewahrungszeit von 168 Stunden: Nachrichten sieben Tage lang aufbewahren (das Maximum für die Standardebene).
  • Bereinigungsrichtlinie Löschen: Löschen von Nachrichten nach Ablauf des Aufbewahrungszeitraums.

Erstellen einer Consumergruppe

Erstellen Sie eine dedizierte Verbrauchergruppe für die nachgeschaltete Verarbeitung. Reservieren Sie die Standardgruppe $Default für andere Verwendungen.

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

Erstellen einer Autorisierungsregel

Diagnoseeinstellungen benötigen "Senden" -Berechtigung zum Senden von Protokollen an den Event Hub. Erstellen Sie eine Zugriffsrichtlinie mit nur den erforderlichen Berechtigungen.

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

Hinweis

Diese Regel gewährt nur Send Berechtigungen, nicht Listenoder Manage. Befolgen Sie das Prinzip der geringsten Rechte. Ihre nachgeschalteten Verbraucher (z. B. Azure Functions oder Stream Analytics) sollten eine separate Regel mit Listen-Berechtigung verwenden.

Rufen Sie die Ressourcen-ID der Autorisierungsregel ab

Rufen Sie die Ressourcen-ID der Autorisierungsregel zur Verwendung in der Diagnoseeinstellung ab.

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"

Speichern Sie diesen Wert für die Verwendung im nächsten Schritt.

Aktualisieren der Diagnoseeinstellung zum Hinzufügen von Event Hubs

Sie haben zwei Optionen zum Hinzufügen von Event Hubs als Ziel:

Mit diesem Ansatz wird Ihre vorhandene Diagnoseeinstellung aktualisiert, um Event Hubs hinzuzufügen, während Speicher und Log Analytics beibehalten werden.

# 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}]'

Von Bedeutung

Sowohl CLI- als auch PowerShell-Befehle ersetzen die gesamte Diagnoseeinstellung, wenn der Name einem vorhandenen entspricht. Sie müssen das Speicherkonto und den Arbeitsbereich erneut einschließen, oder diese Zielorte werden entfernt.

Option B: Erstellen einer separaten Diagnoseeinstellung nur für Event Hubs

Wenn Sie ihre vorhandene Einstellung lieber unverändert beibehalten und eine zweite hinzufügen möchten,

# 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}]'

Hinweis

Azure unterstützt bis zu fünf Diagnoseeinstellungen pro Ressource. Eine zweite Einstellung ist sinnvoll und ermöglicht eine klare Trennung der Bedenken.

Überprüfen, ob Event Hubs Nachrichten empfängt

Überprüfen Sie nach der Konfiguration der Diagnoseeinstellung, ob Event Hubs Cloud HSM-Protokolle empfängt.

Überprüfen der Diagnoseeinstellung im Portal

  1. Wechseln Sie im Azure-Portal zu Ihrem Cloud HSM-Cluster.
  2. Wählen Sie unter Überwachung die Option Diagnoseeinstellungen aus.
  3. Vergewissern Sie sich, dass Event Hubs als Ziel aufgeführt ist.

Überprüfen von Event Hubs-Metriken

Führen Sie den folgenden Befehl aus, um eingehende Nachrichten über die letzte Stunde zu überprüfen:

# 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

Anzeigen von Nachrichten (optional)

Wenn Sie einige Nachrichten lesen möchten, um Inhalte zu bestätigen, erstellen Sie eine Listenregel :

# 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

Sie können diese Verbindungszeichenfolge mit Azure Event Hubs Explorer, der Visual Studio Code Event Hubs-Erweiterung oder einem Python Skript verwenden, um Nachrichten anzuzeigen.