Recevoir des notifications concernant un coffre de clés et y répondre avec Azure Event GridReceive and respond to key vault notifications with Azure Event Grid

L’intégration d’Azure Key Vault à Azure Event Grid permet de notifier l’utilisateur en cas de changement de l’état d’un secret stocké dans un coffre de clés.Azure Key Vault integration with Azure Event Grid enables user notification when the status of a secret stored in a key vault has changed. Pour obtenir une vue d’ensemble de cette fonctionnalité, consultez Supervision de Key Vault avec Event Grid.For an overview of this feature, see Monitoring Key Vault with Event Grid.

Ce guide explique comment recevoir des notifications de Key Vault via Event Grid, et comment répondre aux changements d’état via Azure Automation.This guide describes how to receive Key Vault notifications through Event Grid, and how to respond to status changes through Azure Automation.

PrérequisPrerequisites

ConceptsConcepts

Event Grid est un service de gestion d’événements dans le cloud.Event Grid is an eventing service for the cloud. En suivant les étapes de ce guide, vous allez vous abonner à des événements pour Key Vault et les router vers Automation.By following the steps in this guide, you'll subscribe to events for Key Vault and route events to Automation. Lorsque l’un des secrets du coffre de clés est sur le point d’expirer, Event Grid est averti de la modification de l’état et lance une requête HTTP POST sur le point de terminaison.When one of the secrets in the key vault is about to expire, Event Grid is notified of the status change and makes an HTTP POST to the endpoint. Un Webhook déclenche ensuite une exécution Automation d’un script PowerShell.A web hook then triggers an Automation execution of a PowerShell script.

Organigramme HTTP POST

Créer un compte AutomationCreate an Automation account

Créez un compte Automation via le portail Azure :Create an Automation account through the Azure portal:

  1. Accédez à portal.azure.com et connectez-vous à votre abonnement.Go to portal.azure.com and log in to your subscription.

  2. Dans la zone de recherche, entrez Comptes Automation.In the search box, enter Automation Accounts.

  3. Dans la section Services de la liste déroulante de la barre de recherche, sélectionnez Comptes Automation.Under the Services section of the drop-down list on the search bar, select Automation Accounts.

  4. Sélectionnez Ajouter.Select Add.

    Volet Comptes Automation

  5. Entrez les informations nécessaires dans le volet Ajouter un compte Automation, puis sélectionnez Créer.Enter the required information in the Add Automation Account pane and then select Create.

Créer un runbookCreate a runbook

Une fois votre compte Automation prêt, créez un runbook.After your Automation account is ready, create a runbook.

Créer une IU de runbook

  1. Sélectionnez le compte Automation que vous venez de créer.Select the Automation account you just created.

  2. Sélectionnez Runbooks sous Automatisation des processus.Select Runbooks under Process Automation.

  3. Sélectionnez Créer un runbook.Select Create a runbook.

  4. Donnez un nom à votre runbook et sélectionnez PowerShell comme type de runbook.Name your runbook and select PowerShell as the runbook type.

  5. Sélectionnez le runbook que vous avez créé, puis sélectionnez le bouton Modifier.Select the runbook you created and then select the Edit button.

  6. Entrez le code suivant (à des fins de test), puis sélectionnez le bouton Publier.Enter the following code (for testing purposes) and select the Publish button. Cette action retourne le résultat de la requête POST reçue.This action returns the result of the POST request received.

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." 
}

Publier l’IU du runbook

Créer un webhookCreate a webhook

Créez un Webhook pour déclencher le runbook que vous venez de créer.Create a webhook to trigger your newly created runbook.

  1. Sélectionnez Webhooks dans la section Ressources du runbook que vous venez de publier.Select Webhooks from the Resources section of the runbook you just published.

  2. Sélectionnez Ajouter un Webhook.Select Add Webhook.

    Bouton Ajouter un Webhook

  3. Sélectionnez Créer un Webhook.Select Create new Webhook.

  4. Nommez le Webhook, définissez une date d’expiration, puis copiez l’URL.Name the webhook, set an expiration date, and copy the URL.

    Importante

    Vous ne pouvez pas voir l’URL une fois que vous l’avez créée.You can't view the URL after you create it. Veillez à en enregistrer une copie à un emplacement sûr et accessible pour le reste de ce guide.Make sure you save a copy in a secure location where you can access it for the remainder of this guide.

  5. Sélectionnez Paramètres et valeurs pour l’exécution, puis OK.Select Parameters and run settings and then select OK. N’entrez aucun paramètre.Don't enter any parameters. Cela permet d’activer le bouton Créer.This will enable the Create button.

  6. Sélectionnez OK, puis Créer.Select OK and then select Create.

    Créer une IU de Webhook

Créer un abonnement Event GridCreate an Event Grid subscription

Créez un abonnement Event Grid sur le Portail Azure.Create an Event Grid subscription through the Azure portal.

  1. Accédez à votre coffre de clés et sélectionnez l’onglet Événements.Go to your key vault and select the Events tab.

    Onglet Événements du portail Azure

  2. Sélectionnez le bouton Abonnement aux événements.Select the Event Subscription button.

  3. Donnez un nom descriptif à l’abonnement.Create a descriptive name for the subscription.

  4. Choisissez Schéma Event Grid.Choose Event Grid Schema.

  5. La ressource de rubrique doit être le coffre de clés dont vous souhaitez superviser les changements d’état.Topic Resource should be the key vault you want to monitor for status changes.

  6. Pour Filtrer sur les types d’événement, laissez toutes les options sélectionnées (9 sélectionnées).For Filter to Event Types, leave all options selected (9 selected).

  7. Pour Type de point de terminaison, sélectionnez Webhook.For Endpoint Type, select Webhook.

  8. Choisissez Sélectionner un point de terminaison.Choose Select an endpoint. Dans le nouveau volet contextuel, collez l’URL de Webhook de l’étape Créer un Webhook dans le champ Point de terminaison de l’abonné.In the new context pane, paste the webhook URL from the Create a webhook step into the Subscriber Endpoint field.

  9. Sélectionnez Confirmer la sélection dans le volet contextuel.Select Confirm Selection on the context pane.

  10. Sélectionnez Create (Créer).Select Create.

    Créer un abonnement aux événements

