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ő:
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.
- 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.
- 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.
- 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.
- 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 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.
Válassza az Áttekintés + létrehozás lehetőséget.
Válassza a Létrehozás lehetőséget.
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
Válassza ki az Azure-sablon üzembehelyezési hivatkozását:
Az Erőforráscsoport listában válassza a tárolóhelyet.
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.
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.
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.
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.
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ó.
A Függvényalkalmazás neve mezőbe írja be a függvényalkalmazás nevét.
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.
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 :
Válassza az Áttekintés + létrehozás lehetőséget.
Válassza a Létrehozás lehetőséget.
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:
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
storageAccountResourceId
haszná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é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:
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.
Válassza ki az Azure-sablon üzembehelyezési hivatkozását:
Az Erőforráscsoport listában válassza a tárolóhelyet.
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.
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.
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.
A Key Vault Név mezőjébe írja be a kulcstartó nevét.
A Függvényalkalmazás neve mezőbe írja be a függvényalkalmazás nevét.
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.
Válassza az Áttekintés + létrehozás lehetőséget.
Válassza a Létrehozás lehetőséget.
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
storageAccountResourceId
haszná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é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:
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
- Oktatóanyag: Titkos kulcsok rotálása egy hitelesítő adatkészlethez
- Áttekintés: A Key Vault monitorozása az Azure Event Grid használatával
- Útmutató: Az első függvény létrehozása az Azure Portalon
- Útmutató: E-mail fogadása a Key Vault titkos kulcsainak módosításakor
- Referencia: Azure Event Grid-eseményséma az Azure Key Vaulthoz