Megosztás a következőn keresztül:


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.

Feljegyzé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ő:

A forgatási megoldást bemutató diagram.

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.

Feljegyzé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:

Az Üzembe helyezés az Azure-ban címkével ellátott hivatkozás.

  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. Válassza az Áttekintés + létrehozás lehetőséget.

  3. Válassza a Létrehozás lehetőséget.

    Erőforráscsoport létrehozását bemutató képernyőkép.

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-sablon üzembehelyezési hivatkozása.

  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. Válassza az Áttekintés + létrehozás lehetőséget.

  12. Válassza a Létrehozás lehetőséget.

    A függvények létrehozását és üzembe helyezését bemutató képernyőkép.

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 az Application Insights. Ha az üzembe helyezés befejeződött, ez a lap jelenik meg:

Képernyőkép az Üzembe helyezés kész állapotú oldalról.

Feljegyzé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 key1Value storageAccountResourceIdhasználatával:

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

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:

Képernyőkép az első tárfiók A Z kulcsvault titkos kód megjelenítési parancsának kimenetéről.

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:

Képernyőkép az első tárfiók A Z tárfiókkulcs-listaparancsának kimenetéről.

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-sablon üzembehelyezési hivatkozása.

  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. Válassza az Áttekintés + létrehozás lehetőséget.

  10. Válassza a Létrehozás lehetőséget.

    Képernyőkép egy további tárfiók létrehozásáról.

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 key2Value storageAccountResourceIdhasználatával:

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

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:

Képernyőkép a második tárfiók A Z keyvault secret show parancsának kimenetéről.

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:

Képernyőkép a második tárfiók A Z tárfiókkulcs-listaparancsának kimenetéről.

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:

Feljegyzé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