Doporučení pro ochranu tajných kódů aplikací
Platí pro toto doporučení kontrolního seznamu zabezpečení architektury Azure Well-Architected Framework:
SE: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ý proces obměny, který může improvizovat rotace pro mimořádné situace. |
---|
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 aplikací, úloh a přidružených dat. Nesprávné zpracování tajných kódů může vést k poruš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, jako jsou tokeny OAuth na straně klienta, je možné dynamicky vytvářet za běhu. Dynamické tajné kódy je stále potřeba chránit i přes jejich dočasnou povahu. Nevýkonné informace, jako jsou certifikáty a klíče digitálního podpisu, mohou být také citlivé. Požadavky na dodržování předpisů můžou způsobit, že nastavení konfigurace, která se obvykle nepovažují za tajné kódy aplikace, se považují za tajné kódy aplikace.
Definice
Semestr | 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 tajné kódy nejsou zahrnuté. |
Šifrování | Proces, podle kterého jsou data nečitelná a uzamčená tajným kódem. |
Klíč | Tajný kód, který slouží 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 minimalizovat sadu oprávnění k dokončení funkce úlohy. |
Spravovaná identita | Identita, která je přiřazená k prostředkům a spravuje ji Azure. |
Nezabezpeč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ý | Důvěrná komponenta systému, která usnadňuje komunikaci mezi součástmi úloh. Pokud dojde k úniku, můžou tajné kódy způsobit porušení zabezpečení. |
X.509 | Standard, který definuje formát certifikátů veřejného klíče. |
Důležité
Nezacházejte s nesekrety jako s tajnými kódy. Tajné kódy vyžadují provozní rigorii, která není nutná pro nezabezpečené a které můžou vést k dodatečným nákladům.
Příkladem nesekretů jsou nastavení konfigurace aplikace, jako jsou adresy URL pro rozhraní API, která aplikace používá. Tyto informace by neměly být uloženy s kódem aplikace nebo tajnými kódy aplikace. Zvažte použití vyhrazeného systému pro správu konfigurace, jako je Aplikace Azure Konfigurace, ke správě těchto nastavení. Další informace najdete v tématu Co je konfigurace Aplikace Azure?.
Klíčové strategie návrhu
Strategie správy tajných kódů by měla co nejvíce minimalizovat tajné kódy a integrovat je do prostředí pomocí funkcí platformy. Pokud například pro aplikaci používáte spravovanou identitu, nejsou informace o přístupu vložené do připojovací řetězec a je bezpečné je uložit do konfiguračního souboru. Před uložení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 řízeními přístupu.
Obměně tajných kódů je proaktivní operace, zatímco odvolání je reaktivní.
K tajným kódům by měly mít přístup jenom důvěryhodné identity.
Měli byste udržovat záznam auditu pro kontrolu a ověření přístupu k tajným kódům.
Vytvořte strategii týkající se těchto bodů, abyste zabránili krádeži identity, vyhnuli se repudici a minimalizovali nepotřebné vystavení informacím.
Správa tajných kódů úloh
Pokud je to možné, vyhněte se vytváření tajných kódů. Najděte způsoby, jak delegovat odpovědnost na platformu. K zpracování přihlašovacích údajů použijte například předdefinované spravované identity platformy. Méně tajných kódů vede ke snížení plochy a kratšímu č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. Rozdíl rolí pomáhá zajistit, aby k tajným kódům měly přístup pouze důvěryhodné identity s odpovídající úrovní oprávnění. Informujte vývojáře, správce a další relevantní pracovníky o důležitosti osvědčených postupů správy 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 má jiný klient přístup ke stejnému rozhraní API, musí použít jiný klíč. Klíče nesdílejte, i když mají dva příjemci stejné vzory přístupu nebo role. Obory 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 vzory použití. Jedinečný přístup také usnadňuje odvolání. Pokud dojde k ohrožení zabezpečení klíče uživatele, je jednodušší tento klíč odvolat nebo otočit, 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ů
K ukládání tajných kódů do posíleného prostředí, šifrování neaktivních uložených a přenášených kódů a auditování přístupu a změn tajných kódů použijte systém pro správu tajných kódů, jako je Azure Key Vault. Pokud potřebujete ukládat tajné kódy aplikací, zachovejte je mimo zdrojový kód, abyste je mohli snadno otočit.
Certifikáty by měly být uložené jenom ve službě Key Vault nebo v úložišti certifikátů operačního systému. Například uložení certifikátu X.509 do souboru PFX nebo na disk se nedoporučuje. Pokud potřebujete vyšší úroveň zabezpečení, zvolte systémy, které mají funkce modulu hardwarového zabezpečení (HSM) místo softwarových úložišť tajných kódů.
Kompromis: Řešení HSM se nabízejí za vyšší cenu. Můžete také vidět vliv na výkon aplikace z důvodu přidání vrstev zabezpečení.
Vyhrazený systém pro správu 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 je možné 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 pouze k jednomu oboru prostředků. Vytvořte hranice izolace, aby komponenta mohla používat pouze tajné kódy, které potřebuje. Pokud je izolovaná komponenta ohrožená, nemůže získat kontrolu nad dalšími tajnými kódy a potenciálně celou úlohu. Jedním ze způsobů izolace tajných kódů je použití několika trezorů klíčů. Za vytváření dalších trezorů klíčů nejsou žádné další náklady.
Implementujte auditování a monitorování pro přístup k tajným kódům. Zaznamte, kdo přistupuje k tajným kódům a kdy identifikovat neoprávněnou nebo podezřelou aktivitu. Informace o protokolování z hlediska zabezpečení najdete v tématu Doporučení týkající se monitorování zabezpečení a detekce hrozeb.
Obměně tajných kódů
Mějte na místě proces, který udržuje tajnou hygienu. Dlouhověkost tajemství ovlivňuje řízení tohoto tajemství. Kvůli omezení vektorů útoku by se tajné kódy měly co nejčastěji vyřadit a nahradit novými tajnými kódy.
Při zpracování přístupových tokenů OAuth pečlivě zvažte jejich dobu života. Zvažte, jestli je potřeba okno expozice upravit na kratší dobu. Obnovovací tokeny musí být bezpečně uloženy s omezenou expozicí 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.
Po ukončení životnosti nahraďte tajné kódy, které už úlohy nepoužívají nebo pokud byly ohroženy. Naopak aktivní tajné kódy nevyužívejte, pokud se nejedná o nouzový stav. Stav tajného kódu můžete určit zobrazením přístupových protokolů. Procesy obměn tajných kódů by neměly mít vliv na spolehlivost nebo výkon úlohy. Používejte strategie, které vytvářejí redundanci v tajných kódech, konzumentech a metodách přístupu k bezproblémové obměně.
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 měly být automatizované a nasazené bez zásahu člověka. Ukládání tajných kódů do úložiště pro správu tajných kódů, které nativně podporuje koncepty obměny, může tuto provozní úlohu zjednodušit.
Bezpečné používání tajných kódů úloh
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ě partnerům. Pokud nástroj nemáte, máte proces správného předání přihlašovacích údajů autorizovaným příjemcům. Plány zotavení po havárii by měly zahrnovat postupy obnovení tajných kódů. Pracujte v situacích, kdy dojde k ohrožení nebo úniku klíče a je potřeba ho znovu vygenerovat na vyžádání. Při používání tajných kódů zvažte následující osvědčené postupy:
Zabránění zakódování
Neutěžujte tajné kódy jako statický text v artefaktech kódu, jako je kód aplikace, konfigurační soubory a kanály nasazení sestavení. Tento vysoce rizikový postup ztěžuje kód, protože tajné kódy jsou přístupné všem uživatelům s přístupem pro čtení.
Této situaci se můžete vyhnout použitím spravovaných identit, abyste eliminovali potřebu ukládat přihlašovací údaje. Vaše aplikace používá přiřazenou identitu k ověření v jiných prostředcích prostřednictvím zprostředkovatele identity (IDP). Testování 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 vystavení 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ředpřipravené háky Gitu, které před nasazením potvrzení 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 nástroje pro kontrolu zjistí tajný klíč, musí být tento tajný kód považován za ohrožený. Měla by být odvolána.
Reakce na obměnu tajných kódů
Jako vlastník úlohy musíte porozumět plánu obměně tajných kódů a zásadám, abyste mohli začlenit nové tajné kódy s minimálním přerušením provozu uživatelů. Když se tajný klíč otočí, může existovat okno, když starý tajný kód není platný, ale nový tajný kód nebyl umístěn. Během tohoto okna komponenta, ke které se aplikace pokouší dosáhnout, nepotvrdí žádosti. Tyto problémy můžete minimalizovat sestavením logiky opakování do kódu. 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 to mělo vliv na sebe navzájem.
Spolupracujte s provozním týmem a buďte součástí procesu správy změn. Vlastníci přihlašovacích údajů byste měli dát vědět, když vyřadíte část aplikace z provozu, která používá přihlašovací údaje, které už nepotřebujete.
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 nasazování automaticky načítá. Vzory injektáže tajných kódů můžete použít také k vložení tajných kódů do kódu aplikace nebo konfigurace za běhu, což brání náhodnému zpřístupnění tajných kódů protokolům nebo správě verzí.
Usnadnění azure
Ukládejte tajné kódy pomocí služby Key Vault. Ukládejte tajné kódy v systému pro správu tajných kódů Azure, key Vaultu, 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ě identit Id Microsoft Entra 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 pomocí integrovaných mechanismů pro zpracování rotace klíčů, anomálií 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í přístupového modelu 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 procesy ve vaší úloze, které detekují podezřelou aktivitu, a pravidelně kontrolují vystavené klíče v kódu aplikace. Mezi možnosti patří:
- Úloha skeneru přihlašovacích údajů Azure DevOps
- Kontrola tajných kódů v programu Defender for Cloud
- Microsoft Defender for Key Vault
- GitHub Secret Scanner
Neukládejte klíče a tajné kódy pro žádný typ prostředí v konfiguračních souborech aplikace ani v kanálech kontinuální integrace a průběžného doručování (CI/CD). Vývojáři by měli pro přístup k přihlašovacím údajům používat připojené služby sady Visual Studio nebo soubory jen pro místní prostředí.
Související odkazy
- Přehled modelu Accessu
- Úloha skeneru přihlašovacích údajů Azure DevOps
- Konfigurace rozšíření Microsoft Security DevOps Azure DevOps
- Konfigurace GitHub Advanced Security pro Azure DevOps.
- Kontrola tajných kódů v programu Defender for Cloud
- Výběr správného řešení pro správu klíčů
- Správa přístupových klíčů účtu
- Microsoft Defender for Key Vault
- Doporučení týkající se monitorování zabezpečení a detekce hrozeb
- Doporučení pro správu identit a přístupu
- Zabezpečení obnovovacích tokenů OAuth 2.0 On-Behalf-Of pro webové služby
- Připojené služby sady Visual Studio
Komunitní odkazy
Kontrolní seznam zabezpečení
Projděte si kompletní sadu doporučení.