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 İzleme Key Vault.
Bu kılavuzda Event Grid aracılığıyla Key Vault bildirimleri alma ve Azure Otomasyonu aracılığıyla durum değişikliklerine yanıt verme işlemleri açıklanmaktadı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'den gizli dizi ayarlama ve alma bölümündeki 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 olaylara abone olur ve olayları Otomasyon'a yönlendirirsiniz. 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'e durum değişikliği bildirilir ve uç noktaya bir HTTP POST yapılır. 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.
Add (Ekle) seçeneğini belirleyin.
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'i seçin ve ayarları çalıştırın ve ardından Tamam'ı seçin. Hiçbir 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 aracılığıyla bir 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'siniAbone Uç Noktası alanına yapıştırın.
Bağlam bölmesinde Seçimi Onayla'yı seçin.
Oluştur’u seçin.
Test etme ve doğrulama
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 bir anahtar kasasında gizli dizinin 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şturduktan sonra 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ı olmuştur.
Sorun giderme
Olay aboneliği oluşturamazsınız
Azure aboneliği kaynak sağlayıcılarınızda Event Grid'i ve anahtar kasası sağlayıcısını 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 üzere olduğunda gizli dizilerinizi program aracılığıyla yenilemek için runbook'unuzda test betiğini kodla değiştirebilirsiniz.
Daha fazla bilgi edinin: