Empfangen von und Reagieren auf Key Vault-Benachrichtigungen mit Azure Event Grid

Die Azure Key Vault-Integration in Azure Event Grid ermöglicht die Benutzerbenachrichtigung, wenn sich der Status eines in einem Schlüsseltresor gespeicherten Geheimnisses geändert hat. Eine Übersicht über dieses Feature finden Sie unter Überwachen von Key Vault mit Event Grid.

In dieser Anleitung ist beschrieben, wie Sie Key Vault-Benachrichtigungen über Event Grid erhalten und wie Sie über Azure Automation auf Statusänderungen reagieren.

Voraussetzungen

Konzepte

Event Grid ist ein Ereignisdienst für die Cloud. Durch Ausführen der Schritte in diesem Leitfaden abonnieren Sie Ereignisse für Key Vault und leiten Sie Ereignisse an Automation weiter. Wenn eines der Geheimnisse im Schlüsseltresor in Kürze abläuft (definiert als 30 Tage vor dem Ablaufdatum), wird Event Grid über die Statusänderung informiert und sendet eine HTTP POST-Anforderung an den Endpunkt. Daraufhin löst ein Webhook eine Automation-Ausführung eines PowerShell-Skripts aus.

HTTP POST-Flussdiagramm

Erstellen eines Automation-Kontos

Erstellen Sie ein Automation-Konto über das Azure-Portal:

  1. Navigieren Sie zu „portal.azure.com“, und melden Sie sich bei Ihrem Abonnement an.

  2. Geben Sie Automation-Konten in das Suchfeld ein.

  3. Wählen Sie auf der Suchleiste im Dienste-Abschnitt des Dropdownmenüs die Option Automation-Konten aus.

  4. Wählen Sie Hinzufügen.

    Bereich „Automatisierungskonten“ (Automation-Konten)

  5. Geben Sie im Bereich Automation-Konto hinzufügen die erforderlichen Informationen ein, und wählen Sie anschließend Erstellen aus.

Erstellen eines Runbooks

Wenn Ihr Automation-Konto vorbereitet ist, erstellen Sie ein Runbook.

Benutzeroberfläche für Erstellen eines Runbooks

  1. Wählen Sie das von Ihnen erstellte Automation-Konto aus.

  2. Wählen Sie Runbooks unter Option Prozessautomatisierung aus.

  3. Wählen Sie Runbook erstellen aus.

  4. Benennen Sie Ihr Runbook, und wählen Sie als Runbooktyp PowerShell aus.

  5. Wählen Sie das von Ihnen erstellte Runbook aus, und wählen Sie dann die Schaltfläche Bearbeiten aus.

  6. Geben Sie (zu Testzwecken) den folgenden Code ein, und wählen Sie anschließend die Schaltfläche Veröffentlichen aus. Durch diese Aktion wird das Ergebnis der empfangenen POST-Anforderung zurückgegeben.

param
(
[Parameter (Mandatory = $false)]
[object] $WebhookData
)

#If runbook was called from Webhook, WebhookData will not be null.
if ($WebhookData) {

#rotate secret:
#generate new secret version in key vault
#update db/service with generated secret

#Write-Output "WebhookData <$WebhookData>"
Write-Output $WebhookData.RequestBody
}
else
{
# Error
write-Error "No input data found." 
}

Benutzeroberfläche für Veröffentlichen eines Runbooks

Erstellen eines Webhooks

Erstellen Sie einen Webhook, um Ihr neu erstelltes Runbook auszulösen.

  1. Wählen Sie im Abschnitt Ressourcen des von Ihnen veröffentlichten Runbooks die Option Webhooks aus.

  2. Wählen Sie Webhook hinzufügen aus.

    Schaltfläche „Webhook hinzufügen“

  3. Wählen Sie Neuen Webhook erstellen aus.

  4. Benennen Sie den Webhook, legen Sie ein Ablaufdatum fest, und kopieren Sie die URL.

    Wichtig

    Nach ihrer Erstellung kann die URL nicht mehr angezeigt werden. Speichern Sie sie an einem sicheren Ort, auf den Sie im weiteren Verlauf dieses Leitfadens problemlos zugreifen können.

  5. Wählen Sie Parameter und Ausführungseinstellungen aus, und wählen Sie dann OK aus. Geben Sie keine Parameter ein. Die Schaltfläche Erstellen wird aktiviert.

  6. Wählen Sie OK und anschließend Erstellen aus.

    Benutzeroberfläche für Erstellen eines neuen Webhooks

Erstellen eines Event Grid-Abonnements