Tester et vérifierTest and verify

Vérifiez que votre abonnement Event Grid est correctement configuré.Verify that your Event Grid subscription is properly configured. Ce test suppose que vous êtes abonné à la notification « Version du secret créée » dans Créer un abonnement Event Grid, et que vous disposez des autorisations nécessaires pour créer une version d’un secret dans un coffre de clés.This test assumes you have subscribed to the "Secret New Version Created" notification in the Create an Event Grid subscription, and that you have the necessary permissions to create a new version of a secret in a key vault.

Tester la configuration de l’abonnement Event Grid

Volet Créer un secret

  1. Accédez à votre coffre de clés dans le portail Azure.Go to your key vault on the Azure portal.

  2. Créer un secret.Create a new secret. À des fins de test, définissez la date d’expiration au jour suivant.For testing purposes, set the expiration to date to the next day.

  3. Sous l’onglet Événements de votre coffre de clés, sélectionnez l’abonnement Event Grid que vous avez créé.On the Events tab in your key vault, select the Event Grid subscription you created.

  4. Sous Métriques, vérifiez si un événement a été capturé.Under Metrics, check whether an event was captured. Deux événements sont attendus : SecretNewVersion et SecretNearExpiry.Two events are expected: SecretNewVersion and SecretNearExpiry. Ces événements confirment que Event Grid a correctement capturé le changement d’état du secret dans votre coffre de clés.These events validate that Event Grid successfully captured the status change of the secret in your key vault.

    Volet Métriques : recherche des événements capturés

  5. Accédez à votre compte Automation.Go to your Automation account.

  6. Sélectionnez l’onglet Runbooks, puis sélectionnez le runbook que vous avez créé.Select the Runbooks tab, and then select the runbook you created.

  7. Sélectionnez l’onglet Webhooks, puis vérifiez que l’horodatage du « dernier déclenchement » se situe dans un délai de 60 secondes après la création du secret.Select the Webhooks tab, and confirm that the "last triggered" time stamp is within 60 seconds of when you created the new secret. Ce résultat confirme qu’Event Grid a envoyé une requête POST au Webhook en indiquant les détails de l’événement de changement d’état relatif à votre coffre de clés, et que le Webhook a été déclenché.This result confirms that Event Grid made a POST to the webhook with the event details of the status change in your key vault and that the webhook was triggered.

    Onglet Webhooks, horodatage du dernier déclenchement

  8. Retournez à votre runbook, puis sélectionnez l’onglet Vue d’ensemble.Return to your runbook and select the Overview tab.

  9. Examinez la liste Tâches récentes.Look at the Recent Jobs list. Vous devriez voir qu’une tâche a été créée et que l’état est terminé.You should see that a job was created and that the status is complete. Cela confirme que le webhook a déclenché le runbook pour commencer l’exécution de son script.This confirms that the webhook triggered the runbook to start executing its script.

    Liste Tâches récente du Webhook

  10. Sélectionnez la tâche récente, puis examinez la requête POST envoyée au Webhook par Event Grid.Select the recent job and look at the POST request that was sent from Event Grid to the webhook. Examinez le JSON et vérifiez que les paramètres de votre coffre de clés et du type d’événement sont corrects.Examine the JSON and make sure that the parameters for your key vault and event type are correct. Si le paramètre « type d’événement » de l’objet JSON correspond à l’événement qui s’est produit dans le coffre de clés (dans cet exemple, Microsoft.KeyVault.SecretNearExpiry), le test a réussi.If the "event type" parameter in the JSON object matches the event that occurred in the key vault (in this example, Microsoft.KeyVault.SecretNearExpiry), the test was successful.

DépannageTroubleshooting

Vous ne pouvez pas créer un abonnement à un événementYou can't create an event subscription

Réinscrivez Event Grid et le fournisseur de coffres de clés auprès de vos fournisseurs de ressources d’abonnement Azure.Reregister Event Grid and the key vault provider in your Azure subscription resource providers. Voir Fournisseurs et types de ressources Azure.See Azure resource providers and types.

Étapes suivantesNext steps

Félicitations !Congratulations! Si vous avez correctement suivi toutes ces étapes, vous êtes maintenant prêt à répondre par programmation aux changements d’état des secrets stockés dans votre coffre de clés.If you've correctly followed all these steps, you're now ready to programmatically respond to status changes of secrets stored in your key vault.

Si vous avez utilisé un système d’interrogation pour rechercher les changements d’état des secrets dans vos coffres de clés, vous pouvez désormais vous servir de cette fonctionnalité de notification.If you've been using a polling-based system to search for status changes of secrets in your key vaults, you can now start using this notification feature. Vous pouvez également remplacer le script de test de votre runbook par du code pour renouveler vos secrets par programmation au moment où ils sont sur le point d’expirer.You can also replace the test script in your runbook with code to programmatically renew your secrets when they're about to expire.

En savoir plus :Learn more: