Jak oddělit správu hesel od nasazení Azure infrastruktury a aplikací s Azure Key Vault
Představte si, že Azure pro vás spravuje provozák, který má mít schopnost prostředí zakládat, ale neměl by znát heslo do databáze. MySQL služba nepoužívá Azure Active Directory pro ověřování, takže při jejím vytváření potřebujeme nějaké heslo určit. Stejně tak při konfiguraci aplikace potřebujeme skočit do VM a do konfiguračního souboru aplikace zadat heslo do databáze. Situace je tedy neřešitelná – provozák to heslo zkrátka mít musí… nebo ne? Jasně že ne – uložme si hesla do trezoru s Azure Key Vault.
Vytváření ARM zdrojů s Key Vault
Pojďme na první problém. Naše aplikace bude využívat například Azure MySQL jako služba a při jejím vytváření je samozřejmě nutné vytvořit jméno a heslo pro přístup dovnitř. Jak Azure zdroje nasadit a přitom neznat heslo?
Nejprve si vytvoříme resource group a pak Azure Key Vault – trezor na klíče (to provádíme jako ne-provozák). Rovnou při zakládání povolíme jednu důležitou volbu a to je použitelnost pro ARM (template) deployment. Za normálních okolností mají k tajnostem přístup pouze uživatelé, které explicitně zvolíte. My chceme, aby uživatel mohl při nasazování zdroje říct, že heslo se má vzít z hodnoty v trezoru, ale současně nemá sám mít právo ho přečíst. Potřebujeme tedy takové právo udělit Azure Resource Manageru, nikoli konkrétnímu uživateli.