Předávání tajností do App Service (WebApp) přes Azure Key Vault

Ve vaší WebApp můžete udržovat konfigurační parametry v záložce Application Settings. Tyto jsou bezpečně uloženy, nicméně jejich správu musíte provádět přes WebApp samotnou. Na ukládání tajností jako jsou hesla nebo connection stringy je k dispozici výborná služba Azure Key Vault. Od včerejška je možné ji použít i pro předávání parametrů vašim aplikacím v Application Services aniž byste museli napsat byť jen jedinou řádku kódu! Pojďme se na to podívat.

Proč používat Azure Key Vault? Klíčovou výhodou je, že máte jedno bezpečné místo pro správu klíčů, hesel, connection stringů a certifikátů. Přístup do trezoru můžete dát jen oprávněným osobám a spravovat vaše tajnosti tam. Aplikace si mohou tyto údaje z trezoru vyzvedávat a aby se mohly ověřovat vůči trezoru lze využít Managed Service Identity. Jde o to, že vaše VM nebo WebApp se sama zaregistruje v Azure Active Directory jako Service Principal a tomu můžete dát do trezoru přístup. Nicméně až do včerejška to u WebApp vyžadovalo, že musíte napsat kód, který to vyzvednutí udělá. Dnes už je ale možné pro Application Settings použít referenci na trezor a aplikace si heslo vyzvedne standardním způsobem bez přizpůsobování kódu. Ať už je to z konfigurační kolekce v .NETu nebo jako env proměnná pro Javu , Javascript, Python nebo PHP. Vyzkoušejme si to.

Nejprve jsem si vytvořil Azure Key Vault a založíme v něm nějaké tajné heslo.

Po vytvoření hesla si zjistíme jeho přesné URL. Služba integrace s WebApp je aktuálně v Preview a zatím nepodporuje verzování (nicméně je to v plánu) a potřebujeme URL na konkrétní verzi hesla. Tu si uložme, budeme ji potřebovat.

Pro svou webovou aplikaci se nechám vytvořit Managed Service Identitu.

Teď musíme jít do Azure Key Vault a naší WebApp dát právo na přístup k vyzvedávání secrets.

Aplikaci povolím GET operaci nad Secrets.

Výborně. Teď pojďme do Application Settings v mé WebApp a zadáme klíč, ale jeho hodnota bude reference na Key Vault. Tam potřebujeme dříve poznamenané URL a formát vypadá takhle:

@Microsoft.KeyVault(SecretUri=https://mujkeyvaultprowebapp.vault.azure.net/secrets/mojeheslo/03d6bc2991b04846918cc92f6bd81830)

Uložíme a podíváme se, že se všechno povedlo. V env uvidíme, že WebApp si heslo vyzvedla z trezoru.

Je tam!

 

Chcete oddělit správu tajností jako jsou hesla, connection stringy, klíče nebo certifikáty od provozu do trezoru? Nechce se vám dávat do aplikace kód na vyzvedávání z trezoru? Díky nové integraci Application Services a Azure Key Vault nemusíte na své aplikaci vůbec nic měnit. Zkuste si to.



Privátní leč cenově dostupná WebApp díky Private Link pro App Service v Azure Security AppService
Bezpečnost Azure: Jak nepoužívat Service Principal díky Managed Identity a zbavit se tak čekání na ticket u vašeho enterprise IT Security
Azure DDoS Protection Standard: jak funguje a proč si pořídit Security
Postupné nasazování a testování aplikací na lidech - kanárci, A/B, green/blue na příkladu kadeřníka AppService
Kubernetes praticky: role Service Mesh Security