Secrets, identitet och runtime

Hantering av hemligheter

Så lagras, levereras, roteras och granskas känsliga värden utan att de blir permanenta risker.

Hemlighetshållning är disciplinen att säkert lagra, distribuera, rotera och granska känsliga uppgifter som API-nycklar, lösenord, certifikat och tokens. Att behandla hemligheter som förstaklassiga säkerhetsobjekt snarare än konfigurationsvärden är avgörande för att förhindra uppgiftsbaserade attacker.

Lärandemål

Det här ska du kunna efter genomläsning.
  • Känna igen vilka värden som ska behandlas som hemligheter och varför.
  • Beskriva hur hemlighetslager, injektering och rotation minskar exponering.
  • Skilja på hemligheter för CI/CD och hemligheter i själva körningen.

I korthet

En snabb mental modell innan du går på djupet.
Grundmodell
  • Hemligheter
  • Hemlighetslager
  • Rotation
Leverans
  • Injektering
  • Granskning
  • Åtkomstkontroll
Arbetssätt
  • Kortlivad åtkomst
  • Minsta privilegium
  • Separera pipeline och körning

Vad är hemligheter?

En hemlighet är all information som ger åtkomst till ett system och måste hållas konfidentiell. Databaslösenord, API-nycklar, OAuth-tokens, TLS-certifikat, privata SSH-nycklar och tjänstkontonycklar. Det som utmärker en hemlighet från vanlig konfiguration är konsekvensen. Om ett databasvärdnamn läcker sker ingenting omedelbart, om ett databaslösenord läcker har angriparen direkt åtkomst.

Omfånget av hemligheter i en modern applikation är bredare än många team inser. En mikrotjänstapplikation kan ha dussintals hemligheter. Varje tjänst behöver uppgifter för att komma åt databasen, anropa nedströms-API:er, publicera till meddelandeköer och läsa från konfigurationslagrar. Var och en är en potentiell svaghet om de inte hanteras korrekt.

Hemligheter skiljer sig från annan konfiguration på ett avgörande sätt. Exponering av en hemlighet har omedelbara säkerhetskonsekvenser, medan exponering av icke-känslig konfiguration (ett databasvärdnamn, ett funktionsflagga-värde) inte har det. Denna distinktion driver olika hanteringskrav. Hemligheter måste krypteras i lagring, under transport och i minnet där möjligt, och varje åtkomst måste granskas.

Hemlighetsgvalv

Ett hemlighetsgvalv är ett ändamålsbyggt system för att lagra, hantera och distribuera hemligheter till de applikationer och tjänster som behöver dem. HashiCorp Vault, AWS Secrets Manager, Azure Key Vault och GCP Secret Manager är de ledande alternativen. Vart och ett tillhandahåller krypterad lagring, finkornig åtkomstkontroll, automatisk rotation och omfattande granskningsloggning.

Gvalvets grundläggande förmåga är kontrollerad distribution. Istället för att bädda in hemligheter i applikationskod eller konfigurationsfiler autentiserar sig applikationer mot gvalvet och hämtar bara de specifika hemligheter de behöver. Gvalvet fungerar som den enda källan till sanning för alla hemligheter, vilket gör det möjligt att rotera en hemlighet på ett ställe och låta alla applikationer automatiskt hämta det nya värdet.

HashiCorp Vaults funktion för dynamiska hemligheter representerar det kraftfullaste tillvägagångssättet. Istället för att lagra ett statiskt databaslösenord genererar Vault ett unikt, tidsbegränsat konto för varje applikationsförfrågan. Databasen tar emot en riktig men efemär användare, när leasen löper ut återkallar Vault den. Detta eliminerar långlivade hemligheter.

Undvika inbyggda hemligheter

Inbyggda hemligheter, uppgifter direkt inbäddade i källkod, konfigurationsfiler, Docker-avbildningar eller miljövariabelstandardvärden, är ett av de vanligaste och farligaste säkerhetsmistagen. Kodreposition skannas regelbundet av automatiserade verktyg och illvilliga aktörer som letar efter läckta uppgifter.

Git-historikproblemet är särskilt allvarligt. Att ta bort en hemlighet från den senaste incheckningen tar inte bort den från repositoryhistoriken. Alla med åtkomst till repositoryt kan återskapa värdet med standard git-kommandon. Den enda säkra åtgärden är att rotera hemligheten omedelbart och behandla det gamla värdet som permanent komprometterat.

