Share via


Két hitelesítési hitelesítő adatkészlettel rendelkező erőforrások titkos kulcsának elforgatásának automatizálása

Az Azure-szolgáltatások hitelesítésének legjobb módja egy felügyelt identitás használata, de vannak olyan forgatókönyvek, amelyekben ez nem megoldás. Ezekben az esetekben hozzáférési kulcsokat vagy jelszavakat használnak. Gyakran kell elforgatnia a hozzáférési kulcsokat és a jelszavakat.

Ez az oktatóanyag bemutatja, hogyan automatizálható a titkos kulcsok rendszeres rotálása a két hitelesítési hitelesítő adatot használó adatbázisok és szolgáltatások esetében. Ez az oktatóanyag az Azure Key Vaultban tárolt Azure Storage-fiókkulcsok titkos kulcsként való elforgatását mutatja be. Egy Azure Event Grid-értesítés által aktivált függvényt fog használni.

Megjegyzés:

Storage-fiókszolgáltatások esetén a Microsoft Entra ID használata a kérések engedélyezéséhez ajánlott. További információ: Blobok hozzáférésének engedélyezése a Microsoft Entra-azonosítóval. Vannak olyan szolgáltatások, amelyekhez hozzáférési kulcsokkal rendelkező tárfiók kapcsolati sztring kell. Ebben a forgatókönyvben ezt a megoldást javasoljuk.

Az oktatóanyagban ismertetett rotációs megoldás a következő:

Diagram that shows the rotation solution.

Ebben a megoldásban az Azure Key Vault a tárfiók egyedi hozzáférési kulcsait ugyanazon titkos kulcs verzióiként tárolja, váltakozva az elsődleges és a másodlagos kulcs között a későbbi verziókban. Ha egy hozzáférési kulcs a titkos kód legújabb verziójában van tárolva, a rendszer újragenerálja a másodlagos kulcsot, és hozzáadja a Key Vaulthoz a titkos kód új legújabb verziójaként. A megoldás az alkalmazás teljes rotációs ciklusát biztosítja a legújabb újragenerált kulcsra való frissítéshez.

  1. Harminc nappal a titkos kód lejárati dátuma előtt a Key Vault közzéteszi a közel lejárati eseményt az Event Gridben.
  2. Az Event Grid ellenőrzi az esemény-előfizetéseket, és HTTP POST használatával hívja meg az eseményre előfizetett függvényalkalmazás végpontját.
  3. A függvényalkalmazás azonosítja a másodlagos kulcsot (nem a legújabbat), és meghívja a tárfiókot az újragenerálásához.
  4. A függvényalkalmazás a titkos kód új verziójaként hozzáadja az új újragenerált kulcsot az Azure Key Vaulthoz.

Előfeltételek

  • Azure-előfizetés. Hozzon létre egyet ingyen.
  • Azure Cloud Shell. Ez az oktatóanyag a Portal Cloud Shellt használja a PowerShell-env használatával
  • Azure Key Vault.
  • Két Azure Storage-fiók.

Megjegyzés:

A megosztott tárfiók kulcsának rotálása visszavonja az adott kulcs alapján létrehozott fiókszintű közös hozzáférésű jogosultságkódot (SAS). A tárfiók kulcsváltása után újra kell létrehoznia a fiókszintű SAS-jogkivonatokat, hogy elkerülje az alkalmazások zavarait.

Ezt az üzembehelyezési hivatkozást akkor használhatja, ha nem rendelkezik meglévő kulcstartóval és meglévő tárfiókokkal:

Link that's labelled Deploy to Azure.

  1. Az Erőforráscsoport területen válassza az Új létrehozása lehetőséget. Nevezze el a csoporttartó forgatását , majd kattintson az OK gombra.

  2. Select Review + create.

  3. Select Create.

    Screenshot that shows how to create a resource group.

Most már rendelkezik egy kulcstartóval és két tárfiókkal. Ezt a beállítást az Azure CLI-ben vagy az Azure PowerShellben az alábbi parancs futtatásával ellenőrizheti:

az resource list -o table -g vaultrotation

Az eredmény a következőhöz hasonló lesz:

Name                     ResourceGroup         Location    Type                               Status
-----------------------  --------------------  ----------  ---------------------------------  --------
vaultrotation-kv         vaultrotation      westus      Microsoft.KeyVault/vaults
vaultrotationstorage     vaultrotation      westus      Microsoft.Storage/storageAccounts
vaultrotationstorage2    vaultrotation      westus      Microsoft.Storage/storageAccounts

A kulcsforgatási függvény létrehozása és üzembe helyezése

Ezután a többi szükséges összetevő mellett egy rendszer által felügyelt identitással rendelkező függvényalkalmazást fog létrehozni. A tárfiókkulcsok rotációs függvényét is üzembe helyezi.

A függvényalkalmazás rotációs függvényéhez a következő összetevőkre és konfigurációra van szükség:

  • Egy Azure-alkalmazás szolgáltatáscsomag
  • Tárfiók a függvényalkalmazás-eseményindítók kezeléséhez
  • Hozzáférési szabályzat a Key Vault titkos kulcsaihoz való hozzáféréshez
  • A tárfiókkulcs-kezelő szolgáltatás szerepkör hozzárendelve a függvényalkalmazáshoz, hogy hozzáférhessen a tárfiók hozzáférési kulcsaihoz
  • Kulcsforgató függvény eseményindítóval és HTTP-eseményindítóval (igény szerinti forgatással)
  • Event Grid-esemény-előfizetés a SecretNearExpiry eseményhez
  1. Válassza ki az Azure-sablon üzembehelyezési hivatkozását:

    Azure template deployment link.

  2. Az Erőforráscsoport listában válassza a tárolóhelyet.

  3. A Tárfiók RG mezőjében adja meg annak az erőforráscsoportnak a nevét, amelyben a tárfiók található. Tartsa meg az alapértelmezett [resourceGroup().name] értéket, ha a tárfiók már ugyanabban az erőforráscsoportban található, ahol a kulcsforgatási függvényt fogja üzembe helyezni.

  4. A Tárfiók neve mezőbe írja be annak a tárfióknak a nevét, amely az elforgatni kívánt hozzáférési kulcsokat tartalmazza. Tartsa meg az alapértelmezett értéket [concat(resourceGroup().name, 'storage')] , ha az előfeltételekben létrehozott tárfiókot használja.

  5. A Key Vault RG mezőjében adja meg annak az erőforráscsoportnak a nevét, amelyben a kulcstartó található. Tartsa meg az alapértelmezett [resourceGroup().name] értéket, ha a kulcstartó már létezik ugyanabban az erőforráscsoportban, ahol üzembe helyezi a kulcsforgató függvényt.

  6. A Key Vault Név mezőjébe írja be a kulcstartó nevét. Tartsa meg az alapértelmezett értéket [concat(resourceGroup().name, '-kv')] , ha az előfeltételekben létrehozott kulcstartót használja.

  7. Az App Service-csomag típusa mezőben válassza ki az üzemeltetési csomagot. Prémium csomagra csak akkor van szükség, ha a kulcstartó tűzfal mögött található.

  8. A Függvényalkalmazás neve mezőbe írja be a függvényalkalmazás nevét.

  9. A Titkos kulcs neve mezőbe írja be annak a titkos kulcsnak a nevét, amelyben a hozzáférési kulcsokat tárolni fogja.

  10. Az Adattár URL-cím mezőjében adja meg a függvénykód GitHub-helyét. Ebben az oktatóanyagban a következőt használhatja https://github.com/Azure-Samples/KeyVault-Rotation-StorageAccountKey-PowerShell.git :

  11. Select Review + create.

  12. Select Create.

    Screenshot that shows how to create and deploy function.

Az előző lépések elvégzése után rendelkezni fog egy tárfiók, egy kiszolgálófarm, egy függvényalkalmazás és egy alkalmazás Elemzések. Ha az üzembe helyezés befejeződött, ez a lap jelenik meg:

Screenshot that shows the Your deployment is complete page.

Megjegyzés:

Ha hibát tapasztal, az összetevők üzembe helyezésének befejezéséhez válassza az Újratelepítés lehetőséget.

Az Azure-mintákban megtalálhatja a rotációs függvény üzembehelyezési sablonjait és kódját.

A tárfiók hozzáférési kulcsainak hozzáadása a Key Vault titkos kulcsaihoz

Először állítsa be a hozzáférési szabályzatot úgy, hogy titkos kulcsok kezelésére vonatkozó engedélyeket adjon a felhasználónevének:

az keyvault set-policy --upn <email-address-of-user> --name vaultrotation-kv --secret-permissions set delete get list

Mostantól létrehozhat egy új titkos kulcsot, amelynek értéke egy tárfiók hozzáférési kulcsa. Szüksége lesz a tárfiók erőforrás-azonosítójára, titkos érvényességi időtartamára és kulcsazonosítójára is, hogy hozzáadhassa a titkos kulcsot, hogy a rotációs függvény újragenerálja a kulcsot a tárfiókban.

Határozza meg a tárfiók erőforrás-azonosítóját. Ezt az értéket a id tulajdonságban találja.

az storage account show -n vaultrotationstorage

A tárfiók hozzáférési kulcsainak listázása a kulcsértékek lekéréséhez:

az storage account keys list -n vaultrotationstorage

Adjon hozzá titkos kulcsot a Key Vaulthoz 60 napos érvényességi időtartammal, a tárfiók erőforrás-azonosítójával, valamint a bemutató céljával, hogy elindítsa a rotációt, és azonnal állítsa be a lejárati dátumot holnapra. Futtassa ezt a parancsot a beolvasott és a következő értékek key1ValuestorageAccountResourceIdhasználatával:

$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

Ez a titkos kód néhány percen belül aktiválja SecretNearExpiry az eseményt. Ez az esemény viszont aktiválja a függvényt a titkos kód 60 napos lejárati idővel történő elforgatásához. Ebben a konfigurációban a "SecretNearExpiry" esemény 30 naponta (30 nappal a lejárat előtt) aktiválódik, és a rotációs függvény felváltja a forgatást az 1. és a 2. kulcs között.

A hozzáférési kulcsok újragenerálását a tárfiókkulcs és a Key Vault titkos kulcsának beolvasásával és összehasonlításával ellenőrizheti.

A titkos adatok lekéréséhez használja ezt a parancsot:

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

Figyelje meg, hogy CredentialId az alternatív keyName verzióra frissült, és az value újragenerálva van:

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

Kérje le a hozzáférési kulcsokat az értékek összehasonlításához:

az storage account keys list -n vaultrotationstorage 

Figyelje meg, hogy value a kulcs megegyezik a kulcstartó titkos kulcsával:

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

Meglévő rotációs függvény használata több tárfiókhoz

Ugyanazt a függvényalkalmazást újra felhasználhatja több tárfiók kulcsainak elforgatásához.

Ha tárfiókkulcsokat szeretne hozzáadni egy meglévő függvényhez a forgatáshoz, a következőkre van szüksége:

  • A tárfiókkulcs-kezelő szolgáltatás szerepkör a függvényalkalmazáshoz van rendelve, hogy hozzáférhessen a tárfiók hozzáférési kulcsaihoz.
  • Event Grid-esemény-előfizetés a SecretNearExpiry eseményhez.
  1. Válassza ki az Azure-sablon üzembehelyezési hivatkozását:

    Azure template deployment link.

  2. Az Erőforráscsoport listában válassza a tárolóhelyet.

  3. A Tárfiók RG mezőjében adja meg annak az erőforráscsoportnak a nevét, amelyben a tárfiók található. Tartsa meg az alapértelmezett [resourceGroup().name] értéket, ha a tárfiók már ugyanabban az erőforráscsoportban található, ahol a kulcsforgatási függvényt fogja üzembe helyezni.

  4. A Tárfiók neve mezőbe írja be annak a tárfióknak a nevét, amely az elforgatni kívánt hozzáférési kulcsokat tartalmazza.

  5. A Key Vault RG mezőjében adja meg annak az erőforráscsoportnak a nevét, amelyben a kulcstartó található. Tartsa meg az alapértelmezett [resourceGroup().name] értéket, ha a kulcstartó már létezik ugyanabban az erőforráscsoportban, ahol üzembe helyezi a kulcsforgató függvényt.

  6. A Key Vault Név mezőjébe írja be a kulcstartó nevét.

  7. A Függvényalkalmazás neve mezőbe írja be a függvényalkalmazás nevét.

  8. A Titkos kulcs neve mezőbe írja be annak a titkos kulcsnak a nevét, amelyben a hozzáférési kulcsokat tárolni fogja.

  9. Select Review + create.

  10. Select Create.

    Screenshot that shows how to create an additional storage account.

Tárfiók hozzáférési kulcsának hozzáadása a Key Vault titkos kulcsaihoz

Határozza meg a tárfiók erőforrás-azonosítóját. Ezt az értéket a id tulajdonságban találja.

az storage account show -n vaultrotationstorage2

A tárfiók hozzáférési kulcsainak listázása a kulcs2 értékének lekéréséhez:

az storage account keys list -n vaultrotationstorage2

Adjon hozzá titkos kulcsot a Key Vaulthoz 60 napos érvényességi időtartammal, a tárfiók erőforrás-azonosítójával, valamint a bemutató céljával, hogy elindítsa a rotációt, és azonnal állítsa be a lejárati dátumot holnapra. Futtassa ezt a parancsot a beolvasott és a következő értékek key2ValuestorageAccountResourceIdhasználatával:

$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

A titkos adatok lekéréséhez használja ezt a parancsot:

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

Figyelje meg, hogy CredentialId az alternatív keyName verzióra frissült, és az value újragenerálva van:

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

Kérje le a hozzáférési kulcsokat az értékek összehasonlításához:

az storage account keys list -n vaultrotationstorage 

Figyelje meg, hogy value a kulcs megegyezik a kulcstartó titkos kulcsával:

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

A titkos kulcsok forgatásának letiltása

A titkos kódok elforgatását egyszerűen letilthatja az Event Grid-előfizetés törlésével. Használja az Azure PowerShell Remove-AzEventGridSubscription parancsmagot vagy az Azure CLI az event grid event--subscription delete parancsot.

Key Vault rotációs függvények két hitelesítő adatkészlethez

Rotációs függvénysablon két hitelesítő adatkészlethez és több használatra kész függvényhez:

Megjegyzés:

Ezeket a rotációs függvényeket a közösség egy tagja hozza létre, nem pedig a Microsoft. A közösségi funkciók nem támogatottak a Microsoft támogatási programja vagy szolgáltatása alatt, és az AS IS bármilyen garancia nélkül elérhetővé válnak.

Következő lépések