Получение уведомлений хранилища ключей и реагирование на них с помощью Сетки событий Azure

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

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

Предварительные требования

Основные понятия

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

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

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

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

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

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

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

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

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

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

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

Когда ваша учетная запись службы автоматизации будет готова, создайте модуль runbook.

Создание пользовательского интерфейса модуля runbook

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

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

  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

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

Создайте веб-перехватчик, чтобы активировать созданный модуль runbook.

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

  2. Нажмите кнопку Добавить веб-перехватчик.

    Кнопка

  3. Нажмите кнопку Создать новый веб-перехватчик.

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

    Важно!

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

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

  6. Нажмите кнопку ОК, а затем выберите Создать.

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

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

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

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

    Вкладка

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

  3. Введите описательное имя для подписки.

  4. Выберите раздел Схема Сетки событий.

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

  6. В поле Фильтр по типам событий оставьте установленными все 9 флажков.

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

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

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

  10. Нажмите кнопку создания.

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

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

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

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

Создание области секретов

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

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

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

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

    Панель

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

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

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

    Вкладка

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

  9. Просмотрите список Недавние задания. Вы должны увидеть, что задание было создано, а его состояние — "Завершено". Это подтверждает, что веб-перехватчик активировал runbook, чтобы запустить выполнение сценария.

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

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

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

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

Повторите регистрацию Сетки событий и поставщика хранилища ключей в поставщиках ресурсов подписки Azure. Ознакомьтесь с разделом Поставщики и типы ресурсов Azure.

Дальнейшие действия

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

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

Дополнительные сведения: