Cyber Security Academy · Lektion

Valv och hemlighetslager

Centralisera hemligheter med verktyg som Vault.

Lektion 2 av 413 steg

Valv och hemlighetslager är en gratis lektion i Cyber Security Academy på CoddyKit. Detta är lektion 2 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Cyber Security Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Cyber Security Academy innehåller totalt 4 lektioner.

Vad ett hemlighetslager löser

Ett hemlighetslager (eller valv) är en centraliserad, härdad tjänst vars enda uppgift är att lagra hemligheter samt styra och granska åtkomsten till dem. Det ersätter de spridda filer och miljövariabler som orsakar hemlighetsspridning.

En bra hemlighetshanterare erbjuder fyra grundläggande funktioner:

  • Centraliserad lagring en enda tillförlitlig källa.
  • Åtkomstkontroll detaljerade policyer för vem och vad som får läsa varje hemlighet.
  • Granskningsloggning en registrering av varje åtkomst för incidenthantering.
  • Kryptering hemligheter krypteras vid lagring och under överföring.

Exempel är HashiCorp Vault, AWS Secrets Manager, Azure Key Vault och GCP Secret Manager.

Så är HashiCorp Vault strukturerat

HashiCorp Vault är en populär hemlighetshanterare med öppen källkod. Funktionerna organiseras i utbytbara secrets engines som monteras på sökvägar.

  • KV engine lagrar statiska nyckel-värde-hemligheter.
  • Database engine genererar dynamiska, kortlivade databasautentiseringsuppgifter.
  • PKI engine utfärdar TLS-certifikat vid behov.
  • Transit engine tillhandahåller kryptering som tjänst utan att exponera nycklar.

Vault används via ett HTTP-API eller CLI. Varje sökväg styrs av policyer som avgör vem som får läsa eller skriva där.

# Enable a KV v2 secrets engine at the 'secret/' path
vault secrets enable -path=secret kv-v2

# Write and read a static secret
vault kv put secret/app/db password='S3cr3t' user='app'
vault kv get secret/app/db

Modellen för försegling och öppning

Vault skyddar sina data med en mekanism för försegling och öppning. När Vault startar är det förseglat – det vet var de krypterade data finns, men kan inte dekryptera dem.

Huvudnyckeln som dekrypterar lagringen är i sin tur krypterad med en öppningsnyckel. Med hjälp av Shamir's Secret Sharing delas öppningsnyckeln upp i flera delar som distribueras till olika operatörer.

Ett konfigurerbart tröskelvärde, till exempel 3 av 5 delar, måste tillhandahållas för att återskapa nyckeln och öppna Vault. Ingen enskild person kan öppna det ensam, vilket skyddar mot insiderkompromettering.

# Initialize Vault: 5 key shares, threshold of 3 to unseal
vault operator init -key-shares=5 -key-threshold=3

# Each operator supplies one shard until threshold is met
vault operator unseal <shard-1>
vault operator unseal <shard-2>
vault operator unseal <shard-3>

Autentisering: Vem är du?

Innan en klient får läsa en hemlighet måste den autentisera sig för att få en token. Vault stöder många autentiseringsmetoder som är anpassade till olika identiteter:

  • AppRole för applikationer och CI-system (role ID + secret ID).
  • Kubernetes använder poddens tjänstekontotoken.
  • AWS/GCP/Azure IAM litar på molnplattformens identitet.
  • OIDC/LDAP för mänskliga användare via SSO.

Den centrala principen är att identiteten kommer från plattformen, inte från ett långlivat lösenord. En Kubernetes-pod bevisar vem den är med sitt eget tjänstekontotoken – ingen bootstrap-hemlighet som kan läcka.

# App authenticates via AppRole to receive a token
vault write auth/approle/login \
  role_id="db-app-role" \
  secret_id="$WRAPPED_SECRET_ID"
# Response includes client_token used for subsequent reads