Hemlighetsskanningsverktyg ger automatiserad detektion. Gitleaks, TruffleHog och GitHubs inbyggda hemlighetsskanning körs vid varje incheckning och varnar när mönster som matchar API-nycklar, anslutningssträngar eller privata nycklar detekteras. Att köra dessa som pre-commit hooks förhindrar att hemligheter checkas in, att köra dem i CI fångar dem som slunkit igenom.

Hemlighetslotation

Rotation är praxis att regelbundet ersätta hemligheter med nya värden. Långlivade uppgifter som aldrig roteras blir allt farligare med tiden. Ju längre en hemlighet existerar, desto mer tid har en angripare som stulit den att utnyttja den. En hemlighet som stals för sex månader sedan men aldrig roterades är fortfarande giltig och utnyttjbar idag.

Automatiserad rotation är mycket mer tillförlitlig än manuell rotation. Manuell rotation kräver samordning mellan team, uppdatering av varje system som använder hemligheten och säkerställa att inget missas. Automatiserad rotation hanterar hela orkestreringen. Att generera den nya hemligheten, uppdatera målsystemet, distribuera det nya värdet och verifiera framgång innan det gamla värdet tas ur bruk.

Akutrotation, utlöst av ett misstänkt eller bekräftat intrång, skiljer sig från planerad rotation. I ett intrångscenario måste det gamla klientens uppgifter återkallas omedelbart, även om detta orsakar ett kortvarigt tjänstavbrott, eftersom att lämna det aktivt ger angriparen fortsatt åtkomst. Procedurer för akutrotation bör dokumenteras och övas.

Minsta behörighet och granskningsspår

Åtkomst till hemligheter bör följa principen om minsta behörighet. Varje arbetsbelastning eller tjänst har bara åtkomst till de hemligheter den behöver, med ingen bredare åtkomst. En rapporteringstjänst som läser från en databas bör inte ha åtkomst till uppgifterna för betalningstjänsten. Separata hemligheter för varje tjänst begränsar skadeverkningarna när en enskild tjänst komprometteras.

Granskningsspår registrerar varje hemlighetåtkomst. Vem som hämtade en hemlighet, när, från vilket system och om hämtningen lyckades. Dessa loggar är avgörande för att detektera obehörig åtkomst, utreda incidenter och demonstrera efterlevnad av regler som kräver kontrollerad åtkomst till känsliga uppgifter.

Misstänkta åtkomstmönster, som en tjänst som aldrig normalt läser en viss hemlighet och plötsligt begär den, åtkomst från en oväntad käll-IP eller massuthämtning av många hemligheter på kort tid, bör utlösa varningar. Att centralisera gvalvets granskningsloggar i en SIEM möjliggör korrelation med andra säkerhetshändelser.

Signaler att bevaka

Mönster som är värda att undersöka vidare.
  • Hemligheter dyker upp i källkod, loggar, bildlager eller ärendehantering.
  • Samma inloggningsuppgift används överallt och roteras sällan.
  • Åtkomst till produktionshemligheter är bred, långvarig och svår att följa upp.

FÖRDJUPNING

Vad hemligheter är

Hemligheter är uppgifter eller värden som ger åtkomst till system och måste förbli konfidentiella. De inkluderar API-nycklar, databaslösenord, privata TLS-certifikat, OAuth-klienthemligheter, privata SSH-nycklar och krypteringsnycklar. Det som skiljer en hemlighet från vanlig konfiguration är konsekvens. Om ett värdnamn läcker komprometteras ingenting omedelbart, om ett databaslösenord läcker har angriparen direkt åtkomst.

En hemlighets livscykel sträcker sig från skapande, distribution till auktoriserade konsumenter, användning i körande system, rotation till ett nytt värde och återkallelse av det gamla. Varje steg i denna livscykel är en möjlighet för ett misstag. Hemligheter skapas ofta med alltför långa giltighetstider, distribueras till fler system än nödvändigt, roteras aldrig och återkallas aldrig.

Långlivade hemligheter är särskilt farliga eftersom exponeringsfönstret är långt. En hemlighet som stals för sex månader sedan men aldrig roterades är fortfarande användbar för angriparen. Korttidshemligheter som löper ut inom minuter eller timmar minskar dramatiskt detta fönster. Även om de stjäls löper de ut innan de kan utnyttjas meningsfullt.

Många organisationer underskattar hur många hemligheter de har. En enda applikation kan ackumulera dussintals. Uppgifter för varje externt API den anropar, uppgifter för varje databas, uppgifter för varje meddelandekö, TLS-certifikat och krypteringsnycklar. Att hitta och inventera alla dessa är det första steget mot att hantera dem effektivt.

Hemlighetsgvalv i detalj

Ett hemlighetsgvalv är ett dedikerat system för att lagra, hantera och distribuera hemligheter till applikationer som behöver dem. Istället för att bädda in hemligheter i kod eller konfigurationsfiler autentiserar sig applikationer mot gvalvet vid start eller vid behov och hämtar de specifika hemligheter de är auktoriserade att komma åt. Gvalvet är den enda källan till sanning, vilket gör rotation och återkallelse enkla.

HashiCorp Vault är det mest utbreda öppen källkodsgvalvet. Det stöder flera autentiserings-backends (Kubernetes-tjänstkonton, AWS IAM, LDAP, certifikatbaserade) och flera hemlighets-backends (nyckel-värde, databas, PKI, molnleverantörsuppgifter). Dess dynamiska hemligheter genererar unika, korttidsuppgifter för varje förfrågan, vilket eliminerar problemet med statiska delade lösenord.

Molnbaserade hemlighetsgvalv (AWS Secrets Manager, Azure Key Vault, GCP Secret Manager) integreras sömlöst med respektive molnplattformar. De stöder automatisk rotation via molntjänstintegration, finkornig IAM-baserad åtkomstkontroll och detaljerade granskningsloggar. Team som redan använder en molnplattform bör överväga det molnbaserade gvalvet som första alternativ.

Bootstrap-problemet är den viktigaste utmaningen vid adoption av ett hemlighetsgvalv. Applikationen behöver fortfarande en uppgift för att autentisera sig mot gvalvet. Den korrekta lösningen är att använda en plattformsbaserad autentiseringsmekanism snarare än en lagrad hemlighet. I Kubernetes autentiserar sig pods mot Vault med Kubernetes-tjänstkontots token.

Rotation

Hemlighetslotation är processen att ersätta en hemlighet med ett nytt värde på ett definierat schema eller som svar på en säkerhetshändelse. Målet är att begränsa skadan från stöld av uppgifter genom att säkerställa att stulna uppgifter löper ut innan (eller snabbt efter) att de utnyttjas. Rotation begränsar också exponeringsfönstret från tysta intrång.

Automatiserad rotation är det enda praktiska tillvägagångssättet i stor skala. Manuell rotation kräver samordning mellan team, uppdatering av varje konsumerande system och verifiering att inget gick sönder. Automatiserad rotation hanterar hela orkestreringen. Skapar en ny uppgift, uppdaterar konsumerande system, verifierar framgång och tar sedan bort den gamla uppgiften.

Blå/grön-rotationsmönstret förhindrar driftstopp under uppgiftsändringar. Den nya uppgiften skapas vid sidan av den gamla, applikationer uppdateras för att använda den nya uppgiften medan den gamla förblir giltig, när alla applikationer har bytt återkallas den gamla. Detta överlappande giltighetsperiodsmönster eliminerar rastillståndet.

Akutrotation, utlöst av ett bekräftat eller misstänkt intrång, följer ett annat tillvägagångssätt. Den gamla uppgiften måste återkallas omedelbart, och acceptera eventuellt tjänstavbrott, eftersom att lämna den aktiv ger angriparen fortsatt åtkomst. Procedurer för akutrotation bör dokumenteras och övas innan de behövs.

Injektion i applikationer

Hemlighetsinjektion är processen att tillhandahålla hemligheter till körande applikationer utan att hårdkoda dem i källkod eller konfigurationsfiler. Applikationer bör aldrig innehålla hemlighetsvärden vid byggtid, hemligheter bör injiceras vid driftsättningstid eller hämtas vid körning från ett gvalv. Denna separation säkerställer att artefakten (containeravbildning, kompilerat binärfil) är identisk i alla miljöer.

Miljövariabelinjektion är det vanligaste mönstret. Driftsättningssystemet hämtar hemligheter från ett gvalv och ställer in dem som miljövariabler i processen innan den startar. Containerorkestrare som Kubernetes kan hämta hemligheter via Secrets Store CSI Driver och exponera dem som miljövariabler eller monterade filer. Applikationen läser hemligheten från miljön.

Filbaserad injektion har fördelar jämfört med miljövariabler i vissa scenarier. Miljövariabler är synliga för alla underordnade processer och kan förekomma i processlistningar och kraschrapporter. Filer monterade med restriktiva behörigheter är mer kontrollerade. Secrets Store CSI Driver synkroniserar hemligheter från externa gvalv och monterar dem direkt i pods som filer.

Ett vanligt misstag är att lagra hemligheter i Kubernetes inbyggda Secret-objekt utan ytterligare skydd. Som standard är Kubernetes Secrets base64-kodade (inte krypterade) i etcd. Den föredragna metoden är att använda Secrets Store CSI Driver eller en Vault-agentsidecar för att hämta hemligheter direkt från ett externt gvalv, så att de aldrig finns kvar i Kubernetes API.

Granskning

Hemlighetsgranskning är praxis att logga och övervaka varje interaktion med hemligheter. Vem som kom åt en hemlighet, när, från vilket system, vad de gjorde och om åtkomsten var auktoriserad. Granskningsloggar är det primära mekanismen för att detektera obehörig åtkomst, uppfylla efterlevnadskrav och genomföra undersökningar efter incidenter.

HashiCorp Vault, AWS Secrets Manager och liknande verktyg genererar detaljerade granskningshändelser för varje hemlighetshämtning, skapande, rotation och radering. Dessa loggar bör skickas till en centraliserad SIEM där de kan korreleras med andra säkerhetshändelser. Ett tjänstkonto som komprometterades och används för att läsa hemligheter visas i gvalvets granskningslogg.

Effektiv granskning kräver avisering om misstänkta mönster. En tjänst som aldrig normalt kommer åt en viss hemlighet och plötsligt begär den är misstänkt. Åtkomst från en oväntad käll-IP är misstänkt. Massuthämtning av många hemligheter på kort tid tyder på rekognoscering eller dataexfiltrering. Automatiserade detektionsregler i SIEM kan hitta dessa mönster.

Granskningsspår krävs också för efterlevnad. Förordningar som PCI DSS kräver demonstration av att åtkomst till känsliga uppgifter loggas och att loggarna är skyddade mot manipulation. Att skicka gvalvgranskningsloggar till ett oföränderligt loggarkiv (S3 med Object Lock eller ett WORM-kompatibelt logghanteringssystem) säkerställer att loggar kan betraktas som bevis.

CI/CD- kontra körningshemligheter

Hemligheter förekommer i två olika sammanhang i modern programvaruleverans. CI/CD-pipelines (där de behövs under bygge, test och driftsättning) och körningsmiljöer (där de konsumeras av långlivade tjänster). Varje sammanhang har olika säkerhetskrav och riskprofiler, och de bör använda olika uppgifter.

CI/CD-hemligheter är särskilt känsliga eftersom CI/CD-systemet har privilegierad åtkomst till produktionsmiljöer och artefaktregister. Det föredragna tillvägagångssättet är att undvika att lagra långlivade CI-hemligheter alls genom att använda OIDC-federation. CI-jobbet tar emot en kortlivad token från CI-plattformen som det byter mot temporära molnuppgifter. Ingen hemlighet lagras.

Körningshemligheter konsumeras av långlivade tjänster och har olika hanteringskrav. De måste överleva omstarter och uppdateras automatiskt vid rotation. Med hjälp av ett Vault-agentsidecar-mönster, en separat process i samma pod, hämtas hemligheter från gvalvet och hålls aktuella, med nya värden skrivna till en delad volym.

Ett vanligt misstag är att använda samma uppgifter för CI/CD och körning. En driftsättningspipeline som bygger, testar och driftsätter bör använda driftsättningsomfattade uppgifter som är helt separata från de produktionsdatabas-uppgifter som används av den körande applikationen. Att blanda dem innebär att en komprometterad CI-uppgift ger direkt åtkomst till produktionsdatabasen.