İ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 hesap anahtarlarını gizli dizi olarak döndürme gösterilmektedir. Azure Event Grid bildirimi tarafından tetiklenen bir işlev kullanacaksınız.

Dekont

Depolama hesap 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:

Diagram that shows the rotation solution.

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.

  1. Key Vault, gizli dizinin sona erme tarihinden otuz gün önce event Grid'de neredeyse süre sonu olayını yayımlar.
  2. Event Grid olay aboneliklerini denetler ve olaya abone olan işlev uygulaması uç noktasını çağırmak için HTTP POST kullanır.
  3. İşlev uygulaması alternatif anahtarı (en son anahtarı değil) tanımlar ve yeniden oluşturmak için depolama hesabını çağırır.
  4. İşlev uygulaması, yeni oluşturulan anahtarı Azure Key Vault'a gizli dizinin yeni sürümü olarak ekler.

Ön koşullar

Dekont

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:

Link that's labelled Deploy to Azure.

  1. Kaynak grubu'nun altında Yeni oluştur’u seçin. Grup kasası döndürmesini adlandırın ve Tamam'ı seçin.

  2. Gözden geçir ve oluştur’u seçin.

  3. Oluştur seçeneğini belirleyin.

    Screenshot that shows how to create a resource group.

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 Hesap Anahtarı İşleci 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
  1. Azure şablonu dağıtım bağlantısını seçin:

    Azure template deployment link.

  2. Kaynak grubu listesinde kasa döndürme'yi seçin.

  3. 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.

  4. Depolama Hesap 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.

  5. 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.

  6. 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.

  7. 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.

  8. İşlev Uygulaması Adı kutusuna işlev uygulamasının adını girin.

  9. Gizli Dizi Adı kutusuna erişim anahtarlarını depoladığınız gizli dizinin adını girin.

  10. Depo URL'si kutusuna işlev kodunun GitHub konumunu girin. Bu öğreticide kullanabilirsiniz https://github.com/Azure-Samples/KeyVault-Rotation-StorageAccountKey-PowerShell.git .

  11. Gözden geçir ve oluştur’u seçin.

  12. Oluştur seçeneğini belirleyin.

    Screenshot that shows how to create and deploy function.

Önceki adımları tamamladıktan sonra depolama hesabınız, sunucu grubunuz, işlev uygulamanız ve Uygulama Analizler'niz olur. Dağıtım tamamlandığında şu sayfayı görürsünüz:

Screenshot that shows the Your deployment is complete page.

Dekont

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 storageAccountResourceIdiçin key1Value aldığınız değerleri kullanarak bu komutu çalıştırın:

$tomorrowDate = (get-date).AddDays(+1).ToString("yyyy-MM-ddTHH:mm:ssZ")
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:

Screenshot that shows the output of the A Z keyvault secret show command for the first storage account.

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:

Screenshot that shows the output of the A Z storage account keys list command for the first storage account.

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 Hesap Anahtarı İşleci Hizmeti rolü.
  • SecretNearExpiry olayı için event Grid olay aboneliği.
  1. Azure şablonu dağıtım bağlantısını seçin:

    Azure template deployment link.

  2. Kaynak grubu listesinde kasa döndürme'yi seçin.

  3. 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.

  4. Depolama Hesap Adı kutusuna, döndürülecek erişim anahtarlarını içeren depolama hesabının adını girin.

  5. 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.

  6. Anahtar Kasası Adı kutusuna anahtar kasasının adını girin.

  7. İşlev Uygulaması Adı kutusuna işlev uygulamasının adını girin.

  8. Gizli Dizi Adı kutusuna erişim anahtarlarını depoladığınız gizli dizinin adını girin.

  9. Gözden geçir ve oluştur’u seçin.

  10. Oluştur seçeneğini belirleyin.

    Screenshot that shows how to create an additional storage account.

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 storageAccountResourceIdiçin key2Value aldığınız değerleri kullanarak bu komutu çalıştırın:

$tomorrowDate = (Get-Date).AddDays(+1).ToString('yyyy-MM-ddTHH:mm:ssZ')
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:

Screenshot that shows the output of the A Z keyvault secret show command for the second storage account.

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:

Screenshot that shows the output of the A Z storage account keys list command for the second storage account.

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:

Dekont

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