Správa tajemství a certifikátů pomocí Azure Key Vault
14.08.2024
Tento technický a vzdělávací článek má za cíl vést bezpečnostní analytiky, IT administrátory a systémové inženýry při používání Azure Key Vault k bezpečné správě tajných informací (jako jsou hesla, klíče API, připojovací řetězce) a certifikáty (SSL/TLS). Azure Key Vault je cloudová služba, která poskytuje centralizované a bezpečné řešení pro ukládání a přístup k těmto důležitým položkám, takže není nutné je vkládat přímo do kódu nebo konfiguračních souborů, což je špatná bezpečnostní praxe [1].
Úvod
Při vývoji a provozu moderních aplikací je správa tajemství a certifikátů neustálou výzvou. Databázové přihlašovací údaje, klíče API služeb třetích stran, šifrovací klíče a certifikáty SSL/TLS jsou citlivými aktivy, které by v případě ohrožení mohly vést k vážnému narušení dat. Jejich nezabezpečené uložení, jako například v textových souborech, proměnných prostředí nebo přímo ve zdrojovém kódu, představuje značné riziko. Azure Key Vault byl navržen tak, aby tyto problémy vyřešil poskytnutím zabezpečeného úložiště založeného na hardwaru (HSM) k ochraně těchto aktiv, přísné kontrole přístupu a zjednodušení správy životního cyklu [2].
Tento návod se bude zabývat vytvořením Azure Key Vault, přidáním a načtením tajných klíčů a certifikátů, konfigurací zásad přístupu a integrací s dalšími službami Azure, jako je Azure App Service. Budou poskytnuty podrobné pokyny, ukázkové příkazy Azure CLI a metody ověřování, aby čtenář mohl implementovat zabezpečenou správu tajemství a certifikátů a posílil tak bezpečnostní pozici svých aplikací a cloudové infrastruktury.
Proč je Azure Key Vault zásadní?
- Zabezpečené úložiště: Chrání tajemství a šifrovací klíče pomocí ověřených hardwarových bezpečnostních modulů (HSM) FIPS 140-2 Level 2.
- Centralizované řízení přístupu: Umožňuje spravovat přístupová oprávnění k tajným klíčům a certifikátům na podrobné úrovni pomocí Azure role-based access control (RBAC) nebo zásad přístupu Key Vault.
- Správa životního cyklu: Usnadňuje rotaci tajemství a certifikátů, automatické vypršení platnosti a upozornění na události.
- Snížení rizika: Eliminuje potřebu ukládat přihlašovací údaje do kódu nebo konfiguračních souborů, čímž se minimalizuje riziko úniku.
- Monitorování a audit: Zaznamenává všechny operace provedené v Key Vault a poskytuje auditní záznamy pro šetření shody a zabezpečení.
- Zjednodušená integrace: Snadno se integruje s dalšími službami Azure, jako je Azure App Service, Azure Functions, Azure Virtual Machines a Azure DevOps.
Předpoklady
Chcete-li používat Azure Key Vault, budete potřebovat následující položky:
- Aktivní předplatné Azure: Předplatné Azure k vytváření a správě prostředků.
- Přístup pro správce: Účet s rolí „Vlastník“ nebo „Přispěvatel“ v předplatném Azure nebo vlastní role s oprávněním k vytváření a správě trezorů klíčů.
- Azure CLI nebo Azure PowerShell: Nainstalované a nakonfigurované nástroje příkazového řádku pro interakci s Azure.
- Volitelné: Kód Visual Studio: Pro vývoj a testování integrace.
Krok za krokem: Správa tajemství a certifikátů pomocí Azure Key Vault
Pojďme vytvořit Key Vault, přidat tajný klíč a certifikát a nakonfigurovat přístup.
1. Vytvoření Azure Key Vault
Pojďme vytvořit Key Vault pomocí Azure CLI. Můžete také použít Azure Portal.
- Otevřete svůj terminál nebo PowerShell a přihlaste se do Azure:
bash az přihlášení -
Vytvořte skupinu prostředků (pokud ji ještě nemáte):
bash az group create --name RG-KeyVault-Artigos --location eastus -
Vytvořte Azure Key Vault. Vyberte pro svůj trezor klíčů globálně jedinečný název.
bash az keyvault create --name kv-artigos-seguranca-01 --resource-group RG-KeyVault-Artigos --location eastus --enabled-for-template-deployment true--enabled-for-template-deployment true: Umožňuje použití Key Vault pro nasazení šablon, což je užitečné pro automatizaci.
2. Přidání tajemství do Key Vault
Pojďme přidat heslo databáze jako tajemstvía
-
Přidejte tajný klíč nazvaný
DatabasePasswords ukázkovou hodnotou:bash az tajná sada keyvault --vault-name kv-artigos-seguranca-01 --name DatabasePassword --value "S3cur3P@ssw0rd!" -
Načtěte tajný klíč a ověřte, že byl správně uložen:
bash az keyvault tajná show --vault-name kv-artigos-seguranca-01 --name DatabasePassword --query value -o tsv
3. Přidání certifikátu do Key Vault
Pro demonstrační účely přidejte certifikát s vlastním podpisem. V produkci byste použili certifikáty od důvěryhodné CA.
-
Vytvořte certifikát podepsaný svým držitelem v Key Vault:
bash az certifikát keyvault vytvořit --vault-name kv-artigos-seguranca-01 --name MyWebAppCert --policy "$(az keyvault certifikát get-default-policy)" -
Zkontrolujte podrobnosti certifikátu:
bash az keyvault certifikát zobrazit --vault-name kv-artigos-seguranca-01 --name MyWebAppCert
4. Konfigurace zásad přístupu
Chcete-li aplikacím nebo uživatelům povolit přístup k tajným klíčům a certifikátům, musíte nakonfigurovat zásady přístupu. Použijme Azure role-based access control (RBAC).
- Získejte „ID objektu“ aplikace nebo uživatele, který bude potřebovat přístup. Pro aplikaci (Service Principal) ji můžete získat po registraci ve službě Azure AD. Pro uživatele použijte
az ad user show --id <user-principal-name> --query id -o tsv. - Přidělte roli vašemu trezoru klíčů. Chcete-li například povolit aplikaci číst tajné informace:
bash # Příklad: Přiřaďte roli 'Key Vault Secrets User' vedoucímu služby az přiřazení role create --role "Key Vault Secrets User" --assignee-object-id <Object Application/User ID> --scope /subscriptions/<Vaše ID předplatného>/resourceGroups/RG-KeyVault-Artigos/providers/Microsoft.KeyVault/vaults/kv-artigos-01seguranca- Tip: Pro certifikáty můžete použít funkci „Uživatel certifikátu trezoru klíčů“.
5. Integrace se službou Azure App Service (příklad)
Pojďme si ukázat, jak může aplikace spotřebovat tajemství z Key Vault.
- Vytvořte službu Azure App Service (pokud ji ještě nemáte):
bash az appservice plan create --name AppServicePlan-Artigos --resource-group RG-KeyVault-Artigos --sku B1 --is-linux az vytvoření webové aplikace --resource-group RG-KeyVault-Artigos --plan AppServicePlan-Artigos --name webapp-artigos-seguranca-01 -
Povolte spravovanou identitu pro App Service. To App Service umožňuje ověřovat Azure Key Vault bez explicitních přihlašovacích údajů.
bash az přiřazení identity webové aplikace --resource-group RG-KeyVault-Artigos --name webapp-artigos-seguranca-01 -
Udělte oprávnění spravované identitou App Service pro přístup k tajnému klíči v Key Vault. Použijte
principalIdzískané v předchozím kroku.bash az keyvault set-policy --name kv-artigos-seguranca-01 --object-id <principalManaged IdentityId> --secret-permissions get list- Tip: Chcete-li použít RBAC, přiřaďte roli
Key Vault Secrets UserkprincipalIdspravované identity.
- Tip: Chcete-li použít RBAC, přiřaďte roli
-
Nakonfigurujte tajnou referenci ve službě App Service. To umožňuje aplikaci přistupovat k tajnému klíči jako proměnné prostředí.
bash az konfigurace webové aplikace sada nastavení aplikací --resource-group RG-KeyVault-Artigos --name webapp-artigos-seguranca-01 --settings DatabasePassword="@Microsoft.KeyVault(SecretUri=https://kv-artigos-seguranca-01.vault)secretazure/Dword/secretazure.net -
Nyní může vaše aplikace (např. ASP.NET Core, Node.js) číst tajný klíč „DatabasePassword“ jako normální proměnnou prostředí a Azure App Service se postará o jeho bezpečné načtení z Key Vault.
Validace a testování
Ověření správy tajemství a certifikátů zahrnuje ověření, že přístup je udělen pouze oprávněným entitám a že lze tajemství správně načíst.
1. Testování přístupu k tajným klíčům prostřednictvím Azure CLI
-
Pokuste se získat přístup k tajnému klíči pomocí účtu, který nemá oprávnění:
bash az login # Přihlaste se pomocí účtu bez oprávnění az keyvault tajná show --vault-name kv-artigos-seguranca-01 --name DatabasePassword --query value -o tsv- Očekávaný výsledek: Příkaz by měl selhat s chybou „AuthorizationFailed“.
-
Pokuste se získat přístup k tajnému klíči pomocí účtu, který má oprávnění (např. účet, který vytvořil klíč Vault nebo identitu spravovanou App Service, pokud testujete z aplikace).
bash az login # Přihlaste se pomocí účtu s oprávněními az keyvault tajná show --vault-name kv-artigos-seguranca-01 --name DatabasePassword --query value -o tsv- Očekávaný výsledek: Příkaz musí vrátit tajnou hodnotu.
2. Testování přístupu k certifikátu
- Ověřte, že certifikát může být uveden a načten oprávněným subjektem.
bash az seznam certifikátů keyvault --vault-name kv-artigos-seguranca-01 az keyvault certifikát zobrazit --vault-name kv-artigos-seguranca-01 --name MyWebAppCert- Očekávaný výsledek: Příkazy by měly vrátit podrobnosti certifikátu.
3. Kontrola protokolů auditu trezoru klíčů
Všechny operace v Key Vault jsou protokolovány a lze je auditovat.
- Na portálu Azure přejděte do svého Key Vault (
kv-articles-seguranca-01). - V levém navigačním panelu vyberte Protokoly aktivit.
- Uvidíte protokol všech provedených operací, včetně vytvoření tajných klíčů, certifikátů a pokusů o přístup.
Bezpečnostní tipy a doporučené postupy
- Princip nejmenšího privilegia: Tajným a certifikátům udělujte pouze nezbytná oprávnění (získat, vypsat, nastavit, smazat). Vyhněte se udělování nadměrných oprávnění.
- Pravidelné střídání tajemství: Implementujte proces pravidelného střídání tajemství a certifikátů, abyste snížili riziko kompromitace.
- Spravované identity: Kdykoli je to možné, používejte spravované identity pro prostředky Azure (spravované identity) k ověření v Key Vault, čímž eliminujete potřebu spravovat přihlašovací údaje ve vašem kódu.
- Pravidelné zásady přístupu: Pomocí zásad přístupu Key Vault nebo Azure RBAC určete, kdo k čemu může přistupovat. Pro jemnější ovládání preferujte RBAC.
- Monitorování a upozornění: Konfigurace upozornění na podezřelou aktivitu v Key Vault, jako jsou neúspěšné pokusy o přístup nebo tajná smazání.
- Ochrana proti vymazání a vymazání: Povolte ochranu proti vymazání a vymazání v Key Vault, abyste zabránili náhodné nebo úmyslné ztrátě tajemství a certifikátů.
- Pravidelné zálohování: Přestože je Key Vault vysoce dostupný, zvažte zálohování svých tajemství a certifikátů, zejména pro scénáře obnovy po havárii.
- Tajemství s vypršením platnosti: Nastavte data vypršení platnosti tajných klíčů a certifikátů, abyste vynutili rotaci a vyhnuli se používání starých přihlašovacích údajů.
Běžné odstraňování problémů
- Chyba autorizace (403 Zakázáno): Zkontrolujte zásady přístupu k trezoru klíčů nebo přiřazení rolí RBAC pro entitu, která se pokouší o přístup. Ujistěte se, že je použito správné
ID objektuneboprincipalId. - Tajný/certifikát nenalezen: Zkontrolujte název tajemství/certifikátu a název trezoru klíčů. Ujistěte se, že tajemství/certifikát existuje a nebyl smazán nebo nevypršela jeho platnost.
- Problémy se spravovanými identitami: Ověřte, zda byla pro prostředek Azure povolena spravovaná identita a zda byla v Key Vault udělena správná oprávnění.
- Latence při získávání tajemství: V některých případech může dojít k malé latenci při získávání tajemství. Ujistěte se, že to vaše aplikace zpracovává asynchronně.
- Chyby připojení: Zkontrolujte síťová nastavení vaší aplikace nebo virtuálního počítače. Ujistěte se, že přístup do Key Vault neblokují žádné brány firewall nebo skupiny zabezpečení sítě.
Závěr
Azure Key Vault je klíčová služba pro každou organizaci, která chce chránit svá nejcitlivější digitální aktiva v cloudu. Centralizací správy tajemství a certifikátů v zabezpečeném, vysoce dostupném úložišti zjednodušuje dodržování předpisů, snižuje riziko narušení dat a zlepšuje vaši celkovou bezpečnost. Efektivní implementace Azure Key Vault v kombinaci s osvědčenými postupy zabezpečení a automatizace umožňuje vývojářům a operátorům soustředit se na inovace s vědomím, že jejich přihlašovací údaje a klíče jsou chráněny. Díky této praktické příručce budou odborníci na zabezpečení moci používat Azure Key Vault ke správě tajných klíčů a certifikátů bezpečně a efektivně a zajistit integritu a důvěrnost jejich aplikací a dat v Azure.
Reference:
[1]Microsoft Learn. Co je Azure Key Vault?. Dostupné na: https://learn.microsoft.com/pt-br/azure/key-vault/general/overview [2] Microsoft Learn. Osvědčené postupy pro správu tajných klíčů v Azure Key Vault. Dostupné na: https://learn.microsoft.com/pt-br/azure/key-vault/secrets/secrets-best-practices [3] Microsoft Learn. O certifikátech Azure Key Vault. Dostupné na: https://learn.microsoft.com/pt-br/azure/key-vault/certificates/about-certificates