Receber e responder a notificações do cofre de chaves com Azure Event Grid

A integração do Azure Key Vault com Azure Event Grid ativa a notificação do utilizador quando o estado de um segredo armazenado num cofre de chaves foi alterado. Para obter uma descrição geral desta funcionalidade, veja Monitorizar Key Vault com o Event Grid.

Este guia descreve como receber notificações Key Vault através do Event Grid e como responder a alterações de estado através de Automatização do Azure.

Pré-requisitos

Conceitos

O Event Grid é um serviço de eventos para a cloud. Ao seguir os passos neste guia, irá subscrever eventos para Key Vault e encaminhar eventos para a Automatização. Quando um dos segredos no cofre de chaves está prestes a expirar (definido como 30 dias antes da data de expiração), o Event Grid é notificado da alteração de estado e efetua um HTTP POST no ponto final. Em seguida, um web hook aciona uma execução de Automatização de um script do PowerShell.

Fluxograma HTTP POST

Criar uma conta de Automatização

Crie uma conta de Automatização através do portal do Azure:

  1. Aceda a portal.azure.com e inicie sessão na sua subscrição.

  2. Na caixa de pesquisa, introduza Contas de Automatização.

  3. Na secção Serviços da lista pendente na barra de pesquisa, selecione Contas de Automatização.

  4. Selecione Adicionar.

    Painel Contas de automatização

  5. Introduza as informações necessárias no painel Adicionar Conta de Automatização e, em seguida, selecione Criar.

Criar um runbook

Quando a sua conta de Automatização estiver pronta, crie um runbook.

Criar uma IU do runbook

  1. Selecione a conta de Automatização que criou.

  2. Selecione Runbooks em Automatização de Processos.

  3. Selecione Criar um runbook.

  4. Atribua um nome ao runbook e selecione PowerShell como o tipo de runbook.

  5. Selecione o runbook que criou e, em seguida, selecione o botão Editar .

  6. Introduza o seguinte código (para fins de teste) e selecione o botão Publicar . Esta ação devolve o resultado do pedido POST recebido.

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

Publicar IU do runbook

Criar um webhook

Crie um webhook para acionar o runbook recentemente criado.

  1. Selecione Webhooks na secção Recursos do runbook que publicou.

  2. Selecione Adicionar Webhook.

    Botão Adicionar Webhook

  3. Selecione Criar novo Webhook.

  4. Atribua um nome ao webhook, defina uma data de expiração e copie o URL.

    Importante

    Não pode ver o URL depois de o criar. Certifique-se de que guarda uma cópia numa localização segura onde pode aceder à mesma durante o resto deste guia.

  5. Selecione Parâmetros e definições de execução e, em seguida, selecione OK. Não introduza parâmetros. O botão Criar será ativado.

  6. Selecione OK e, em seguida, selecione Criar.

    Criar nova IU do Webhook

Criar uma subscrição do Event Grid

Crie uma subscrição do Event Grid através do portal do Azure.

  1. Aceda ao cofre de chaves e selecione o separador Eventos .

    Separador Eventos no portal do Azure

  2. Selecione o botão Subscrição de Eventos .

  3. Crie um nome descritivo para a subscrição.

  4. Selecione Esquema do Event Grid.

  5. O Recurso do Tópico deve ser o cofre de chaves que pretende monitorizar para as alterações de estado.

  6. Para Filtrar por Tipos de Eventos, deixe todas as opções selecionadas (9 selecionadas).

  7. No Tipo de Ponto Final, selecione Webhook.

  8. Selecione Selecionar um ponto final. No novo painel de contexto, cole o URL do webhook a partir do passo Criar um webhook no campo Ponto Final do Subscritor .

  9. Selecione Confirmar Seleção no painel de contexto.

  10. Selecione Criar.

    Criar subscrição de eventos

Testar e verificar

Verifique se a subscrição do Event Grid está configurada corretamente. Este teste pressupõe que subscreveu a notificação "Secret New Version Created" na subscrição Criar um Event Grid e que tem as permissões necessárias para criar uma nova versão de um segredo num cofre de chaves.

Testar a configuração da subscrição do Event Grid

Painel Criar um segredo

  1. Aceda ao cofre de chaves no portal do Azure.

  2. Crie um novo segredo. Para fins de teste, defina a data de expiração para o dia seguinte.

  3. No separador Eventos no cofre de chaves, selecione a subscrição do Event Grid que criou.

  4. Em Métricas, verifique se foi capturado um evento. São esperados dois eventos: SecretNewVersion e SecretNearExpiry. Estes eventos validam que o Event Grid capturou com êxito a alteração de estado do segredo no cofre de chaves.

    Painel Métricas: verificar a existência de eventos capturados

  5. Aceda à sua conta de Automatização.

  6. Selecione o separador Runbooks e, em seguida, selecione o runbook que criou.

  7. Selecione o separador Webhooks e confirme que o carimbo de data/hora "último acionado" está dentro de 60 segundos após a criação do novo segredo. Este resultado confirma que o Event Grid efetuou um POST no webhook com os detalhes do evento da alteração de estado no cofre de chaves e que o webhook foi acionado.

    Separador Webhooks, Carimbo de data/hora Último Acionado

  8. Regresse ao runbook e selecione o separador Descrição geral .

  9. Observe a lista Tarefas Recentes . Deverá ver que foi criada uma tarefa e que o estado está concluído. Isto confirma que o webhook acionou o runbook para começar a executar o script.

    Lista de Tarefas Recentes do Webhook

  10. Selecione a tarefa recente e observe o pedido POST que foi enviado do Event Grid para o webhook. Examine o JSON e certifique-se de que os parâmetros do cofre de chaves e do tipo de evento estão corretos. Se o parâmetro "tipo de evento" no objeto JSON corresponder ao evento que ocorreu no cofre de chaves (neste exemplo, Microsoft.KeyVault.SecretNearExpiry), o teste foi bem-sucedido.

Resolução de problemas

Não pode criar uma subscrição de evento

Registe novamente o Event Grid e o fornecedor do cofre de chaves nos seus fornecedores de recursos de subscrição do Azure. Veja Fornecedores e tipos de recursos do Azure.

Passos seguintes

Parabéns! Se seguiu corretamente todos estes passos, está agora pronto para responder programaticamente às alterações de estado dos segredos armazenados no cofre de chaves.

Se tem utilizado um sistema baseado em consultas para procurar alterações de estado de segredos nos cofres de chaves, agora pode começar a utilizar esta funcionalidade de notificação. Também pode substituir o script de teste no runbook por código para renovar programaticamente os seus segredos quando estiverem prestes a expirar.

Saiba mais: