Udostępnij przez


Odbieranie powiadomień magazynu kluczy i odpowiadanie na nie za pomocą usługi Azure Event Grid

Integracja usługi Azure Key Vault z usługą Azure Event Grid umożliwia powiadomienie użytkownika, gdy status tajemnicy przechowywanej w skrytce kluczy ulegnie zmianie. Aby zapoznać się z omówieniem tej funkcji, zobacz Monitorowanie usługi Key Vault za pomocą usługi Event Grid.

W tym przewodniku opisano sposób odbierania powiadomień usługi Key Vault za pośrednictwem usługi Event Grid oraz reagowania na zmiany stanu za pośrednictwem usługi Azure Automation.

Wymagania wstępne

Koncepcje

Event Grid to usługa zdarzeń dla chmury. Wykonując kroki opisane w tym przewodniku, zasubskrybujesz zdarzenia dla usługi Key Vault i kierujesz zdarzenia do usługi Automation. Gdy jedna z tajemnic w magazynie kluczy wkrótce wygaśnie (zdefiniowana jako 30 dni przed datą wygaśnięcia), Event Grid zostanie powiadomiony o zmianie stanu i spowoduje wysłanie żądania HTTP POST do punktu końcowego. Następnie element webhook wyzwala wykonywanie automatyzacji skryptu programu PowerShell.

Schemat blokowy HTTP POST

Tworzenie konta usługi Automation

Utwórz konto usługi Automation za pośrednictwem witryny Azure Portal:

  1. Przejdź do portal.azure.com i zaloguj się do subskrypcji.

  2. W polu wyszukiwania wpisz Konta Automation.

  3. Na pasku wyszukiwania, w sekcji Usługi listy rozwijanej, wybierz pozycję Konta automatyzacji.

  4. Wybierz Dodaj.

    Panel Kont automatyzacji

  5. Wprowadź wymagane informacje w okienku Dodawanie konta usługi Automation , a następnie wybierz pozycję Utwórz.

Tworzenie elementu Runbook

Po przygotowaniu konta Automation utwórz runbook.

Utwórz interfejs użytkownika Runbook

  1. Wybierz utworzone konto usługi Automation.

  2. Wybierz Runbooki pod Automatyzacją procesów.

  3. Wybierz Utwórz Runbook.

  4. Nadaj runbookowi nazwę i wybierz pozycję PowerShell jako typ runbook.

  5. Wybierz utworzony Runbook i następnie wybierz przycisk Edytuj.

  6. Wprowadź następujący kod (na potrzeby testowania) i wybierz przycisk Publikuj . Ta akcja zwraca wynik odebranego żądania 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." 
}

Publikowanie interfejsu użytkownika Runbook

Tworzenie elementu webhook

Utwórz webhook, aby uruchomić nowo utworzony Runbook.

  1. Wybierz Webhooki z sekcji Zasoby opublikowanego Runbooka.

  2. Wybierz Dodaj webhook.

    Przycisk Dodaj element webhook

  3. Wybierz Utwórz nowy webhook.

  4. Nazwij element webhook, ustaw datę wygaśnięcia i skopiuj adres URL.

    Ważne

    Nie można wyświetlić adresu URL po jego utworzeniu. Upewnij się, że zapisano kopię w bezpiecznej lokalizacji, w której można uzyskać do niej dostęp w pozostałej części tego przewodnika.

  5. Wybierz pozycję Parametry i uruchom ustawienia , a następnie wybierz przycisk OK. Nie wprowadzaj żadnych parametrów. Przycisk Utwórz zostanie włączony.

  6. Wybierz przycisk OK , a następnie wybierz pozycję Utwórz.

    Tworzenie nowego webhook UI

Tworzenie subskrypcji usługi Event Grid

Utwórz subskrypcję usługi Event Grid za pośrednictwem witryny Azure Portal.

  1. Przejdź do magazynu kluczy i wybierz kartę Zdarzenia .

    Karta Zdarzenia w witrynie Azure Portal

  2. Wybierz przycisk Subskrypcja zdarzeń .

  3. Utwórz opisową nazwę subskrypcji.

  4. Wybierz Schemat Event Grid.

  5. Zasób tematu powinien być magazynem kluczy, który chcesz monitorować pod kątem zmian stanu.

  6. W polu Filtruj do typów zdarzeń pozostaw zaznaczone wszystkie opcje (wybrane 9).

  7. W polu Typ punktu końcowego wybierz pozycję Element webhook.

  8. Wybierz Wybierz punkt końcowy. W nowym okienku kontekstu wklej adres URL z kroku Tworzenie webhooka w polu Punkt końcowy subskrybenta.

  9. Wybierz Potwierdź wybór w panelu kontekstu.

  10. Wybierz Utwórz.

    Tworzenie subskrypcji zdarzeń

Testowanie i weryfikowanie

Sprawdź, czy subskrypcja usługi Event Grid została prawidłowo skonfigurowana. W tym teście przyjęto założenie, że zasubskrybowałeś powiadomienie "Utworzono nową wersję sekretu" w subskrypcji usługi Event Grid i że masz uprawnienia niezbędne do utworzenia nowej wersji sekretu w magazynie kluczy.

Testowanie konfiguracji subskrypcji usługi Event Grid

Okienko Tworzenie wpisu tajnego

  1. Przejdź do swojego skarbca kluczy na Azure Portal.

  2. Utwórz nową tajemnicę. Dla celów testowych ustaw datę wygaśnięcia na następny dzień.

  3. Na karcie Zdarzenia w magazynie kluczy wybierz utworzoną subskrypcję usługi Event Grid.

  4. W obszarze Metryki sprawdź, czy zdarzenie zostało przechwycone. Oczekiwane są dwa zdarzenia: SecretNewVersion i SecretNearExpiry. Te zdarzenia potwierdzają, że usługa Event Grid pomyślnie przechwyciła zmianę stanu tajemnicy w magazynie kluczy.

    Panel metryk: sprawdź przechwycone zdarzenia

  5. Przejdź do konta usługi Automation.

  6. Wybierz kartę Runbooks, a następnie wybierz utworzony Runbook.

  7. Wybierz kartę Webhooks i upewnij się, że sygnatura czasowa "ostatnio wyzwolona" jest w ciągu 60 sekund od momentu utworzenia nowego sekretu. Ten wynik potwierdza, że usługa Event Grid wykonała żądanie POST do webhooka z szczegółami zdarzenia zmiany stanu w magazynie kluczy i że webhook został wyzwolony.

    Zakładka Webhooki, sygnatura czasowa ostatniego uruchomienia

  8. Wróć do swojego planu operacyjnego i wybierz zakładkę Przegląd.

  9. Zapoznaj się z listą Ostatnie zadania . Powinno zostać wyświetlone, że zadanie zostało utworzone i że status został zakończony. To potwierdza, że webhook wyzwolił Runbook do rozpoczęcia wykonywania jego skryptu.

    Lista ostatnich zadań webhook

  10. Wybierz najnowsze zadanie i przyjrzyj się żądaniu POST wysłanemu z usługi Event Grid do webhook. Sprawdź kod JSON i upewnij się, że parametry skarbca kluczy oraz typu zdarzenia są poprawne. Jeśli parametr "typ zdarzenia" w obiekcie JSON odpowiada zdarzeniu, które wystąpiło w Key Vault (w tym przykładzie Microsoft.KeyVault.SecretNearExpiry), test zakończył się pomyślnie.

Rozwiązywanie problemów

Nie można utworzyć subskrypcji zdarzeń

Zarejestruj ponownie Event Grid i dostawcę usługi Azure Key Vault w dostawcach zasobów swojej subskrypcji platformy Azure. Zobacz Dostawcy zasobów i typy zasobów platformy Azure.

Dalsze kroki

Gratulacje! Jeśli wszystkie te kroki zostały wykonane poprawnie, możesz teraz programowo reagować na zmiany stanu tajemnic przechowywanych w magazynie kluczy.

Jeśli używasz systemu opartego na sondowaniu do wyszukiwania zmian statusu tajemnic w magazynach kluczy, możesz teraz używać tej funkcji powiadomienia. Możesz również zastąpić skrypt testowy w swoim runbooku kodem, aby programowo odnowić swoje sekrety, gdy zbliżają się do wygaśnięcia.

Więcej informacji: