Поделиться через


Получение и реагирование на уведомления Key Vault с помощью Azure Event Grid.

Интеграция Azure Key Vault с Azure Event Grid позволяет получать уведомления пользователей при изменении состояния секрета, хранящегося в хранилище ключей. Общие сведения об этой функции см. в разделе "Мониторинг Key Vault" с помощью сетки событий.

В этом руководстве описывается, как получать уведомления Key Vault через сетку событий и как реагировать на изменения состояния с помощью службы автоматизации Azure.

Предпосылки

Концепции

Сетка событий — это служба событий для облака. Выполнив действия, описанные в этом руководстве, вы подпишитесь на события для Key Vault и перенаправите события в службу автоматизации. Когда один из секретов в хранилище ключей истекает (определяется как 30 дней до окончания срока действия), сетка событий уведомляется об изменении состояния и делает HTTP POST в конечную точку. Затем веб-перехватчик запускает выполнение скрипта PowerShell службы автоматизации.

Блок-схема HTTP POST

Создание учетной записи службы автоматизации

Создайте учетную запись службы автоматизации с помощью портала Azure:

  1. Перейдите к portal.azure.com и войдите в подписку.

  2. В поле поиска введите учетные записи службы автоматизации.

  3. В разделе "Службы " раскрывающегося списка на панели поиска выберите учетные записи службы автоматизации.

  4. Выберите Добавить.

    Панель учетных записей автоматизации

  5. Введите необходимые сведения в области "Добавить учетную запись службы автоматизации" и нажмите кнопку "Создать".

Создание модуля Runbook

После готовности учетной записи службы автоматизации создайте модуль Runbook.

Создание пользовательского интерфейса Runbook

  1. Выберите созданную учетную запись службы автоматизации.

  2. Выберите Runbooks в разделе Автоматизация процессов.

  3. Нажмите кнопку Создать Runbook.

  4. Назовите модуль Runbook и выберите PowerShell в качестве типа runbook.

  5. Выберите созданный модуль Runbook и нажмите кнопку "Изменить ".

  6. Введите следующий код (для тестирования) и нажмите кнопку "Опубликовать ". Это действие возвращает результат полученного запроса POST.

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

Публикация пользовательского интерфейса Runbook

Создание вебхука

Создайте вебхук для запуска недавно созданного рабочего блокнота.

  1. Выберите веб-перехватчики из раздела "Ресурсы " опубликованного модуля Runbook.

  2. Выберите Добавить веб-перехватчик.

    Кнопка

  3. Выберите Создать новый вебхук.

  4. Присвойте веб-перехватчику имя, задайте дату окончания срока действия и скопируйте URL-адрес.

    Это важно

    Вы не можете просмотреть URL-адрес после его создания. Сохраните копию в безопасном расположении, где вы можете получить доступ к ней на оставшуюся часть этого руководства.

  5. Выберите параметры и параметров запуска , а затем нажмите кнопку "ОК". Не вводите параметры. Кнопка "Создать " будет включена.

  6. Нажмите кнопку "ОК " и нажмите кнопку "Создать".

    Создание пользовательского интерфейса веб-перехватчика

Создать подписку на Event Grid

Создайте подписку сетки событий на портале Azure.

  1. Перейдите в хранилище ключей и перейдите на вкладку "События ".

    Вкладка

  2. Нажмите кнопку "Подписка на события ".

  3. Создайте описательное имя подписки.

  4. Выберите схему сетки событий.

  5. Ресурс раздела должен быть хранилищем ключей, которое необходимо отслеживать для изменений состояния.

  6. Для фильтрации по типам событий оставьте все выбранные параметры (9).

  7. Для типа конечной точки выберите Веб-перехватчик.

  8. Выберите Выбрать конечную точку. В новой области контекста вставьте URL-адрес веб-перехватчика из шага "Создать веб-перехватчик " в поле "Конечная точка подписчика ".

  9. Выберите "Подтвердить выбор" в области контекста.

  10. Выберите Создать.

    Создание подписки на события

Тестирование и проверка

Убедитесь, что подписка сетки событий настроена правильно. В этом тесте предполагается, что вы подписаны на уведомление "Секрет создания новой версии" в подписке "Создание сетки событий" и что у вас есть необходимые разрешения для создания новой версии секрета в хранилище ключей.

Тестовая конфигурация подписки сетки событий

Панель

  1. Переход в хранилище ключей на портале Azure.

  2. Создайте новый секрет. В целях тестирования задайте срок действия на следующий день.

  3. На вкладке "События " в хранилище ключей выберите созданную подписку сетки событий.

  4. В разделе "Метрики" проверьте, было ли записано событие. Ожидается два события: SecretNewVersion и SecretNearExpiry. Эти события подтверждают, что Event Grid успешно зафиксировал изменение статуса секретного ключа в вашем хранилище ключей.

    Область метрик: проверка регистрируемых событий

  5. Перейдите в учетную запись службы автоматизации.

  6. Выберите вкладку Runbooks и выберите созданный модуль Runbook.

  7. Перейдите на вкладку "Веб-перехватчики " и убедитесь, что метка времени последнего триггера находится в течение 60 секунд после создания нового секрета. Этот результат подтверждает, что сетка событий сделала post в веб-перехватчик с сведениями о событии изменения состояния в хранилище ключей и что веб-перехватчик был активирован.

    Вкладка

  8. Вернитесь в модуль Runbook и перейдите на вкладку "Обзор ".

  9. Просмотрите список последних заданий . Вы должны увидеть, что задание было создано и что состояние завершено. Это подтверждает, что веб-перехватчик активировал модуль Runbook, чтобы начать выполнение скрипта.

    Список последних заданий веб-перехватчика

  10. Выберите недавнее задание и просмотрите запрос POST, отправленный из Event Grid в веб-перехватчик. Проверьте JSON и убедитесь, что параметры для вашего хранилища ключей и типа события правильные. Если параметр "тип события" в объекте JSON соответствует событию, которое произошло в хранилище ключей (в этом примере Microsoft.KeyVault.SecretNearExpiry), тест выполнен успешно.

Устранение неполадок

Невозможно создать подписку на события

Перерегистрируйте Event Grid и провайдера Azure Key Vault в поставщиках ресурсов вашей подписки Azure. Ознакомьтесь с разделом Поставщики и типы ресурсов Azure.

Дальнейшие шаги

Поздравляю! Если вы правильно выполнили все эти действия, теперь вы готовы программно реагировать на изменения состояния секретов, хранящихся в хранилище ключей.

Если вы использовали систему на основе опроса для поиска изменений состояния секретов в хранилищах ключей, вы можете начать использовать эту функцию уведомления. Вы также можете заменить тестовый скрипт в модуле Runbook кодом для программного продления секретов при истечении срока действия.

Подробнее: