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.

Podobné příspěvky: