Azure Event Grid ile anahtar kasası bildirimlerini alma ve yanıtlama
Azure Event Grid ile Azure Key Vault tümleştirmesi, anahtar kasasında depolanan bir gizli dizinin durumu değiştiğinde kullanıcı bildirimini etkinleştirir. Bu özelliğe genel bakış için bkz . Event Grid ile Key Vault'un izlenmesi.
Bu kılavuzda Event Grid aracılığıyla Key Vault bildirimlerini alma ve Azure Otomasyonu aracılığıyla durum değişikliklerine yanıt verme işlemleri açıklanır.
Önkoşullar
- Azure aboneliği. Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
- Azure Aboneliğinizde bir anahtar kasası. Azure CLI kullanarak Azure Key Vault'tan gizli dizi ayarlama ve alma bölümünde yer alan adımları izleyerek hızla yeni bir anahtar kasası oluşturabilirsiniz.
Kavramlar
Event Grid, bulut için bir olay hizmetidir. Bu kılavuzdaki adımları izleyerek Key Vault olaylarına abone olacak ve olayları Otomasyon'a yönlendireceksiniz. Anahtar kasasındaki gizli dizilerden birinin süresi dolmak üzere olduğunda (son kullanma tarihinden 30 gün önce olarak tanımlanır), Event Grid durum değişikliği hakkında bilgilendirilir ve uç noktaya bir HTTP POST yapar. Ardından bir web kancası PowerShell betiğinin Otomasyon yürütmesini tetikler.
Otomasyon hesabı oluşturma
Azure portalı aracılığıyla otomasyon hesabı oluşturun:
portal.azure.com gidin ve aboneliğinizde oturum açın.
Arama kutusuna Otomasyon Hesapları yazın.
Arama çubuğundaki açılan listenin Hizmetler bölümünde Otomasyon Hesapları'nı seçin.
Ekle'yi seçin.
Otomasyon Hesabı Ekle bölmesine gerekli bilgileri girin ve Oluştur'u seçin.
Runbook oluşturma
Otomasyon hesabınız hazır olduktan sonra bir runbook oluşturun.
Oluşturduğunuz Otomasyon hesabını seçin.
İşlem Otomasyonu altında Runbook'lar'ı seçin.
Runbook oluştur'u seçin.
Runbook'unuzu adlandırın ve runbook türü olarak PowerShell'i seçin.
Oluşturduğunuz runbook'u ve ardından Düzenle düğmesini seçin.
Aşağıdaki kodu girin (test amacıyla) ve Yayımla düğmesini seçin. Bu eylem alınan POST isteğinin sonucunu döndürür.
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."
}
Web kancası oluşturma
Yeni oluşturduğunuz runbook'unuzu tetikleyen bir web kancası oluşturun.
Yayımladığınız runbook'un Kaynaklar bölümünden Web Kancaları'nı seçin.
Web Kancası Ekle'yi seçin.
Yeni Web Kancası oluştur'u seçin.
Web kancasını adlandırın, son kullanma tarihi ayarlayın ve URL'yi kopyalayın.
Önemli
URL'yi oluşturduktan sonra görüntüleyemezsiniz. Bir kopyasını, bu kılavuzun geri kalanında erişebileceğiniz güvenli bir konuma kaydettiğinizden emin olun.
Parametreler ve çalıştırma ayarları'nı ve ardından Tamam'ı seçin. Parametre girmeyin. Oluştur düğmesi etkinleştirilir.
Tamam'ı ve ardından Oluştur'u seçin.
Event Grid aboneliği oluşturma
Azure portalı üzerinden Event Grid aboneliği oluşturun.
Anahtar kasanıza gidin ve Olaylar sekmesini seçin.
Olay Aboneliği düğmesini seçin.
Abonelik için açıklayıcı bir ad oluşturun.
Event Grid Şeması'nı seçin.
Konu Kaynağı , durum değişikliklerini izlemek istediğiniz anahtar kasası olmalıdır.
Olay Türlerine Filtre Uygula için tüm seçenekleri seçili bırakın (9 seçili).
Uç Noktası Türü için Web kancası'nı seçin.
Uç nokta seçin'i seçin. Yeni bağlam bölmesinde, Web kancası oluşturma adımındaki web kancası URL'sini Abone Uç Noktası alanına yapıştırın.
Bağlam bölmesinde Seçimi Onayla'yı seçin.
Oluştur'u belirleyin.
Test edin ve doğrulayın
Event Grid aboneliğinizin düzgün yapılandırıldığını doğrulayın. Bu test, Event Grid oluşturma aboneliğindeki "Gizli Yeni Sürüm Oluşturuldu" bildirimine abone olduğunuzu ve anahtar kasasında gizli dizilerin yeni bir sürümünü oluşturmak için gerekli izinlere sahip olduğunuzu varsayar.
Azure portalda anahtar kasanıza gidin.
Yeni bir gizli dizi oluşturun. Test amacıyla, sona erme tarihini sonraki güne ayarlayın.
Anahtar kasanızdaki Olaylar sekmesinde, oluşturduğunuz Event Grid aboneliğini seçin.
Ölçümler'in altında bir olayın yakalanıp yakalanmadığını denetleyin. İki olay beklenir: SecretNewVersion ve SecretNearExpiry. Bu olaylar Event Grid'in anahtar kasanızdaki gizli dizi durum değişikliğini başarıyla yakaladığını doğrular.
Otomasyon hesabınıza gidin.
Runbook'lar sekmesini ve ardından oluşturduğunuz runbook'u seçin.
Web Kancaları sekmesini seçin ve "son tetiklenen" zaman damgasının yeni gizli diziyi oluşturduğunuz 60 saniye içinde olduğunu onaylayın. Bu sonuç, Event Grid'in anahtar kasanızdaki durum değişikliğinin olay ayrıntılarıyla birlikte web kancasına bir POST yaptığını ve web kancasının tetiklendiğini doğrular.
Runbook'unuza dönün ve Genel Bakış sekmesini seçin.
Son İşler listesine bakın. Bir işin oluşturulduğunu ve durumun tamamlandığını görmeniz gerekir. Bu, web kancasının betiğini yürütmeye başlamak için runbook'u tetiklediğini onaylar.
Son işi seçin ve Event Grid'den web kancasına gönderilen POST isteğine bakın. JSON dosyasını inceleyin ve anahtar kasanız ve olay türünüz için parametrelerin doğru olduğundan emin olun. JSON nesnesindeki "olay türü" parametresi anahtar kasasında gerçekleşen olayla eşleşiyorsa (bu örnekte Microsoft.KeyVault.SecretNearExpiry), test başarılı oldu.
Sorun giderme
Olay aboneliği oluşturamazsınız
Event Grid'i ve anahtar kasası sağlayıcısını Azure aboneliği kaynak sağlayıcılarınızda yeniden kaydedin. Bkz. Azure kaynak sağlayıcıları ve türleri.
Sonraki adımlar
Tebrikler! Tüm bu adımları doğru bir şekilde izlediyseniz artık anahtar kasanızda depolanan gizli dizilerin durum değişikliklerine program aracılığıyla yanıt vermeye hazırsınız demektir.
Anahtar kasalarınızdaki gizli dizilerin durum değişikliklerini aramak için yoklama tabanlı bir sistem kullanıyorsanız artık bu bildirim özelliğini kullanmaya başlayabilirsiniz. Ayrıca, süresi dolmak üzereyken gizli dizilerinizi program aracılığıyla yenilemek için runbook'unuzda test betiğini kodla değiştirebilirsiniz.
Daha fazla bilgi edinin: