Sdílet prostřednictvím


Doporučení pro ochranu tajných kódů aplikací

Platí pro toto doporučení kontrolního seznamu zabezpečení architektury Azure Well-Architected Framework:

ČV:09 Chraňte tajné kódy aplikací posílením jejich úložiště a omezením přístupu a manipulace a auditováním těchto akcí. Spusťte spolehlivý a pravidelný rotační proces, který může improvizovat rotace v nouzových situacích.

Tato příručka popisuje doporučení pro zabezpečení citlivých informací v aplikacích. Správná správa tajných kódů je zásadní pro zachování zabezpečení a integrity vaší aplikace, úlohy a přidružených dat. Nesprávné zacházení s tajnými kódy může vést k narušení zabezpečení dat, přerušení služeb, porušení právních předpisů a dalším problémům.

Přihlašovací údaje, jako jsou klíče rozhraní API, tokeny OAuth (Open Authorization) a klíče SSH (Secure Shell), jsou tajné kódy. Některé přihlašovací údaje, například tokeny OAuth na straně klienta, je možné dynamicky vytvářet za běhu. Dynamické tajné kódy je i přes jejich dočasnou povahu potřeba chránit. Citlivé můžou být i jiné než přihlašovací údaje, jako jsou certifikáty a klíče digitálního podpisu. Požadavky na dodržování předpisů můžou způsobit, že nastavení konfigurace, která se obvykle nepovažují za tajný klíč, se bude považovat za tajné kódy aplikace.

Definice 

Období Definice
Certifikáty Digitální soubory, které obsahují veřejné klíče pro šifrování nebo dešifrování.
Reference Informace, které slouží k ověření identity vydavatele nebo příjemce v komunikačním kanálu.
Kontrola přihlašovacích údajů Proces ověřování zdrojového kódu, aby se zajistilo, že nejsou zahrnuté tajné kódy.
Šifrování Proces, při kterém jsou data nečitelná a uzamčená tajným kódem.
Klíč Tajný kód, který se používá k uzamčení nebo odemknutí šifrovaných dat.
Přístup s nejnižšími oprávněními Princip nulová důvěra (Zero Trust), jehož cílem je minimalizace sady oprávnění k dokončení pracovní funkce.
Spravovaná identita Identita, která je přiřazená prostředkům a spravovaná v Azure.
Bez zabezpečení Informace, které neohrožují stav zabezpečení úlohy, pokud dojde k úniku.
Obměna Proces pravidelné aktualizace tajných kódů tak, aby v případě ohrožení zabezpečení byly k dispozici pouze po omezenou dobu.
Tajný kód Důvěrná součást systému, která usnadňuje komunikaci mezi komponentami úloh. Pokud dojde k úniku, tajné kódy můžou způsobit porušení zabezpečení.
X.509 Standard, který definuje formát certifikátů veřejných klíčů.

Důležité

Nezacházejte s tajnými jako s tajnými kódy. Tajné kódy vyžadují provozní přísnost, která není nutná pro nezabezpečené kódy a která může vést k dodatečným nákladům.

Nastavení konfigurace aplikace, například adresy URL rozhraní API, která aplikace používá, jsou příkladem nezabezpečených hodnot. Tyto informace by se neměly ukládat s kódem aplikace nebo tajnými kódy aplikace. Ke správě těchto nastavení zvažte použití vyhrazeného systému pro správu konfigurace, jako je Azure App Configuration. Další informace najdete v tématu Co je Azure App Configuration?.

Klíčové strategie návrhu

Strategie správy tajných kódů by měla tajné kódy co nejvíce minimalizovat a integrovat je do prostředí s využitím funkcí platformy. Pokud například pro aplikaci používáte spravovanou identitu, informace o přístupu nejsou vložené do připojovacích řetězců a je bezpečné je uložit do konfiguračního souboru. Před ukládáním a správou tajných kódů zvažte následující oblasti zájmu:

  • Vytvořené tajné kódy by se měly uchovávat v zabezpečeném úložišti s přísnými kontrolami přístupu.

  • Obměně tajných kódů je proaktivní operace, zatímco odvolání je reaktivní.

  • Přístup k tajným kódům by měly mít jenom důvěryhodné identity.

  • Měli byste udržovat záznam pro audit, abyste mohli kontrolovat a ověřovat přístup k tajným kódům.

Vytvořte pro tyto body strategii, která vám pomůže zabránit krádeži identity, vyhnout se popírání identity a minimalizovat zbytečné vystavení informacím.

Bezpečné postupy pro správu tajných kódů

Pokud je to možné, vyhněte se vytváření tajných kódů. Najděte způsoby , jak delegovat odpovědnost na platformu. Ke zpracování přihlašovacích údajů můžete například použít integrované spravované identity platformy. Méně tajných kódů má za následek zmenšení plochy a méně času stráveného správou tajných kódů.

Doporučujeme, aby klíče měly tři různé role: uživatel, správce a auditor. Rozlišení rolí pomáhá zajistit, aby přístup k tajným kódům s odpovídající úrovní oprávnění měly jenom důvěryhodné identity. Informujte vývojáře, správce a další důležité pracovníky o důležitosti osvědčených postupů pro správu tajných kódů a zabezpečení.

Předsdílené klíče

Přístup můžete řídit vytvořením jedinečných klíčů pro každého příjemce. Klient například komunikuje s rozhraním API třetí strany pomocí předsdíleného klíče. Pokud jiný klient potřebuje přístup ke stejnému rozhraní API, musí použít jiný klíč. Klíče nesdílejte ani v případě, že dva příjemci mají stejné vzory nebo role přístupu. Rozsahy příjemců se můžou v průběhu času měnit a po sdílení klíče nemůžete nezávisle aktualizovat oprávnění ani rozlišovat vzorce používání. Jedinečný přístup také usnadňuje odvolání. Pokud dojde k ohrožení zabezpečení klíče příjemce, je jednodušší tento klíč odvolat nebo obměňovat, aniž by to mělo vliv na ostatní uživatele.

Tyto pokyny platí pro různá prostředí. Stejný klíč by se neměl používat pro předprodukční i produkční prostředí. Pokud zodpovídáte za vytváření předsdílených klíčů, ujistěte se, že jste vytvořili více klíčů pro podporu více klientů.

Další informace najdete v tématu Doporučení pro správu identit a přístupu.

Úložiště tajných kódů

Pomocí systému správy tajných kódů, jako je Azure Key Vault, můžete ukládat tajné kódy v posíleném prostředí, šifrovat neaktivní uložená data a přenášené kódy a auditovat přístup a změny tajných kódů. Pokud potřebujete uložit tajné kódy aplikace, uchovávejte je mimo zdrojový kód, abyste je mohli snadno obměnět.

Certifikáty by měly být uložené pouze v Key Vault nebo v úložišti certifikátů operačního systému. Například ukládání certifikátu X.509 do souboru PFX nebo na disk se nedoporučuje. Pokud potřebujete vyšší úroveň zabezpečení, místo softwarových úložišť tajných kódů zvolte systémy, které mají funkce modulu hardwarového zabezpečení (HSM).

Kompromis: Řešení HSM se nabízejí s vyššími náklady. Vliv na výkon aplikace můžou mít také přidané vrstvy zabezpečení.

Vyhrazený systém správy tajných kódů usnadňuje ukládání, distribuci a řízení přístupu k tajným kódům aplikací. Přístup k úložištím tajných kódů by měly mít jenom autorizované identity a služby. Přístup k systému lze omezit prostřednictvím oprávnění. Při přiřazování oprávnění vždy používejte přístup s nejnižšími oprávněními.

Musíte také řídit přístup na úrovni tajného kódu. Každý tajný klíč by měl mít přístup jenom k jednomu oboru prostředků. Vytvořte hranice izolace, aby komponenta mohla používat jenom tajné kódy, které potřebuje. Pokud dojde k ohrožení zabezpečení izolované komponenty, nemůže získat kontrolu nad jinými tajnými kódy a potenciálně i nad celou úlohou. Jedním ze způsobů, jak izolovat tajné kódy, je použít více trezorů klíčů. Za vytváření dalších trezorů klíčů se nedají žádné další poplatky.

Implementujte auditování a monitorování pro přístup k tajným kódům. Protokoluje, kdo přistupuje k tajným kódům a kdy má identifikovat neoprávněnou nebo podezřelou aktivitu. Informace o protokolování z hlediska zabezpečení najdete v tématu Doporučení k monitorování zabezpečení a detekci hrozeb.

Obměně tajných kódů

Mějte zavedený proces, který udržuje tajnou hygienu. Dlouhověkost tajemství ovlivňuje správu tohoto tajemství. Aby se omezily vektory útoku, měly by se tajné kódy co nejčastěji vyřazovat a nahrazovat novými tajnými kódy.

Přístupové tokeny OAuth zacházejte opatrně s ohledem na jejich dobu životnosti. Zvažte, jestli je potřeba upravit časové období expozice na kratší dobu. Obnovovací tokeny musí být bezpečně uložené s omezeným vystavením aplikaci. Obnovené certifikáty by také měly používat nový klíč. Informace o obnovovacích tokenech najdete v tématu Zabezpečené obnovovací tokeny OAuth 2.0 On-Behalf-Of.

Nahraďte tajné kódy poté, co dosáhnou konce životnosti, přestanou být používány úlohou nebo pokud byly ohroženy. Naopak nevyřazovat aktivní tajné kódy, pokud se jedná o nouzový stav. Stav tajného klíče můžete určit zobrazením protokolů přístupu. Procesy obměně tajných kódů by neměly mít vliv na spolehlivost ani výkon úlohy. Používejte strategie, které vytvářejí redundanci v tajných kódech, spotřebitelích a metodách přístupu pro zajištění plynulé rotace.

Další informace o tom, jak Azure Storage zpracovává obměnu, najdete v tématu Správa přístupových klíčů účtu.

Procesy obměně by se měly automatizovat a nasazovat bez lidské interakce. Uložení tajných kódů do úložiště správy tajných kódů, které nativně podporuje koncepty obměny, může tento provozní úkol zjednodušit.