Erstellen Sie ein Event Grid-Abonnement über das Azure-Portal.

  1. Navigieren Sie zu Ihrem Schlüsseltresor, und wählen Sie die Registerkarte Ereignisse aus.

    Registerkarte „Ereignisse“ im Azure-Portal

  2. Wählen Sie die Schaltfläche Ereignisabonnement aus.

  3. Erstellen Sie einen aussagekräftigen Namen für das Abonnement.

  4. Wählen Sie Event Grid-Schema aus.

  5. Themenressource muss der Schlüsseltresor sein, den Sie auf Statusänderungen überwachen möchten.

  6. Belassen Sie für Nach Ereignistypen filtern alle Optionen ausgewählt (9 ausgewählt).

  7. Wählen Sie unter Endpunkttyp die Option Webhook aus.

  8. Wählen Sie Endpunkt auswählen aus. Fügen Sie im neuen Kontextbereich die Webhook-URL aus dem Schritt Erstellen eines Webhooks in das Feld Abonnentenendpunkt ein.

  9. Wählen Sie im Kontextbereich die Option Auswahl bestätigen aus.

  10. Klicken Sie auf Erstellen.

    Erstellen eines Ereignisabonnements

Testen und Überprüfen

Vergewissern Sie sich, dass Ihr Event Grid-Abonnement ordnungsgemäß konfiguriert ist. Bei diesem Test wird davon ausgegangen, dass Sie im Schritt Erstellen eines Event Grid-Abonnements die Benachrichtigung für die Erstellung einer neuen Geheimnisversion (Secret New Version Created) abonniert haben und über die nötigen Berechtigungen verfügen, um in einem Schlüsseltresor eine neue Version eines Geheimnisses zu erstellen.

Testen der Konfiguration des Event Grid-Abonnements

Bereich „Geheimnis erstellen“

  1. Navigieren Sie im Azure-Portal zu Ihrem Schlüsseltresor.

  2. Erstellen Sie ein neues Geheimnis. Legen Sie zu Testzwecken das Ablaufdatum auf den nächsten Tag fest.

  3. Wählen Sie auf der Registerkarte Ereignisse in Ihrem Schlüsseltresor das Event Grid-Abonnement aus, das Sie erstellt haben.

  4. Überprüfen Sie unter Metriken, ob ein Ereignis erfasst wurde. Zwei Ereignisse werden erwartet: „SecretNewVersion“ und „SecretNearExpiry“. Mit diesen Ereignissen wird überprüft, ob die Statusänderung des Geheimnisses in Ihrem Schlüsseltresor von Event Grid erfolgreich erfasst wurde.

    Bereich „Metriken“: Überprüfen auf erfasste Ereignisse

  5. Navigieren Sie zu Ihrem Automation-Konto.

  6. Wählen Sie die Registerkarte Runbooks und anschließend das von Ihnen erstellte Runbook aus.

  7. Wählen Sie die Registerkarte Webhooks aus, und vergewissern Sie sich, dass der „Zuletzt ausgelöst“-Zeitstempel innerhalb von 60 Sekunden nach der Erstellung des neuen Geheimnisses liegt. Mit diesem Ergebnis wird bestätigt, dass Event Grid eine POST-Anforderung mit den Ereignisdetails der Statusänderung in Ihrem Schlüsseltresor an den Webhook gesendet hat und dass der Webhook ausgelöst wurde.

    Registerkarte „Webhooks“, „Zuletzt ausgelöst“-Zeitstempel

  8. Kehren Sie zu Ihrem Runbook zurück, und wählen Sie die Registerkarte Übersicht aus.

  9. Sehen Sie sich die Liste Kürzlich ausgeführte Aufträge an. Darin sollte ein erstellter und abgeschlossener Auftrag enthalten sein. Ist dies der Fall, hat der Webhook das Runbook ausgelöst, um die Skriptausführung zu starten.

    Webhook-Liste „Kürzlich ausgeführte Aufträge“

  10. Wählen Sie den aktuellen Auftrag aus, und sehen Sie sich die POST-Anforderung an, die von Event Grid an den Webhook gesendet wurde. Überprüfen Sie den JSON-Code, und vergewissern Sie sich, dass die Parameter für den Schlüsseltresor und den Ereignistyp korrekt sind. Wenn der Parameter „event type“ (Ereignistyp) im JSON-Objekt dem Ereignis entspricht, das im Schlüsseltresor aufgetreten ist (in diesem Beispiel: Microsoft.KeyVault.SecretNearExpiry), war der Test erfolgreich.

Problembehandlung

Sie können kein Ereignisabonnement erstellen.

Wiederholen Sie die Registrierung von Event Grid und des Key Vault-Anbieters in den Ressourcenanbietern Ihres Azure-Abonnements. Weitere Informationen finden Sie unter Azure-Ressourcenanbieter und -typen.

Nächste Schritte

Glückwunsch! Wenn Sie alle aufgeführten Schritte ordnungsgemäß ausgeführt haben, können Sie nun programmgesteuert auf Statusänderungen von Geheimnissen reagieren, die in Ihrem Schlüsseltresor gespeichert sind.

Falls Sie bislang ein abrufbasiertes System verwendet haben, um nach Statusänderungen von Geheimnissen in Ihren Schlüsseltresors zu suchen, können Sie nun beginnen, dieses Benachrichtigungsfeature zu verwenden. Sie können auch das Testskript in Ihrem Runbook durch Code ersetzen, um Ihre in Kürze ablaufenden Geheimnisse programmgesteuert zu erneuern.

Weitere Informationen: