Recevoir des notifications concernant un coffre de clés et y répondre avec 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. Pour obtenir une vue d’ensemble de cette fonctionnalité, consultez Supervision de Key Vault avec 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.

Prérequis

Concepts

Event Grid est un service de gestion d’événements dans le cloud. En suivant les étapes de ce guide, vous allez vous abonner à des événements pour Key Vault et les router vers Automation. Lorsque l’un des secrets du coffre de clés est sur le point d’expirer (défini sur 30 jours avant la date d'expiration), Event Grid est averti de la modification de l’état et lance une requête HTTP POST sur le point de terminaison. Un Webhook déclenche ensuite une exécution Automation d’un script PowerShell.

Organigramme HTTP POST

Créer un compte Automation

Créez un compte Automation via le portail Azure :

  1. Accédez à portal.azure.com et connectez-vous à votre abonnement.

  2. Dans la zone de recherche, entrez Comptes Automation.

  3. Dans la section Services de la liste déroulante de la barre de recherche, sélectionnez Comptes Automation.

  4. Sélectionnez Ajouter.

    Volet Comptes Automation

  5. Entrez les informations nécessaires dans le volet Ajouter un compte Automation, puis sélectionnez Créer.

Créer un runbook

Une fois votre compte Automation prêt, créez un runbook.

Créer une IU de runbook

  1. Sélectionnez le compte Automation que vous avez créé.

  2. Sélectionnez Runbooks sous Automatisation des processus.

  3. Sélectionnez Créer un runbook.

  4. Donnez un nom à votre runbook et sélectionnez PowerShell comme type de runbook.

  5. Sélectionnez le runbook que vous avez créé, puis sélectionnez le bouton Modifier.

  6. Entrez le code suivant (à des fins de test), puis sélectionnez le bouton Publier. Cette action retourne le résultat de la requête POST reçue.

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 webhook

Créez un Webhook pour déclencher le runbook que vous venez de créer.

  1. Sélectionnez Webhooks dans la section Ressources du runbook que vous avez publié.

  2. Sélectionnez Ajouter un Webhook.

    Bouton Ajouter un Webhook

  3. Sélectionnez Créer un Webhook.

  4. Nommez le Webhook, définissez une date d’expiration, puis copiez l’URL.

    Important

    Vous ne pouvez pas voir l’URL une fois que vous l’avez créée. Veillez à en enregistrer une copie à un emplacement sûr et accessible pour le reste de ce guide.

  5. Sélectionnez Paramètres et valeurs pour l’exécution, puis OK. N’entrez aucun paramètre. Le bouton Créer est activé.

  6. Sélectionnez OK, puis Créer.

    Créer une IU de Webhook

Créer un abonnement Event Grid

Créez un abonnement Event Grid sur le Portail Azure.

  1. Accédez à votre coffre de clés et sélectionnez l’onglet Événements.

    Onglet Événements du portail Azure

  2. Sélectionnez le bouton Abonnement aux événements.

  3. Donnez un nom descriptif à l’abonnement.

  4. Choisissez Schéma Event Grid.

  5. La ressource de rubrique doit être le coffre de clés dont vous souhaitez superviser les changements d’état.

  6. Pour Filtrer sur les types d’événement, laissez toutes les options sélectionnées (9 sélectionnées).

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

  8. Choisissez Sélectionner un point de terminaison. 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é.

  9. Sélectionnez Confirmer la sélection dans le volet contextuel.

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

    Créer un abonnement aux événements

Tester et vérifier

Vérifiez que votre abonnement Event Grid est correctement configuré. 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.

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.

  2. Créer un secret. À des fins de test, définissez la date d’expiration au jour suivant.

  3. Sous l’onglet Événements de votre coffre de clés, sélectionnez l’abonnement Event Grid que vous avez créé.

  4. Sous Métriques, vérifiez si un événement a été capturé. Deux événements sont attendus : SecretNewVersion et SecretNearExpiry. Ces événements confirment que Event Grid a correctement capturé le changement d’état du secret dans votre coffre de clés.

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

  5. Accédez à votre compte Automation.

  6. Sélectionnez l’onglet Runbooks, puis sélectionnez le runbook que vous avez créé.

  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. 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é.

    Onglet Webhooks, horodatage du dernier déclenchement

  8. Retournez à votre runbook, puis sélectionnez l’onglet Vue d’ensemble.

  9. Examinez la liste Tâches récentes. Vous devriez voir qu’une tâche a été créée et que l’état est terminé. Cela confirme que le webhook a déclenché le runbook pour commencer l’exécution de son 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. Examinez le JSON et vérifiez que les paramètres de votre coffre de clés et du type d’événement sont corrects. 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.

Dépannage

Vous ne pouvez pas créer un abonnement à un événement

Réinscrivez Event Grid et le fournisseur de coffres de clés auprès de vos fournisseurs de ressources d’abonnement Azure. Voir Fournisseurs et types de ressources Azure.

Étapes suivantes

Félicitations ! 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.

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

En savoir plus :