Recepción de notificaciones del almacén de claves y respuesta con Azure Event Grid

La integración de Azure Key Vault en Azure Event Grid permite a los usuarios recibir una notificación cuando cambia el estado de un secreto almacenado en el almacén de claves. Para información general sobre esta característica, consulte Supervisión de Key Vault con Event Grid.

En esta guía se describe cómo recibir notificaciones de Key Vault mediante Event Grid, y cómo responder a los cambios de estado con Azure Automation.

Prerrequisitos

Conceptos

Event Grid es un servicio de eventos para la nube. Al seguir los pasos de esta guía, se suscribirá a los eventos de Key Vault y enrutará los eventos a Automation. Cuando uno de los secretos del almacén de claves está a punto de expirar (se define como 30 días antes de la fecha de expiración), Event Grid recibe una notificación del cambio de estado y realiza una solicitud HTTP POST al punto de conexión. Después, un webhook desencadena una ejecución de Automation de un script de PowerShell.

Diagrama de flujo HTTP POST

Creación de una cuenta de Automation

Cree una cuenta de Automation mediante Azure Portal:

  1. Vaya a portal.azure.com e inicie sesión en la suscripción.

  2. En el cuadro de búsqueda, escriba Cuentas de Automation.

  3. En la sección Servicios de la lista desplegable de la barra de búsqueda, seleccione Cuentas de Automation.

  4. Seleccione Agregar.

    Panel Cuentas de Automation

  5. Escriba la información necesaria en el panel Agregar cuenta de Automation y, a continuación, seleccione Crear.

Crear un runbook

Una vez que la cuenta de Automation esté lista, cree un runbook.

Creación de la UI de un runbook

  1. Seleccione la cuenta de Automation que ha creado.

  2. Seleccione Runbooks en Automatización de procesos.

  3. Seleccione Crear un runbook.

  4. Asigne un nombre al runbook y seleccione PowerShell como tipo del runbook.

  5. Seleccione el runbook que ha creado y seleccione el botón Editar.

  6. Escriba el código siguiente (con fines de prueba) y seleccione el botón Publicar. Esta acción devuelve el resultado de la solicitud POST recibida.

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

Publicación de la UI de un runbook

Creación de un webhook

Cree un webhook para desencadenar el runbook que acaba de crear.

  1. Seleccione Webhooks en la sección Recursos del runbook que ha publicado.

  2. Seleccione Agregar Webhook.

    Botón Agregar webhook

  3. Seleccione Crear nuevo Webhook.

  4. Asígnele un nombre al webhook, establezca una fecha de expiración y copie la dirección URL.

    Importante

    Una vez que se cree, no podrá ver la dirección URL. Asegúrese de guardar una copia en una ubicación segura a la que pueda acceder durante el resto de esta guía.

  5. Seleccione Configuración de ejecución y parámetros y seleccione Aceptar. No escriba ningún parámetro. Se habilitará el botón Crear.

  6. Seleccione Aceptar y después Crear.

    Creación de la UI de un nuevo webhook

Creación de una suscripción de Event Grid

Cree una suscripción de Event Grid con Azure Portal.

  1. Vaya al almacén de claves y seleccione la pestaña Eventos.

    Pestaña Eventos en Azure Portal

  2. Seleccione el botón Suscripción a eventos.

  3. Cree un nombre descriptivo para la suscripción.

  4. Elija Esquema de Event Grid.

  5. Recurso de tema debe ser el almacén de claves cuyos cambios de estado desea supervisar.

  6. En Filtro para tipos de evento, deje seleccionadas todas las opciones (9 seleccionadas).

  7. En Tipo de punto de conexión, seleccione Webhook.

  8. Elija Seleccionar un punto de conexión. En el panel del nuevo contexto, pegue la dirección URL del webhook del paso Creación de un webhook en el campo Punto de conexión de suscriptor.

  9. Seleccione Confirmar selección en el panel de contexto.

  10. Seleccione Crear.

    Creación de la suscripción de eventos

Prueba y comprobación

Verifique que la suscripción a Event Grid esté correctamente configurada. En esta prueba se supone que se ha suscrito a la notificación "Secret New Version Created" (Nueva versión del secreto creada) en Creación de una suscripción de Event Grid y que tiene los permisos necesarios para crear una versión de un secreto en un almacén de claves.

Configuración de prueba de la suscripción a Event Grid

Creación de un panel de secretos

  1. Vaya al almacén de claves en Azure Portal.

  2. Cree un secreto. Para fines de prueba, establezca la fecha de caducidad para el día siguiente.

  3. En la pestaña Eventos del almacén de claves, seleccione la suscripción a Event Grid que creó.

  4. En Métricas, consulte si se capturó un evento. Se esperan dos: SecretNewVersion y SecretNearExpiry. Estos eventos validan que Event Grid capturó correctamente el cambio de estado del secreto en el almacén de claves.

    Panel Métricas: comprobación de eventos capturados

  5. Vaya a su cuenta de Automation.

  6. Seleccione la pestaña Runbooks y seleccione el runbook que creó.

  7. Seleccione la pestaña Webhooks y confirme que la marca de tiempo "Última vez que se desencadenó" se encuentra en un plazo de 60 segundos a partir del momento de la creación del secreto. Este resultado confirma que Event Grid realizó una solicitud POST en el webhook con los detalles del evento de cambio de estado en el almacén de claves, y que el webhook se desencadenó.

    Pestaña Webhooks, marca de tiempo de Última vez que se desencadenó

  8. Vuelva al runbook y seleccione la pestaña Información general.

  9. Examine la lista Trabajos recientes. Debería ver que se ha creado un trabajo y que el estado es completado. Esto confirma que el webhook desencadenó el runbook para iniciar la ejecución de su script.

    Lista de trabajos recientes del webhook

  10. Seleccione el trabajo reciente y examine la solicitud POST que se envió desde Event Grid al webhook. Examine el archivo JSON y asegúrese de que los parámetros para el almacén de claves y el tipo de evento son correctos. Si el parámetro "event type" del objeto JSON coincide con el evento que se produjo en el almacén de claves (en este ejemplo, Microsoft.KeyVault.SecretNearExpiry), la prueba se completó correctamente.

Solución de problemas

No puede crear la suscripción a un evento

Vuelva a registrar Event Grid y el proveedor del almacén de claves en los proveedores de recursos de la suscripción a Azure. Consulte Tipos y proveedores de recursos de Azure.

Pasos siguientes

Felicidades. Si ha seguido correctamente todos estos pasos, ya está listo para responder mediante programación a los cambios de estado de los secretos almacenados en el almacén de claves.

Si ha usado un sistema basado en sondeo para buscar cambios de estado en los secretos de los almacenes de claves, puede empezar a usar esta característica de notificación. También puede reemplazar el script de prueba del runbook con código para renovar los secretos mediante programación cuando están a punto de expirar.

Más información: