Aracılığıyla paylaş


İki kimlik doğrulama kimlik bilgisi kümesine sahip kaynaklar için gizli anahtar döndürme işleminin otomatikleştirilmesi

Azure hizmetlerinde kimlik doğrulamanın en iyi yolu managed identity 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 öğretici, iki kimlik doğrulama kimlik bilgisi kümesi kullanan veritabanları ve hizmetler için gizli anahtarların periyodik olarak döndürülmesini otomatikleştirme yöntemlerini göstermektedir. Farklı varlık türleri genelinde otomatik döndürme kavramlarına ve avantajlarına kapsamlı bir genel bakış için bkz. Azure Key Vault'da otomatik döndürmeyi anlama.

Özellikle bu öğreticide, Azure Key Vault'da 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.

Uyarı

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ı olan depolama hesabı bağlantı dizeleri 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:

Döndürme çözümünü gösteren diyagram.

Bu çözümde, Azure Key Vault depolama hesabı tek tek 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. Bir erişim anahtarı gizli dizinin en son sürümünde depolandığında, alternatif anahtar yeniden oluşturulur ve gizli dizinin yeni sürümü olarak Key Vault 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. Gizlinin sona erme tarihinden otuz gün önce, Key Vault sona yaklaşma olayını Event Grid'de 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ı, yeniden oluşturulan yeni anahtarı gizli anahtarın yeni sürümü olarak Azure Key Vault'a ekler.

Önkoşullar

Uyarı

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:

Azure'a Dağıt şeklinde etiketlenen Bağlantı.

  1. Kaynak grubu'nun altında Yeni oluştur’u seçin. Gruba kasa rotasyonu adını verin ve Tamam seçin.

  2. Seçin, gözden geçir ve oluştur.

  3. Oluştur'i seçin.

    Kaynak grubunun nasıl oluşturulacağını gösteren ekran görüntüsü.

Elinizde bir anahtar kasası ve iki depolama hesabı olacak. Bu komutu çalıştırarak bu kurulumu Azure CLI veya Azure PowerShell 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önüşüm fonksiyonunu da dağıtacaksınız.

İşlev uygulaması döndürme işlevi aşağıdaki bileşenleri ve yapılandırmayı gerektirir:

  • Azure App Service planı
  • İşlev uygulaması tetikleyicilerini yönetmek için bir depolama hesabı
  • Key Vault'taki gizli öğelere erişim için Azure RBAC rolü atanması
  • Depolama hesabı erişim anahtarlarına erişebilmesi için işlev uygulamasına atanan Depolama Hesabı Anahtarı Operatör Hizmeti rolü
  • Bir olay tetikleyicisi ve bir 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 şablon dağıtım bağlantısı.

  2. Kaynak grubu listesinde vaultrotation'ı 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 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.

  5. Key Vault RG kutusuna key vault'nizin 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. Key Vault Name kutusuna key vault 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. Repo URL kutusuna işlev kodunun GitHub konumunu girin. Bu öğreticide https://github.com/Azure-Samples/KeyVault-Rotation-StorageAccountKey-PowerShell.git kullanabilirsiniz.

  11. Seçin, gözden geçir ve oluştur.

  12. Oluştur'i seçin.

    İşlev oluşturma ve dağıtma adımlarını gösteren ekran görüntüsü.

Ö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:

Dağıtımınız tamamlandı sayfasını gösteren ekran görüntüsü.

Uyarı

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

Key Vault sırlarına depolama hesabı erişim anahtarlarını ekleyin

İlk olarak, kullanıcı sorumlunuza gizli dizileri yönetme izinleri vermek için erişim ilkenizi ayarlayın:

az role assignment create --role "Key Vault Secrets Officer" --assignee <email-address-of-user> --scope /subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.KeyVault/vaults/vaultrotation-kv

Artık değeri depolama hesabı erişim anahtarı olan yeni bir gizli 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ün geçerli olacak gizli dizi, depolama hesabı kaynak kimliği ile ekleyin ve döndürmeyi hemen başlatmak için sona erme tarihini yarın olarak ayarlayın. Aldığınız key1Value ve storageAccountResourceId değerlerini 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 <key1-value> --tags "CredentialId=key1" "ProviderAddress=<storage-account-resource-id>" "ValidityPeriodDays=60" --expires $tomorrowDate

Bu sır, birkaç dakika içinde bir olayı tetikleyecek SecretNearExpiry. Bu olay, son kullanma tarihi 60 gün olarak ayarlanmış gizli anahtarı 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 bilgiyi almak için şu komutu kullanın:

az keyvault secret show --vault-name vaultrotation-kv --name storageKey

Fark edin ki CredentialId alternatif keyName olarak güncellenmiş ve value yeniden oluşturulmuştur.

İlk depolama hesabı için A Z keyvault secret show komutunun çıkışını gösteren ekran görüntüsü.

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 ile aynı olduğuna dikkat edin.

İlk depolama hesabı için A Z depolama hesabı anahtarları listesi komutunun çıkışını gösteren ekran görüntüsü.

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şlev için depolama hesabı anahtarlarını dönüşüm için eklemek üzere şunları yapmanız gerekir:

  • Depolama hesabı erişim anahtarlarına erişim sağlamak amacıyla, Depolama Hesabı Anahtarı İşleci Hizmeti rolü işlev uygulamasına atanmıştır.
  • SecretNearExpiry olayı için Event Grid etkinlik aboneliği.
  1. Azure şablonu dağıtım bağlantısını seçin:

    Azure şablon dağıtım bağlantısı.

  2. Kaynak grubu listesinde vaultrotation'ı 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 Hesabı Adı kutusuna, döndürülecek erişim anahtarlarını içeren depolama hesabının adını girin.

  5. Key Vault RG kutusuna key vault'nizin 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. Key Vault Name kutusuna key vault 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. Seçin, gözden geçir ve oluştur.

  10. Oluştur'i seçin.

    Ek depolama hesabı oluşturmayı gösteren ekran görüntüsü.

Key Vault sırlarına depolama hesabı anahtarı ekleyin

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ün geçerli olacak gizli dizi, depolama hesabı kaynak kimliği ile ekleyin ve döndürmeyi hemen başlatmak için sona erme tarihini yarın olarak ayarlayın. Aldığınız key2Value ve storageAccountResourceId değerlerini 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 <key2-value> --tags "CredentialId=key2" "ProviderAddress=<storage-account-resource-id>" "ValidityPeriodDays=60" --expires $tomorrowDate

Gizli bilgiyi almak için şu komutu kullanın:

az keyvault secret show --vault-name vaultrotation-kv --name storageKey2

Fark edin ki CredentialId alternatif keyName olarak güncellenmiş ve value yeniden oluşturulmuştur.

İkinci depolama hesabı için A Z keyvault secret show komutunun çıkışını gösteren ekran görüntüsü.

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 ile aynı olduğuna dikkat edin.

İkinci depolama hesabı için A Z depolama hesabı anahtarları listesi komutunun çıkışını gösteren ekran görüntüsü.

Gizli 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 eventgrid event-subscription delete komutunu kullanın.

Key Vault üzerindeki iki kimlik bilgisi kümesi için 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:

Uyarı

Bu döndürme işlevleri, Microsoft tarafından değil, topluluğun bir üyesi tarafından oluşturulur. Topluluk işlevleri hiçbir Microsoft destek programı veya hizmeti kapsamında desteklenmez ve herhangi bir garanti olmadan OLDUĞU GIBI kullanılabilir hale getirilir.

Diğer hizmetler için döndürme işlevini özelleştirmek için yapay zekayı kullanma

Bu kılavuzda Azure Depolama hesapları için gizli döndürme gösterilmektedir, ancak dönüşüm işlevini çift kimlik bilgileri kullanan diğer Azure servislerine uyarlamak mümkündür. GitHub Copilot, PowerShell döndürme işlevi kodunu kendi hizmetinizle çalışacak şekilde değiştirmenize yardımcı olabilir.

I'm using the Azure Key Vault dual-credential secret rotation tutorial for Storage accounts. Help me modify the PowerShell rotation function to work with Azure Cosmos DB instead. The function should:
1. Connect to Cosmos DB and regenerate the secondary key
2. Store the new key in Key Vault as a new secret version
3. Alternate between primary and secondary keys on each rotation
Show me the changes needed to the PowerShell function code, including the correct Cosmos DB PowerShell cmdlets.

GitHub Copilot yapay zeka ile desteklendiğinden sürprizler ve hatalar mümkündür. Daha fazla bilgi için Copilot Sıkça Sorulan Sorular'a bakın.

Sonraki adımlar