Auktorisering med policyer

Autentisering bevisar identiteten; policyer avgör vad identiteten får göra. Vault-policyer skrivs i HCL och följer principen om minsta behörighet – de beviljar endast de sökvägar och funktioner som en arbetslast behöver.

Den här policyn låter en tjänst läsa endast sin egen databashemlighet och inget annat:

Funktionerna motsvarar API-verb: read, create, update, delete och list. Neka som standard och bevilja uttryckligen.

# policy: billing-app.hcl
path "secret/data/billing/*" {
  capabilities = ["read"]
}
path "database/creds/billing-readonly" {
  capabilities = ["read"]
}
# everything else is implicitly denied

Molnnativa hemlighetslager

Om ni kör i ett enda moln tar leverantörens hanterade lager bort det operativa arbetet – ingen försegling eller öppning och inga servrar att patcha:

  • AWS Secrets Manager integreras med IAM och stöder inbyggda Lambdas för rotation.
  • Azure Key Vault lagrar hemligheter, nycklar och certifikat med RBAC.
  • GCP Secret Manager erbjuder versionshanterade hemligheter som skyddas av IAM-bindningar.

Åtkomsten styrs av molnets IAM, så en arbetslast läser en hemlighet med sin befintliga roll – inget separat lösenord behövs. Nackdelen är leverantörsberoende och svagare stöd för flera moln jämfört med Vault.

# Read a secret from AWS Secrets Manager (workload uses its IAM role)
aws secretsmanager get-secret-value \
  --secret-id prod/billing/db \
  --query SecretString --output text

# GCP equivalent
gcloud secrets versions access latest --secret=billing-db

Kryptering som tjänst

Ibland vill ni inte lagra en hemlighet alls – ni vill kryptera applikationsdata utan att applikationen någonsin har krypteringsnyckeln. Vaults Transit engine gör precis detta.

Applikationen skickar klartext till Vault, får tillbaka chiffertext och ser aldrig nyckeln. Dekryptering fungerar på samma sätt. Detta kallas kryptering som tjänst.

Fördelen är att nycklarna endast finns i Vault, kan roteras centralt och att en komprometterad applikation inte kan läcka en nyckel som den aldrig har haft.

# Encrypt data without the app ever seeing the key
vault write transit/encrypt/orders-key \
  plaintext=$(echo -n 'card=4111...' | base64)
# returns: ciphertext=vault:v1:abc123...

# Decrypt later
vault write transit/decrypt/orders-key ciphertext='vault:v1:abc123...'

Injicera hemligheter i arbetslaster

Ett valv är bara användbart om applikationer kan använda hemligheter utan att hårdkoda sökvägen eller token. Vanliga mönster för injicering är:

  • Sidecar/agent en Vault Agent körs tillsammans med applikationen, autentiserar sig och skriver hemligheter till en delad minnesbaserad volym.
  • CSI-drivrutin Kubernetes monterar hemligheter som filer via Secrets Store CSI driver.
  • Hämtning via SDK applikationen anropar valvets API direkt vid uppstart.

Föredra montering i ett minnesbaserat filsystem (tmpfs) framför miljövariabler och undvik att skriva hemligheter till disk där de kan bli kvar.

# Vault Agent template renders a secret to an in-memory file
template {
  contents = "DB_PASS={{ with secret \"secret/app/db\" }}{{ .Data.data.password }}{{ end }}"
  destination = "/run/secrets/db.env"
}

Granskningsloggning och ansvarsskyldighet

Varje läs-, skriv- och autentiseringshändelse i ett valv bör registreras i en granskningslogg. Det är detta som gör hanteringen av hemligheter spårbar och försvarbar under en incident.

Granskningsloggar besvarar de kritiska frågorna: vem som fick åtkomst till vilken hemlighet, när och från var. Vault hashar känsliga värden i loggarna så att själva loggen inte läcker hemligheter.

Skicka granskningsloggarna till ett manipulationssäkert, separat system (SIEM), så att en angripare som tar över valvets värd inte också kan radera bevisen på vad de fick åtkomst till.

# Enable a file audit device (HMAC-hashes secret values)
vault audit enable file file_path=/var/log/vault/audit.log

# Forward to a SIEM/syslog endpoint for tamper resistance
vault audit enable syslog tag="vault" facility="AUTH"

Skydda själva valvet

Ett centraliserat lager koncentrerar risken: om valvet faller, faller allt. Härda det som er mest kritiska tillgång:

  • Kör med TLS på alla endpoints; exponera aldrig API:t okrypterat.
  • Håll valvet i ett privat nätverk bakom strikta brandväggsregler.
  • Aktivera auto-unseal via en moln-KMS för att undvika manuell hantering av nyckeldelar, men skydda KMS-nyckeln noggrant.
  • Använd korta token-TTL:er och förnybara leases så att stulna tokens snabbt löper ut.
  • Installera uppdateringar omgående och övervaka granskningsloggar efter avvikelser.

Valvet byter ut många felpunkter mot en enda som är extremt väl skyddad.

Välja rätt lagringslösning

Det finns inget verktyg som är bäst i alla situationer; anpassa lagringen efter er miljö:

  • Ett enda moln och enkla behov använd den inbyggda hanteraren (AWS/Azure/GCP) för minsta möjliga driftsarbete.
  • Multimoln eller on-prem HashiCorp Vault ger ett konsekvent och portabelt abstraktionslager.
  • Behov av dynamiska hemligheter eller kryptering som tjänst Vaults engines erbjuder mest funktionalitet.
  • Kubernetes-tung miljö kombinera ett lager med CSI-drivrutinen eller en operator som External Secrets.

Oavsett vad ni väljer är målet detsamma: en enda granskad och åtkomststyrd sanningskälla som ersätter utspridda värden i klartext.

Snabbtest

Testa er förståelse av Vaults skyddsmodell.

Sammanfattning: valv och hemlighetslager

Ni har lärt er hur utspridda hemligheter kan ersättas med ett centraliserat och granskat lager.

  • Ett hemlighetslager tillhandahåller centraliserad lagring, åtkomstkontroll, granskningsloggning och kryptering.
  • HashiCorp Vault använder utbytbara secrets engines och en seal/unseal-modell som skyddas av Shamir's Secret Sharing.
  • Autentiseringsmetoder härleder identitet från plattformen (Kubernetes, IAM, AppRole), och policyer upprätthåller minsta möjliga behörighet.
  • Molnnativa lager (AWS, Azure, GCP) byter portabilitet mot mindre driftsarbete.
  • Transit engine erbjuder kryptering som tjänst, så att appar aldrig behöver hantera nycklar.
  • Injicera hemligheter via agenter eller CSI i minnesbaserad lagring, logga varje åtkomst och härda valvet som er mest kritiska tillgång.

Därefter gör vi hemligheter ännu säkrare genom att generera dem dynamiskt och ge dem kort livslängd.

Gratis att börja

Lär dig Cyber Security Academy med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
76
Lektioner
303

Vanliga frågor

Är lektionen ”Valv och hemlighetslager” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Cyber Security Academy, inklusive ”Valv och hemlighetslager”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Cyber Security Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Valv och hemlighetslager”?

Centralisera hemligheter med verktyg som Vault. Ni övar på Cyber Security Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Cyber Security Academy?

Du behöver inga förkunskaper. Utbildningen i Cyber Security Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.

Hur lång tid tar lektionen ”Valv och hemlighetslager”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Cyber Security Academy-lektionen?

Ja. Varje Cyber Security Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Problemet med hemligheter på drift
  2. Valv och hemlighetslager
  3. Dynamiska hemligheter och leasing
  4. Nyckelrotation och detektering
← Tillbaka till Cyber Security Academy