Automatizace obměně tajného klíče pro prostředky, které mají dvě sady přihlašovacích údajů pro ověřování

Nejlepším způsobem, jak se ověřit ve službách Azure, je použití spravované identity, ale existují některé scénáře, kdy to není možnost. V takových případech se používají přístupové klíče nebo hesla. Přístupové klíče a hesla byste měli často obměňovat.

V tomto kurzu se dozvíte, jak automatizovat pravidelnou obměnu tajných kódů pro databáze a služby, které používají dvě sady ověřovacích přihlašovacích údajů. Konkrétně tento kurz ukazuje, jak otočit klíče účtu služby Azure Storage uložené ve službě Azure Key Vault jako tajné kódy. Použijete funkci aktivovanou oznámením služby Azure Event Grid.

Poznámka:

Pro služby účtu úložiště se k autorizaci požadavků doporučuje použití ID Microsoft Entra. Další informace naleznete v tématu Autorizace přístupu k objektům blob pomocí Microsoft Entra ID. Existují služby, které vyžadují připojovací řetězec účtu úložiště s přístupovými klíči. Pro tento scénář doporučujeme toto řešení.

Toto je řešení obměně popsané v tomto kurzu:

Diagram that shows the rotation solution.

V tomto řešení azure Key Vault ukládá jednotlivé přístupové klíče účtu úložiště jako verze stejného tajného kódu, které se v následujících verzích střídají mezi primárním a sekundárním klíčem. Když je jeden přístupový klíč uložený v nejnovější verzi tajného kódu, vygeneruje se alternativní klíč a přidá se do služby Key Vault jako nová nejnovější verze tajného kódu. Řešení poskytuje celý cyklus obměna aplikace, aby se aktualizoval na nejnovější znovu vygenerovaný klíč.

  1. Třicet dní před datem vypršení platnosti tajného kódu služba Key Vault publikuje událost blížící se vypršení platnosti do event Gridu.
  2. Event Grid zkontroluje odběry událostí a používá HTTP POST k volání koncového bodu aplikace funkcí, který je přihlášený k odběru události.
  3. Aplikace funkcí identifikuje alternativní klíč (nikoli nejnovější klíč) a zavolá účet úložiště, který ho znovu vygeneruje.
  4. Aplikace funkcí přidá nový znovu vygenerovaný klíč do služby Azure Key Vault jako novou verzi tajného kódu.

Předpoklady

  • Předplatné Azure. Vytvořte si ho zdarma.
  • Azure Cloud Shell. Tento kurz používá portál Cloud Shell s prostředím PowerShell env.
  • Azure Key Vault.
  • Dva účty úložiště Azure.

Poznámka:

Obměna klíče sdíleného účtu úložiště odvolá na základě tohoto klíče sdílený přístupový podpis (SAS) na úrovni účtu. Po obměně klíčů účtu úložiště musíte znovu vygenerovat tokeny SAS na úrovni účtu, abyste se vyhnuli přerušení aplikací.

Tento odkaz pro nasazení můžete použít, pokud nemáte existující trezor klíčů a existující účty úložiště:

Link that's labelled Deploy to Azure.

  1. V části Skupina prostředků vyberte Vytvořit novou. Pojmenujte rotaci trezoru skupiny a pak vyberte OK.

  2. Vyberte Zkontrolovat a vytvořit.

  3. Vyberte Vytvořit.

    Screenshot that shows how to create a resource group.

Teď budete mít trezor klíčů a dva účty úložiště. Toto nastavení můžete ověřit v Azure CLI nebo Azure PowerShellu spuštěním tohoto příkazu:

az resource list -o table -g vaultrotation

Výsledek bude vypadat přibližně takto:

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

Vytvoření a nasazení funkce obměně klíčů

Dále vytvoříte aplikaci funkcí s identitou spravovanou systémem a dalšími požadovanými komponentami. Také nasadíte funkci obměně klíčů účtu úložiště.

Funkce obměně aplikace funkcí vyžaduje následující komponenty a konfiguraci:

  • Plán služby Aplikace Azure
  • Účet úložiště pro správu triggerů aplikace funkcí
  • Zásady přístupu pro přístup k tajným kódům ve službě Key Vault
  • Role Operátor klíče účtu úložiště přiřazená k aplikaci funkcí, aby mohl přistupovat k přístupovým klíčům účtu úložiště
  • Funkce rotace klíčů s triggerem události a triggerem HTTP (obměnou na vyžádání)
  • Odběr události Event Gridu pro událost SecretNearExpiry
  1. Vyberte odkaz nasazení šablony Azure:

    Azure template deployment link.

  2. V seznamu skupin prostředků vyberte trezor.

  3. Do pole RG účtu úložiště zadejte název skupiny prostředků, ve které se nachází váš účet úložiště. Ponechte výchozí hodnotu [resourceGroup().name], pokud už je váš účet úložiště umístěný ve stejné skupině prostředků, ve které nasadíte funkci obměna klíčů.

  4. Do pole Název účtu úložiště zadejte název účtu úložiště, který obsahuje přístupové klíče, které chcete otočit. Pokud používáte účet úložiště vytvořený v požadavcích, ponechte výchozí hodnotu [concat(resourceGroup().name; 'storage')].

  5. Do pole RG služby Key Vault zadejte název skupiny prostředků, ve které se nachází váš trezor klíčů. Pokud váš trezor klíčů již existuje ve stejné skupině prostředků, ve které nasadíte funkci obměny klíčů, ponechte výchozí hodnotu [resourceGroup().name].

  6. Do pole Název trezoru klíčů zadejte název trezoru klíčů. Pokud používáte trezor klíčů vytvořený v požadavcích, ponechte výchozí hodnotu [concat(resourceGroup().name; '-kv').

  7. V poli Typ plánu služby App Service vyberte plán hostování. Plán Premium je potřeba jenom v případě, že je váš trezor klíčů za bránou firewall.

  8. Do pole Název aplikace funkcí zadejte název aplikace funkcí.

  9. Do pole Název tajného kódu zadejte název tajného kódu, do kterého budete ukládat přístupové klíče.

  10. Do pole Adresa URL úložiště zadejte umístění kódu funkce na GitHubu. V tomto kurzu můžete použít https://github.com/Azure-Samples/KeyVault-Rotation-StorageAccountKey-PowerShell.git .

  11. Vyberte Zkontrolovat a vytvořit.

  12. Vyberte Vytvořit.

    Screenshot that shows how to create and deploy function.

Po dokončení předchozích kroků budete mít účet úložiště, serverovou farmu, aplikaci funkcí a Přehledy aplikací. Po dokončení nasazení se zobrazí tato stránka:

Screenshot that shows the Your deployment is complete page.

Poznámka:

Pokud dojde k selhání, můžete výběrem možnosti Znovu nasadit nasazení komponent.

Šablony nasazení a kód pro funkci rotace najdete v ukázkách Azure.

Přidání přístupových klíčů účtu úložiště k tajným kódům služby Key Vault

Nejprve nastavte zásady přístupu tak, aby udělily oprávnění ke správě tajných kódů instančnímu objektu uživatele:

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

Teď můžete vytvořit nový tajný klíč s přístupovým klíčem účtu úložiště jako jeho hodnotou. Budete také potřebovat ID prostředku účtu úložiště, dobu platnosti tajného klíče a ID klíče, aby funkce rotace mohl klíč vygenerovat v účtu úložiště.

Určete ID prostředku účtu úložiště. Tuto hodnotu najdete ve id vlastnosti.

az storage account show -n vaultrotationstorage

Vytvořte seznam přístupových klíčů účtu úložiště, abyste mohli získat hodnoty klíčů:

az storage account keys list -n vaultrotationstorage

Přidejte do trezoru klíčů tajný klíč s dobou platnosti po dobu 60 dnů, ID prostředku účtu úložiště a pro demonstrační účely aktivujte obměnu okamžitě na zítra. Spusťte tento příkaz s použitím načtených hodnot pro key1Value a storageAccountResourceId:

$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

Tento tajný kód aktivuje SecretNearExpiry událost během několika minut. Tato událost zase aktivuje funkci pro otočení tajného kódu s vypršením platnosti nastavenou na 60 dnů. V této konfiguraci by se událost SecretNearExpiry aktivovala každých 30 dnů (30 dní před vypršením platnosti) a funkce obměna se bude střídat mezi klíčem1 a klíčem2.

Ověření opětovného vygenerování přístupových klíčů můžete ověřit načtením klíče účtu úložiště a tajného klíče služby Key Vault a jejich porovnáním.

K získání tajných informací použijte tento příkaz:

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

Všimněte si, že CredentialId se aktualizuje na alternativní a keyName znovu value se vygeneruje:

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

Načtení přístupových klíčů pro porovnání hodnot:

az storage account keys list -n vaultrotationstorage 

Všimněte si, že value klíč je stejný jako tajný klíč v trezoru klíčů:

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

Použití existující funkce obměně pro více účtů úložiště

Stejnou aplikaci funkcí můžete znovu použít k obměně klíčů pro více účtů úložiště.

Pokud chcete přidat klíče účtu úložiště do existující funkce pro obměnu, potřebujete:

  • Role Operátor klíče účtu úložiště přiřazená k aplikaci funkcí, aby mohl přistupovat k přístupovým klíčům účtu úložiště.
  • Odběr události Event Gridu pro událost SecretNearExpiry .
  1. Vyberte odkaz nasazení šablony Azure:

    Azure template deployment link.

  2. V seznamu skupin prostředků vyberte trezor.

  3. Do pole RG účtu úložiště zadejte název skupiny prostředků, ve které se nachází váš účet úložiště. Ponechte výchozí hodnotu [resourceGroup().name], pokud už je váš účet úložiště umístěný ve stejné skupině prostředků, ve které nasadíte funkci obměna klíčů.

  4. Do pole Název účtu úložiště zadejte název účtu úložiště, který obsahuje přístupové klíče, které chcete otočit.

  5. Do pole RG služby Key Vault zadejte název skupiny prostředků, ve které se nachází váš trezor klíčů. Pokud váš trezor klíčů již existuje ve stejné skupině prostředků, ve které nasadíte funkci obměny klíčů, ponechte výchozí hodnotu [resourceGroup().name].

  6. Do pole Název trezoru klíčů zadejte název trezoru klíčů.

  7. Do pole Název aplikace funkcí zadejte název aplikace funkcí.

  8. Do pole Název tajného kódu zadejte název tajného kódu, do kterého budete ukládat přístupové klíče.

  9. Vyberte Zkontrolovat a vytvořit.

  10. Vyberte Vytvořit.

    Screenshot that shows how to create an additional storage account.

Přidání přístupového klíče účtu úložiště k tajným kódům služby Key Vault

Určete ID prostředku účtu úložiště. Tuto hodnotu najdete ve id vlastnosti.

az storage account show -n vaultrotationstorage2

Vytvořte seznam přístupových klíčů účtu úložiště, abyste získali hodnotu key2:

az storage account keys list -n vaultrotationstorage2

Přidejte do trezoru klíčů tajný klíč s dobou platnosti po dobu 60 dnů, ID prostředku účtu úložiště a pro demonstrační účely aktivujte obměnu okamžitě na zítra. Spusťte tento příkaz s použitím načtených hodnot pro key2Value a storageAccountResourceId:

$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

K získání tajných informací použijte tento příkaz:

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

Všimněte si, že CredentialId se aktualizuje na alternativní a keyName znovu value se vygeneruje:

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

Načtení přístupových klíčů pro porovnání hodnot:

az storage account keys list -n vaultrotationstorage 

Všimněte si, že value klíč je stejný jako tajný klíč v trezoru klíčů:

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

Zakázání obměně tajných kódů

Obměně tajného kódu můžete zakázat jednoduše odstraněním odběru služby Event Grid pro tento tajný klíč. Použijte rutinu Remove-AzEventGridSubscription azure PowerShellu nebo příkaz Azure CLI az event grid event--subscription delete.

Funkce obměny služby Key Vault pro dvě sady přihlašovacích údajů

Šablona funkcí otáčení pro dvě sady přihlašovacích údajů a několik připravených k použití funkcí:

Poznámka:

Tyto funkce rotace vytvářejí člen komunity, nikoli Microsoft. Funkce komunity nejsou podporovány v rámci žádného programu nebo služby podpory Společnosti Microsoft a jsou zpřístupněny jako is bez jakékoli záruky.

Další kroky