İki kimlik doğrulama kimlik bilgisi kümesine sahip kaynaklar için gizli dizi döndürmeyi otomatikleştirme
Azure hizmetlerinde kimlik doğrulamanın en iyi yolu yönetilen kimlik kullanmaktır, ancak bunun bir seçenek olmadığı bazı senaryolar vardır. Böyle durumlarda erişim anahtarları veya parolalar kullanılır. Erişim anahtarlarını ve parolaları sık sık döndürmeniz gerekir.
Bu öğreticide, iki kimlik doğrulama kimlik bilgisi kümesi kullanan veritabanları ve hizmetler için gizli dizilerin düzenli olarak döndürülerek otomatikleştirilmesi gösterilmektedir. Özellikle, bu öğreticide Azure Key Vault'ta depolanan Azure Depolama hesabı anahtarlarının gizli dizi olarak nasıl döndürüldiği gösterilmektedir. Azure Event Grid bildirimi tarafından tetiklenen bir işlev kullanacaksınız.
Not
Depolama hesabı hizmetlerinde, istekleri yetkilendirmek için Microsoft Entra Id kullanılması önerilir. Daha fazla bilgi için bkz . Microsoft Entra Id kullanarak bloblara erişimi yetkilendirme. Erişim anahtarlarıyla depolama hesabı bağlantı dizesi gerektiren hizmetler vardır. Bu senaryo için bu çözümü öneririz.
Bu öğreticide açıklanan döndürme çözümü aşağıdadır:
Bu çözümde Azure Key Vault, depolama hesabı bireysel erişim anahtarlarını aynı gizli dizinin sürümleri olarak depolar ve sonraki sürümlerde birincil ve ikincil anahtar arasında değişiklik gösterir. Gizli anahtarın en son sürümünde bir erişim anahtarı depolandığında, alternatif anahtar yeniden oluşturulur ve gizli dizinin yeni sürümü olarak Key Vault'a eklenir. Çözüm, en yeni yeniden oluşturulan anahtara yenilemek için uygulamanın tüm döndürme döngüsünü sağlar.
- Key Vault, gizli dizinin sona erme tarihinden otuz gün önce event Grid'de neredeyse süre sonu olayını yayımlar.
- Event Grid olay aboneliklerini denetler ve olaya abone olan işlev uygulaması uç noktasını çağırmak için HTTP POST kullanır.
- İşlev uygulaması alternatif anahtarı (en son anahtarı değil) tanımlar ve yeniden oluşturmak için depolama hesabını çağırır.
- İşlev uygulaması, yeni oluşturulan anahtarı Azure Key Vault'a gizli dizinin yeni sürümü olarak ekler.
Önkoşullar
- Azure aboneliği. Ücretsiz bir tane oluşturun.
- Azure Cloud Shell. Bu öğreticide PowerShell env ile Cloud Shell portalı kullanılıyor
- Azure Key Vault.
- İki Azure depolama hesabı.
Not
Paylaşılan depolama hesabı anahtarının döndürülerek bu anahtara göre oluşturulan hesap düzeyi paylaşılan erişim imzası (SAS) iptal olur. Depolama hesabı anahtarı döndürmeden sonra, uygulamalarda kesinti yaşanmasını önlemek için hesap düzeyinde SAS belirteçlerini yeniden oluşturmanız gerekir.
Mevcut bir anahtar kasanız ve mevcut depolama hesaplarınız yoksa bu dağıtım bağlantısını kullanabilirsiniz:
Kaynak grubu'nun altında Yeni oluştur’u seçin. Grup kasası döndürmesini adlandırın ve Tamam'ı seçin.
Gözden geçir ve oluştur’u seçin.
Oluştur'u belirleyin.
Artık bir anahtar kasanız ve iki depolama hesabınız olacak. Bu komutu çalıştırarak Azure CLI veya Azure PowerShell'de bu kurulumu doğrulayabilirsiniz:
az resource list -o table -g vaultrotation
Sonuç şu çıkışa benzer olacaktır:
Name ResourceGroup Location Type Status
----------------------- -------------------- ---------- --------------------------------- --------
vaultrotation-kv vaultrotation westus Microsoft.KeyVault/vaults
vaultrotationstorage vaultrotation westus Microsoft.Storage/storageAccounts
vaultrotationstorage2 vaultrotation westus Microsoft.Storage/storageAccounts
Anahtar döndürme işlevini oluşturma ve dağıtma
Ardından, gerekli diğer bileşenlere ek olarak sistem tarafından yönetilen bir kimliğe sahip bir işlev uygulaması oluşturacaksınız. Depolama hesabı anahtarları için döndürme işlevini de dağıtacaksınız.
İşlev uygulaması döndürme işlevi aşağıdaki bileşenleri ve yapılandırmayı gerektirir:
- Azure Uygulaması Hizmeti planı
- İşlev uygulaması tetikleyicilerini yönetmek için bir depolama hesabı
- Key Vault'ta gizli dizilere erişmek için erişim ilkesi
- Depolama hesabı erişim anahtarlarına erişebilmesi için işlev uygulamasına atanan Depolama Hesabı Anahtarı Operatör Hizmeti rolü
- Olay tetikleyicisi ve HTTP tetikleyicisi (isteğe bağlı döndürme) ile anahtar döndürme işlevi
- SecretNearExpiry olayı için Event Grid olay aboneliği
Azure şablonu dağıtım bağlantısını seçin:
Kaynak grubu listesinde kasa döndürme'yi seçin.
Depolama Hesabı RG kutusuna, depolama hesabınızın bulunduğu kaynak grubunun adını girin. Depolama hesabınız zaten anahtar döndürme işlevini dağıtabileceğiniz aynı kaynak grubunda bulunuyorsa [resourceGroup().name] varsayılan değerini koruyun.
Depolama Hesabı Adı kutusuna, döndürülecek erişim anahtarlarını içeren depolama hesabının adını girin. Önkoşullar'da oluşturulan depolama hesabını kullanıyorsanız varsayılan [concat(resourceGroup().name, 'storage')] değerini koruyun.
Key Vault RG kutusuna anahtar kasanızın bulunduğu kaynak grubunun adını girin. Anahtar kasanız anahtar döndürme işlevini dağıtabileceğiniz aynı kaynak grubunda zaten varsa [resourceGroup().name] varsayılan değerini koruyun.
Anahtar Kasası Adı kutusuna anahtar kasasının adını girin. Önkoşullar'da oluşturulan anahtar kasasını kullanıyorsanız varsayılan [concat(resourceGroup().name, '-kv')] değerini koruyun.
App Service Plan Türü kutusunda barındırma planı'nı seçin. Premium Plan yalnızca anahtar kasanız güvenlik duvarının arkasında olduğunda gereklidir.
İşlev Uygulaması Adı kutusuna işlev uygulamasının adını girin.
Gizli Dizi Adı kutusuna erişim anahtarlarını depoladığınız gizli dizinin adını girin.
Depo URL'si kutusuna işlev kodunun GitHub konumunu girin. Bu öğreticide kullanabilirsiniz https://github.com/Azure-Samples/KeyVault-Rotation-StorageAccountKey-PowerShell.git .
Gözden geçir ve oluştur’u seçin.
Oluştur'u belirleyin.
Önceki adımları tamamladıktan sonra depolama hesabınız, sunucu grubunuz, işlev uygulamanız ve Application Insights'larınız olur. Dağıtım tamamlandığında şu sayfayı görürsünüz:
Not
Bir hatayla karşılaşırsanız, bileşenlerin dağıtımını tamamlamak için Yeniden Dağıt'ı seçebilirsiniz.
Döndürme işlevinin dağıtım şablonlarını ve kodunu Azure Örnekleri'nde bulabilirsiniz.
Depolama hesabı erişim anahtarlarını Key Vault gizli dizilerine ekleme
İlk olarak, kullanıcı sorumlunuza gizli dizileri yönetme izinleri vermek için erişim ilkenizi ayarlayın:
az keyvault set-policy --upn <email-address-of-user> --name vaultrotation-kv --secret-permissions set delete get list
Artık değeri depolama hesabı erişim anahtarı olan yeni bir gizli dizi oluşturabilirsiniz. Ayrıca, döndürme işlevinin depolama hesabındaki anahtarı yeniden oluşturabilmesi için gizli diziye eklemek için depolama hesabı kaynak kimliği, gizli dizi geçerlilik süresi ve anahtar kimliği gerekir.
Depolama hesabı kaynak kimliğini belirleyin. Bu değeri özelliğinde id
bulabilirsiniz.
az storage account show -n vaultrotationstorage
Anahtar değerlerini alabilmeniz için depolama hesabı erişim anahtarlarını listeleyin:
az storage account keys list -n vaultrotationstorage
Anahtar kasasına 60 günlük geçerlilik süresi, depolama hesabı kaynak kimliği ve tanıtım amacıyla hemen sona erme tarihini yarın olarak ayarlamak üzere gizli dizi ekleyin. ve storageAccountResourceId
için key1Value
aldığınız değerleri kullanarak bu komutu çalıştırın:
tomorrowDate=$(date -u -d "+1 day" +"%Y-%m-%dT%H:%M:%SZ")
az keyvault secret set --name storageKey --vault-name vaultrotation-kv --value <key1Value> --tags "CredentialId=key1" "ProviderAddress=<storageAccountResourceId>" "ValidityPeriodDays=60" --expires $tomorrowDate
Bu gizli dizi birkaç dakika içinde olayı tetikler SecretNearExpiry
. Bu olay da süre sonu 60 güne ayarlanmış gizli diziyi döndürmek için işlevi tetikler. Bu yapılandırmada 'SecretNearExpiry' olayı her 30 günde bir tetiklenir (süre dolmadan 30 gün önce) ve döndürme işlevi anahtar1 ile anahtar2 arasında dönüşe geçiş yapar.
Depolama hesabı anahtarını ve Key Vault gizli dizisini alarak erişim anahtarlarının yeniden üretildiğini doğrulayabilir ve bunları karşılaştırabilirsiniz.
Gizli dizi bilgilerini almak için şu komutu kullanın:
az keyvault secret show --vault-name vaultrotation-kv --name storageKey
Alternatif keyName
olarak güncelleştirildiğini CredentialId
ve yeniden oluşturulduğunu value
fark edin:
Değerleri karşılaştırmak için erişim anahtarlarını alın:
az storage account keys list -n vaultrotationstorage
Anahtarın value
anahtar kasasındaki gizli diziyle aynı olduğuna dikkat edin:
Birden çok depolama hesabı için mevcut döndürme işlevini kullanma
Birden çok depolama hesabının anahtarlarını döndürmek için aynı işlev uygulamasını yeniden kullanabilirsiniz.
Mevcut bir işleve döndürmek üzere depolama hesabı anahtarları eklemek için şunları yapmanız gerekir:
- Depolama hesabı erişim anahtarlarına erişebilmesi için işlev uygulamasına atanan Depolama Hesabı Anahtarı İşleci Hizmeti rolü.
- SecretNearExpiry olayı için event Grid olay aboneliği.
Azure şablonu dağıtım bağlantısını seçin:
Kaynak grubu listesinde kasa döndürme'yi seçin.
Depolama Hesabı RG kutusuna, depolama hesabınızın bulunduğu kaynak grubunun adını girin. Depolama hesabınız zaten anahtar döndürme işlevini dağıtabileceğiniz aynı kaynak grubunda bulunuyorsa [resourceGroup().name] varsayılan değerini koruyun.
Depolama Hesabı Adı kutusuna, döndürülecek erişim anahtarlarını içeren depolama hesabının adını girin.
Key Vault RG kutusuna anahtar kasanızın bulunduğu kaynak grubunun adını girin. Anahtar kasanız anahtar döndürme işlevini dağıtabileceğiniz aynı kaynak grubunda zaten varsa [resourceGroup().name] varsayılan değerini koruyun.
Anahtar Kasası Adı kutusuna anahtar kasasının adını girin.
İşlev Uygulaması Adı kutusuna işlev uygulamasının adını girin.
Gizli Dizi Adı kutusuna erişim anahtarlarını depoladığınız gizli dizinin adını girin.
Gözden geçir ve oluştur’u seçin.
Oluştur'u belirleyin.
Key Vault gizli dizilerine depolama hesabı erişim anahtarı ekleme
Depolama hesabı kaynak kimliğini belirleyin. Bu değeri özelliğinde id
bulabilirsiniz.
az storage account show -n vaultrotationstorage2
Key2 değerini alabilmeniz için depolama hesabı erişim anahtarlarını listeleyin:
az storage account keys list -n vaultrotationstorage2
Anahtar kasasına 60 günlük geçerlilik süresi, depolama hesabı kaynak kimliği ve tanıtım amacıyla hemen sona erme tarihini yarın olarak ayarlamak üzere gizli dizi ekleyin. ve storageAccountResourceId
için key2Value
aldığınız değerleri kullanarak bu komutu çalıştırın:
tomorrowDate=$(date -u -d "+1 day" +"%Y-%m-%dT%H:%M:%SZ")
az keyvault secret set --name storageKey2 --vault-name vaultrotation-kv --value <key2Value> --tags "CredentialId=key2" "ProviderAddress=<storageAccountResourceId>" "ValidityPeriodDays=60" --expires $tomorrowDate
Gizli dizi bilgilerini almak için şu komutu kullanın:
az keyvault secret show --vault-name vaultrotation-kv --name storageKey2
Alternatif keyName
olarak güncelleştirildiğini CredentialId
ve yeniden oluşturulduğunu value
fark edin:
Değerleri karşılaştırmak için erişim anahtarlarını alın:
az storage account keys list -n vaultrotationstorage
Anahtarın value
anahtar kasasındaki gizli diziyle aynı olduğuna dikkat edin:
Gizli dizi için döndürmeyi devre dışı bırakma
Yalnızca bu gizli dizi için Event Grid aboneliğini silerek gizli dizi döndürmeyi devre dışı bırakabilirsiniz. Azure PowerShell Remove-AzEventGridSubscription cmdlet'ini veya Azure CLI az event grid event--subscription delete komutunu kullanın.
İki kimlik bilgisi kümesi için Key Vault döndürme işlevleri
İki kimlik bilgisi kümesi ve kullanıma hazır birkaç işlev için döndürme işlevleri şablonu:
Not
Bu döndürme işlevleri Microsoft tarafından değil topluluğun bir üyesi tarafından oluşturulur. Topluluk işlevleri herhangi bir Microsoft destek programı veya hizmeti kapsamında desteklenmez ve herhangi bir garanti olmadan OLDUĞU GIBI kullanılabilir hale getirilir.
Sonraki adımlar
- Öğretici: Bir kimlik bilgisi kümesi için gizli dizi döndürme
- Genel Bakış: Azure Event Grid ile Key Vault'un izlenmesi
- Nasıl yapılır: Azure portalında ilk işlevinizi oluşturma
- Nasıl yapılır: Key Vault gizli dizisi değiştiğinde e-posta alma
- Başvuru: Azure Key Vault için Azure Event Grid olay şeması