Rekommendationer för att skydda programhemligheter
Gäller för den här checklistan för Azure Well-Architected Framework Security:
SE:09 | Skydda programhemligheter genom att stärka lagringen och begränsa åtkomst och manipulation och genom att granska dessa åtgärder. Kör en tillförlitlig och regelbunden rotationsprocess som kan improvisera rotationer för nödsituationer. |
---|
Den här guiden beskriver rekommendationerna för att skydda känslig information i program. Korrekt hantering av hemligheter är avgörande för att upprätthålla säkerheten och integriteten för ditt program, din arbetsbelastning och tillhörande data. Felaktig hantering av hemligheter kan leda till dataintrång, avbrott i tjänsten, regelöverträdelser och andra problem.
Autentiseringsuppgifter, till exempel API-nycklar, OAuth-token (Open Authorization) och SSH-nycklar (Secure Shell) är hemligheter. Vissa autentiseringsuppgifter, till exempel OAuth-token på klientsidan, kan skapas dynamiskt vid körning. Dynamiska hemligheter måste fortfarande skyddas trots att de är tillfälliga. Icke-nödvändig information, till exempel certifikat och digitala signaturnycklar, kan också vara känslig. Efterlevnadskrav kan leda till att konfigurationsinställningar som vanligtvis inte anses vara hemliga behandlas som programhemligheter.
Definitioner
Term | Definition |
---|---|
Certifikat | Digitala filer som innehåller de offentliga nycklarna för kryptering eller dekryptering. |
Merit | Information som används för att verifiera utgivarens eller konsumentens identitet i en kommunikationskanal. |
Genomsökning av autentiseringsuppgifter | Processen för att verifiera källkoden för att se till att hemligheter inte ingår. |
Kryptering | Den process genom vilken data görs oläsbara och låsta med en hemlig kod. |
Nyckel | En hemlig kod som används för att låsa eller låsa upp krypterade data. |
Åtkomst med lägsta behörighet | En Nulta pouzdanost princip som syftar till att minimera en uppsättning behörigheter för att slutföra en jobbfunktion. |
Hanterad identitet | En identitet som har tilldelats resurser och hanteras av Azure. |
Icke-sekret | Information som inte äventyrar arbetsbelastningens säkerhetsstatus om den har läckt ut. |
Rotation | Processen med att regelbundet uppdatera hemligheter så att de, om de komprometteras, endast är tillgängliga under en begränsad tid. |
Hemlig | En konfidentiell komponent i systemet som underlättar kommunikationen mellan arbetsbelastningskomponenter. Om det läcker ut kan hemligheter orsaka ett intrång. |
X.509 | En standard som definierar formatet för offentliga nyckelcertifikat. |
Viktigt!
Behandla inte icke-sekreter som hemligheter. Hemligheter kräver driftstriggning som inte behövs för icke-säkerhetsobjekt och som kan leda till extra kostnader.
Programkonfigurationsinställningar, till exempel URL:er för API:er som programmet använder, är ett exempel på icke-sekunder. Den här informationen ska inte lagras med programkoden eller programhemligheterna. Överväg att använda ett dedikerat konfigurationshanteringssystem som Azure App Configuration för att hantera de här inställningarna. Mer information finns i Vad är Azure App Configuration?.
Viktiga designstrategier
Din strategi för hemlig hantering bör minimera hemligheter så mycket som möjligt och integrera dem i miljön genom att dra nytta av plattformsfunktioner. Om du till exempel använder en hanterad identitet för ditt program är åtkomstinformationen inte inbäddad i niska veze och det är säkert att lagra informationen i en konfigurationsfil. Överväg följande problemområden innan du lagrar och hanterar hemligheter:
Skapade hemligheter bör förvaras i säker lagring med strikta åtkomstkontroller.
Hemlig rotation är en proaktiv åtgärd, medan återkallningen är reaktiv.
Endast betrodda identiteter ska ha åtkomst till hemligheter.
Du bör underhålla en spårningslogg för att inspektera och verifiera åtkomsten till hemligheter.
Skapa en strategi kring dessa punkter för att förhindra identitetsstöld, undvika avståndstagande och minimera onödig exponering för information.
Hantera arbetsbelastningshemligheter
Undvik om möjligt att skapa hemligheter. Hitta sätt att delegera ansvar till plattformen. Använd till exempel plattformens inbyggda hanterade identiteter för att hantera autentiseringsuppgifter. Färre hemligheter resulterar i minskad yta och mindre tid på hemlig hantering.
Vi rekommenderar att nycklar har tre olika roller: användare, administratör och revisor. Rollskillnader hjälper till att säkerställa att endast betrodda identiteter har åtkomst till hemligheter med rätt behörighetsnivå. Utbilda utvecklare, administratörer och annan relevant personal om vikten av bästa praxis för hemlig hantering och säkerhet.
I förväg delade nycklar
Du kan styra åtkomsten genom att skapa distinkta nycklar för varje konsument. En klient kommunicerar till exempel med ett API från tredje part med hjälp av en i förväg delad nyckel. Om en annan klient behöver åtkomst till samma API måste de använda en annan nyckel. Dela inte nycklar även om två konsumenter har samma åtkomstmönster eller roller. Konsumentomfattningar kan ändras med tiden och du kan inte oberoende uppdatera behörigheter eller särskilja användningsmönster när en nyckel har delats. Distinkt åtkomst gör det också enklare att återkalla. Om en konsuments nyckel komprometteras är det lättare att återkalla eller rotera nyckeln utan att påverka andra konsumenter.
Den här vägledningen gäller för olika miljöer. Samma nyckel ska inte användas för både förproduktions- och produktionsmiljöer. Om du ansvarar för att skapa i förväg delade nycklar måste du skapa flera nycklar för att stödja flera klienter.
Mer information finns i Rekommendationer för identitets- och åtkomsthantering.
Hemlig lagring
Använd ett hemligt hanteringssystem, till exempel Azure Key Vault, för att lagra hemligheter i en härdad miljö, kryptera i vila och under överföring samt granska åtkomst och ändringar av hemligheter. Om du behöver lagra programhemligheter bör du hålla dem utanför källkoden för enkel rotation.
Certifikat ska endast lagras i Key Vault eller i operativsystemets certifikatarkiv. Till exempel rekommenderas inte lagring av ett X.509-certifikat i en PFX-fil eller på en disk. Om du behöver en högre säkerhetsnivå väljer du system som har funktioner för maskinvarusäkerhetsmoduler (HSM) i stället för programvarubaserade hemliga butiker.
Kompromiss: HSM-lösningar erbjuds till en högre kostnad. Du kan också se en effekt på programmets prestanda på grund av extra säkerhetslager.
Ett dedikerat system för hemlig hantering gör det enkelt att lagra, distribuera och kontrollera åtkomsten till programhemligheter. Endast auktoriserade identiteter och tjänster ska ha åtkomst till hemliga arkiv. Åtkomst till systemet kan begränsas via behörigheter. Använd alltid metoden med lägsta behörighet när du tilldelar behörigheter.
Du måste också kontrollera åtkomsten på hemlig nivå. Varje hemlighet ska bara ha åtkomst till ett enda resursomfång. Skapa isoleringsgränser så att en komponent bara kan använda hemligheter som den behöver. Om en isolerad komponent komprometteras kan den inte få kontroll över andra hemligheter och potentiellt hela arbetsbelastningen. Ett sätt att isolera hemligheter är att använda flera nyckelvalv. Det finns inga extra kostnader för att skapa extra nyckelvalv.
Implementera granskning och övervakning för hemlig åtkomst. Logga vem som har åtkomst till hemligheter och när du ska identifiera obehörig eller misstänkt aktivitet. Information om loggning ur ett säkerhetsperspektiv finns i Rekommendationer om säkerhetsövervakning och hotidentifiering.
Hemlig rotation
Ha en process på plats som upprätthåller hemlig hygien. Hemlighetens livslängd påverkar hanteringen av den hemligheten. För att minska angreppsvektorer bör hemligheter dras tillbaka och ersättas med nya hemligheter så ofta som möjligt.
Hantera OAuth-åtkomsttoken noggrant med hänsyn till deras tid att leva. Tänk på om exponeringsfönstret måste justeras till en kortare period. Uppdateringstoken måste lagras säkert med begränsad exponering för programmet. Förnyade certifikat bör också använda en ny nyckel. Information om uppdateringstoken finns i Skydda OAuth 2.0 För uppdateringstoken.
Ersätt hemligheter när de har nått slutet av sin livslängd, används inte längre av arbetsbelastningen eller om de har komprometterats. Omvänt ska du inte dra tillbaka aktiva hemligheter om det inte är en nödsituation. Du kan fastställa status för en hemlighet genom att visa åtkomstloggar. Hemliga rotationsprocesser bör inte påverka arbetsbelastningens tillförlitlighet eller prestanda. Använd strategier som skapar redundans i hemligheter, konsumenter och åtkomstmetoder för smidig rotation.
Mer information om hur Azure Storage hanterar rotation finns i Hantera kontoåtkomstnycklar.
Rotationsprocesser bör automatiseras och distribueras utan mänsklig interaktion. Att lagra hemligheter i ett hemligt hanteringslager som har inbyggt stöd för rotationsbegrepp kan förenkla den här driftuppgiften.
Använda arbetsbelastningshemligheter på ett säkert sätt
Som en hemlig generator eller operatör bör du kunna distribuera hemligheter på ett säkert sätt. Många organisationer använder verktyg för att dela hemligheter på ett säkert sätt både inom organisationen och externt till partner. I avsaknad av ett verktyg bör du ha en process för att korrekt överlämna autentiseringsuppgifter till auktoriserade mottagare. Dina planer för haveriberedskap bör innehålla hemliga återställningsprocedurer. Ha en process för situationer där en nyckel komprometteras eller läcker och måste återskapas på begäran. Överväg följande metodtips för säkerhet när du använder hemligheter:
Förhindra hårdkodning
Hårdkoda inte hemligheter som statisk text i kodartefakter som programkod, konfigurationsfiler och pipelines för byggdistribution. Den här högriskpraxis gör koden sårbar eftersom hemligheter exponeras för alla med läsåtkomst.
Du kan undvika den här situationen genom att använda hanterade identiteter för att eliminera behovet av att lagra autentiseringsuppgifter. Ditt program använder sin tilldelade identitet för att autentisera mot andra resurser via identitetsprovidern (IdP). Testa i icke-produktionsmiljöer med falska hemligheter under utvecklingen för att förhindra oavsiktlig exponering av verkliga hemligheter.
Använd verktyg som regelbundet identifierar exponerade hemligheter i programkoden och skapar artefakter. Du kan lägga till dessa verktyg som Git-förtilldefinieringskrokar som söker efter autentiseringsuppgifter innan källkoden checkas ut. Granska och sanera programloggar regelbundet för att säkerställa att inga hemligheter registreras oavsiktligt. Du kan också förstärka identifieringen via peer-granskningar.
Kommentar
Om genomsökningsverktygen upptäcker en hemlighet måste den hemligheten betraktas som komprometterad. Den bör återkallas.
Svara på hemlig rotation
Som arbetsbelastningsägare måste du förstå den hemliga rotationsplanen och principerna så att du kan införliva nya hemligheter med minimala störningar för användarna. När en hemlighet roteras kan det finnas ett fönster när den gamla hemligheten inte är giltig, men den nya hemligheten inte har placerats. Under det fönstret bekräftar inte komponenten som programmet försöker nå begäranden. Du kan minimera dessa problem genom att skapa logik för återförsök i koden. Du kan också använda samtidiga åtkomstmönster som gör att du kan ha flera autentiseringsuppgifter som kan ändras på ett säkert sätt utan att påverka varandra.
Arbeta med driftteamet och delta i ändringshanteringsprocessen. Du bör meddela ägare av autentiseringsuppgifter när du inaktiverar en del av programmet som använder autentiseringsuppgifter som inte längre behövs.
Integrera hemlig hämtning och konfiguration i din automatiserade distributionspipeline. Hemlig hämtning hjälper till att säkerställa att hemligheter hämtas automatiskt under distributionen. Du kan också använda mönster för hemlig inmatning för att infoga hemligheter i programkod eller konfiguration vid körning, vilket förhindrar att hemligheter oavsiktligt exponeras för loggar eller versionskontroll.
Azure-underlättande
Lagra hemligheter med hjälp av Key Vault. Lagra hemligheter i Azures hemliga hanteringssystem, Key Vault, Azure Managed HSM och andra platser. Mer information finns i Så här väljer du rätt nyckelhanteringslösning.
Integrera identitetsbaserad åtkomstkontroll. Microsoft Entra-ID och hanterade identiteter hjälper till att minimera behovet av hemligheter. Microsoft Entra ID erbjuder en mycket säker och användbar upplevelse för åtkomstkontroll med inbyggda mekanismer för hantering av nyckelrotation, avvikelser med mera.
Använd rollbaserad åtkomstkontroll i Azure (RBAC) för att tilldela behörigheter till användare, grupper och program i ett visst omfång.
Använd en åtkomstmodell för att styra nyckelvalv, behörigheter och hemligheter. Mer information finns i Översikt över åtkomstmodell.
Implementera identifiering av hemlig exponering. Integrera processer i din arbetsbelastning som identifierar misstänkt aktivitet och regelbundet söker efter exponerade nycklar i programkoden. Några alternativ är:
- Azure DevOps Credential Scanner-uppgift
- Hemlig genomsökning i Defender för molnet
- Microsoft Defender för Key Vault
- GitHub Hemlig skanner
Lagra inte nycklar och hemligheter för någon miljötyp i programkonfigurationsfiler eller ci/CD-pipelines (kontinuerlig integrering och kontinuerlig leverans). Utvecklare bör använda Visual Studio Connected Services eller filer endast lokalt för att få åtkomst till autentiseringsuppgifter.
Relaterade länkar
- Översikt över åtkomstmodell
- Azure DevOps Credential Scanner-uppgift
- Konfigurera Microsoft Security DevOps Azure DevOps-tillägget
- Konfigurera GitHub Advanced Security för Azure DevOps
- Hemlig genomsökning i Defender för molnet
- Så här väljer du rätt nyckelhanteringslösning
- Hantera kontoåtkomstnycklar
- Microsoft Defender för Key Vault
- Rekommendationer för säkerhetsövervakning och hotidentifiering
- Rekommendationer för identitets- och åtkomsthantering
- Skydda OAuth 2.0 On-Behalf-Of-uppdateringstoken för webbtjänster
- Visual Studio Connected Services
Communitylänkar
Säkerhetskontrollista
Se den fullständiga uppsättningen rekommendationer.