Bezpečné postupy pro používání tajných kódů

Jako generátor tajných kódů nebo operátor byste měli být schopni bezpečně distribuovat tajné kódy. Mnoho organizací používá nástroje k bezpečnému sdílení tajných kódů v rámci organizace i externě s partnery. Pokud nástroj neexistuje, proveďte proces správného předání přihlašovacích údajů oprávněným příjemcům. Vaše plány zotavení po havárii by měly zahrnovat postupy obnovení tajných kódů. Máte proces pro situace, kdy dojde k ohrožení nebo úniku klíče a je potřeba ho na vyžádání znovu vygenerovat. Při používání tajných kódů zvažte následující osvědčené postupy pro zajištění bezpečnosti:

Zabránit pevnému kódování

Neztvrdujte tajné kódy jako statický text v artefaktech kódu, jako jsou kód aplikace, konfigurační soubory a kanály nasazení sestavení. Tento vysoce rizikový postup činí kód zranitelným, protože tajné kódy jsou zpřístupněny všem uživatelům s přístupem ke čtení.

Této situaci se můžete vyhnout použitím spravovaných identit, které eliminují nutnost ukládat přihlašovací údaje. Vaše aplikace používá svou přiřazenou identitu k ověřování v jiných prostředcích prostřednictvím zprostředkovatele identity (IdP). Testujte v neprodukčních prostředích s falešnými tajnými kódy během vývoje, abyste zabránili náhodnému odhalení skutečných tajných kódů.

Používejte nástroje, které pravidelně detekují vystavené tajné kódy v kódu aplikace a vytvářejí artefakty. Tyto nástroje můžete přidat jako předběžné háky Gitu, které před nasazením zdrojového kódu vyhledávají přihlašovací údaje. Pravidelně kontrolujte a sanitujte protokoly aplikací, abyste měli jistotu, že se nechtěně nezaznamenávají žádné tajné kódy. Detekci můžete také posílit prostřednictvím partnerských kontrol.

Poznámka

Pokud skenovací nástroje zjistí tajný kód, musí být tento tajný kód považován za ohrožený. Měl by být odvolán.

Reakce na obměně tajných kódů

Jako vlastník úlohy potřebujete porozumět plánu a zásadám obměně tajných kódů, abyste mohli začlenit nové tajné kódy s minimálním přerušením pro uživatele. Když se tajný klíč otočí, může se zobrazit okno, když starý tajný klíč není platný, ale nový tajný klíč není umístěný. Během tohoto okna komponenta, ke které se aplikace pokouší získat přístup, nepotvrdí požadavky. Tyto problémy můžete minimalizovat tím, že do kódu zabudujete logiku opakování. Můžete také použít vzory souběžného přístupu, které umožňují mít více přihlašovacích údajů, které se dají bezpečně změnit, aniž by se vzájemně ovlivnily.

Spolupracujte s provozním týmem a buďte součástí procesu správy změn. Měli byste dát vlastníkům přihlašovacích údajů vědět, když vyřadíte část aplikace, která používá přihlašovací údaje, které už nejsou potřeba.

Integrujte načítání a konfiguraci tajných kódů do kanálu automatizovaného nasazení. Načítání tajných kódů pomáhá zajistit, aby se tajné kódy během nasazení automaticky načítá. Vzory injektáže tajných kódů můžete také použít k vložení tajných kódů do kódu aplikace nebo konfigurace za běhu, což zabraňuje náhodnému zveřejnění tajných kódů v protokolech nebo správě verzí.

Usnadnění Azure

Ukládejte tajné kódy pomocí Key Vault. Ukládejte tajné kódy v systému pro správu tajných kódů Azure, Key Vault, spravovaném HSM Azure a dalších umístěních. Další informace najdete v tématu Jak zvolit správné řešení správy klíčů.

Integrace řízení přístupu na základě identity Microsoft Entra ID a spravované identity pomáhají minimalizovat potřebu tajných kódů. Microsoft Entra ID nabízí vysoce zabezpečené a použitelné prostředí pro řízení přístupu s integrovanými mechanismy pro zpracování obměně klíčů, pro anomálie a další.

Pomocí řízení přístupu na základě role v Azure (RBAC) přiřaďte oprávnění uživatelům, skupinám a aplikacím v určitém rozsahu.

Pomocí modelu přístupu můžete řídit trezory klíčů, oprávnění a tajné kódy. Další informace najdete v tématu Přehled modelu Accessu.

Implementujte detekci odhalení tajných kódů. Integrujte do úlohy procesy, které detekují podezřelou aktivitu a pravidelně kontrolují vystavené klíče v kódu aplikace. Mezi možnosti patří:

Neukládejte klíče a tajné kódy pro žádný typ prostředí v konfiguračních souborech aplikací ani v kanálech kontinuální integrace a průběžného doručování (CI/CD). Vývojáři by pro přístup k přihlašovacím údajům měli používat připojené služby sady Visual Studio nebo soubory pouze místní.

Kontrolní seznam zabezpečení

Projděte si kompletní sadu doporučení.