Получение уведомлений хранилища ключей и реагирование на них с помощью Сетки событий Azure
Интеграция Azure Key Vault с Сеткой событий Azure позволяет пользователям получать уведомления при изменении состояния секрета, хранимого в хранилище ключей. Общие сведения об этой функции см. в статье о мониторинге Key Vault с помощью службы "Сетка событий".
В этом руководстве показано, как получать уведомления Key Vault через Сетку событий Azure и как реагировать на изменения состояния с помощью службы автоматизации Azure.
Необходимые компоненты
- Подписка Azure. Если у вас еще нет подписки Azure, создайте бесплатную учетную запись, прежде чем начинать работу.
- Хранилище ключей в подписке Azure. Вы можете быстро создать хранилище ключей, выполнив действия, описанные в статье Краткое руководство. Настройка и получение секрета из Azure Key Vault с помощью Azure CLI.
Основные понятия
Сетка событий Azure — это служба обработки событий для облака. Выполнив действия в этом руководстве, вы подпишетесь на события для Key Vault и будете перенаправлять эти события в службу автоматизации Azure. Когда срок действия одного из секретов в хранилище ключей подходит к концу (по определению это происходит за 30 дней до даты окончания срока действия), Сетка событий получает уведомление об изменении состояния и выполняет HTTP-запрос POST к конечной точке. Затем веб-перехватчик активирует выполнение сценария PowerShell в службе автоматизации.
Создание учетной записи службы автоматизации
Создайте учетную запись службы автоматизации на портале Azure:
Перейдите по адресу portal.azure.com и войдите в свою подписку.
В поле поиска введите учетные записи автоматизации.
В разделе Службы раскрывающегося списка на панели поиска выберите Учетные записи автоматизации.
Выберите Добавить.
Введите необходимые сведения в области Добавление учетной записи службы автоматизации и нажмите кнопку Создать.
Создать Runbook
Когда ваша учетная запись службы автоматизации будет готова, создайте модуль runbook.
Выберите созданную учетную запись службы автоматизации.
Выберите Модули Runbook в разделе Автоматизация процессов.
Нажмите кнопку Создать Runbook.
Введите имя модуля Runbook и выберите значение PowerShell в качестве типа модуля Runbook.
Щелкните созданный модуль runbook и нажмите кнопку Изменить.
Введите приведенный ниже код (для тестирования) и нажмите кнопку Опубликовать. Это действие возвращает полученный результат запроса 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.
Нажмите кнопку Добавить веб-перехватчик.
Нажмите кнопку Создать новый веб-перехватчик.
Присвойте имя веб-перехватчику, задайте дату окончания срока действия и скопируйте URL-адрес.
Внимание
Когда создание будет завершено, просмотреть URL-адрес будет невозможно. Обязательно сохраните копию в безопасном месте, к которому можно будет обратиться позже, чтобы выполнить действия в оставшейся части этого руководства.
Щелкните Параметры и настройки запуска и нажмите кнопку ОК. Не вводите никаких параметров. Кнопка "Создать" будет включена.
Нажмите кнопку ОК, а затем выберите Создать.
Создание подписки Сетки событий
Создайте подписку Сетки событий на портале Azure.
Перейдите в хранилище ключей и выберите вкладку События.
Нажмите кнопку Подписка на события.
Введите описательное имя для подписки.
Выберите раздел Схема Сетки событий.
В поле Ресурс раздела должно быть указано хранилище ключей, для которого необходимо отслеживать изменение состояний.
В поле Фильтр по типам событий оставьте установленными все 9 флажков.
Для типа конечной точки выберите Веб-перехватчик.
Выберите Выбрать конечную точку. В новой области контекста в поле Конечная точка подписчика вставьте URL-адрес веб-перехватчика из шага Создание веб-перехватчика.
Выберите Подтвердить выбор в области контекста.
Нажмите кнопку создания.
Тестирование и проверка
Убедитесь, что подписка на Сетку событий настроена правильно. В этом тесте предполагается, что вы подписались на уведомление Secret New Version Created (Создана новая версия секрета) при создании подписки Сетки событий и у вас есть необходимые разрешения для создания новой версии секрета в хранилище ключей.
Переход в хранилище ключей на портале Azure.
Создайте секрет. В целях тестирования для срока действия укажите следующий день.
На вкладке События в хранилище ключей выберите созданную подписку на Сетку событий.
В разделе Метрики проверьте, было ли событие записано. Ожидаются два события: SecretNewVersion и SecretNearExpiry. Эти события подтверждают, что Сетка событий успешно записала изменение состояния секрета в хранилище ключей.
Перейдите в учетную запись службы автоматизации.
Перейдите на вкладку Модули Runbook и выберите созданный модуль runbook.
Перейдите на вкладку Веб-перехватчики и убедитесь, что метка времени "Последняя активация" находится в пределах 60 секунд после времени создания секрета. Этот результат подтверждает, что Сетка событий отправила запрос POST в веб-перехватчик с данными события об изменении состояния в хранилище ключей и веб-перехватчик был активирован.
Вернитесь к модулю runbook и перейдите на вкладку Обзор.
Просмотрите список Недавние задания. Вы должны увидеть, что задание было создано, а его состояние — "Завершено". Это подтверждает, что веб-перехватчик активировал runbook, чтобы запустить выполнение сценария.
Выберите недавнее задание и просмотрите запрос POST, отправленный из Сетки событий в веб-перехватчик. Проверьте код JSON и убедитесь в правильности параметров для хранилища ключей и типа события. Если параметр event type (Тип события) в объекте JSON соответствует событию, которое произошло в хранилище ключей (в данном примере это Microsoft.KeyVault.SecretNearExpiry), то проверка прошла успешно.
Устранение неполадок
Не удается создать подписку на событие
Повторите регистрацию Сетки событий и поставщика хранилища ключей в поставщиках ресурсов подписки Azure. Ознакомьтесь с разделом Поставщики и типы ресурсов Azure.
Следующие шаги
Поздравляем! Если вы выполнили все описанные выше действия, теперь все готово для программного реагирования на изменение состояния секретов в хранилище ключей.
Если вы используете систему на основе опроса для выявления изменений состояния секретов в хранилищах ключей, теперь вы можете начать использовать эту функцию уведомления. Вы можете также заменить сценарий теста в модуле runbook кодом для программного продления секретов, когда срок их действия подходит к концу.
Подробнее:
- Общие сведения: Мониторинг Key Vault с помощью Сетки событий Azure
- Практическое руководство: Получение сообщения электронной почты при изменении секрета в хранилище ключей
- Схема событий Сетки событий Azure для Azure Key Vault
- Общие сведения об Azure Key Vault
- Обзор службы "Сетка событий Azure"
- Обзор службы автоматизации Azure