Dela via


Rekommendationer för att skydda programhemligheter

Gäller för denna checklista för Azure Well-Architected Framework Security:

SE:09 Skydda programhemligheter genom att förstärka lagringen och begränsa åtkomst och manipulering 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 sin tillfälliga natur. Icke-databaserad information, till exempel certifikat och digitala signaturnycklar, kan också vara känslig. Efterlevnadskrav kan göra att konfigurationsinställningar som vanligtvis inte anses vara hemliga behandlas som programhemligheter.

Definitioner 

Period 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äsliga 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 Nolltillit princip som syftar till att minimera en uppsättning behörigheter för att slutföra en jobbfunktion.
Hanterad identitet En identitet som tilldelas till resurser och hanteras av Azure.
Icke-säkerhetssekunder Information som inte äventyrar arbetsbelastningens säkerhetsstatus om den läcker ut.
Rotation Processen med att regelbundet uppdatera hemligheter så att de, om de komprometteras, bara är tillgängliga under en begränsad tid.
Hemlighet En konfidentiell komponent i systemet som underlättar kommunikationen mellan arbetsbelastningskomponenter. Om hemligheterna läcker kan de orsaka ett intrång.
X.509 En standard som definierar formatet för offentliga nyckelcertifikat.

Viktigt

Behandla inte icke-säkerhetsfunktioner som hemligheter. Hemligheter kräver driftsmässig stringens 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-säkerhetsfunktioner. Den här informationen ska inte lagras med programkoden eller programhemligheter. Ö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 hemlighetshantering 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 bäddas åtkomstinformation inte in i anslutningssträngar och det är säkert att lagra informationen i en konfigurationsfil. Tänk på följande områ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 återkallning är reaktivt.

  • Endast betrodda identiteter ska ha åtkomst till hemligheter.

  • Du bör ha en spårningslogg för att kontrollera och verifiera åtkomsten till hemligheter.

Skapa en strategi kring dessa punkter för att förhindra identitetsstöld, undvika avvislighet och minimera onödig exponering för information.

Säkra metoder för hemlighetshantering

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 som ägnas åt hemlighetshantering.

Vi rekommenderar att nycklar har tre olika roller: användare, administratör och granskare. Rollskillnad hjälper till att säkerställa att endast betrodda identiteter har åtkomst till hemligheter med lämplig 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. Konsumentomfång kan ändras med tiden och du kan inte oberoende uppdatera behörigheter eller urskilja 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 enklare 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 förstärkt 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. Att till exempel lagra ett X.509-certifikat i en PFX-fil eller på en disk rekommenderas inte. 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 hemlighetshanteringssystem 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 behövs. 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 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 beaktande av 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 livet, 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.

Säkra metoder för att använda hemligheter

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 på ett säkert sätt dela hemligheter både inom organisationen och externt till partner. I avsaknad av ett verktyg bör du ha en process för korrekt överlämnande av autentiseringsuppgifter till behöriga mottagare. Dina haveriberedskapsplaner 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ögriskpraxisen 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 de här verktygen som Git-förkopplingskrokar som söker efter autentiseringsuppgifter innan källkoden checkar ut. Granska och rensa programloggar regelbundet för att säkerställa att inga hemligheter registreras oavsiktligt. Du kan också förstärka identifieringen via peer-granskningar.

Anteckning

Om genomsökningsverktygen upptäcker en hemlighet måste den hemligheten anses vara 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 har inte 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 vara en del av ä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 hemliga inmatningsmönster 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 och mycket mer.

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:

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 lokala filer för att få åtkomst till autentiseringsuppgifter.

Säkerhetskontrollista

Se den fullständiga uppsättningen rekommendationer.