Hopp til hovedinnhold

Hemmeligheter

Alle systemer har informasjon de trenger å holde hemmelig. Dette er ofte ting som passord og nøkler, men kan også være andre typer informasjon. Hvordan kan vi sørge for at hemmelighetene forblir hemmelige, og hva gjør vi hvis de mot formodning skulle lekke?

Hvordan håndtere hemmeligheter?

Plattformen tilbyr mekanismer for de vanligste scenarioene. Applikasjoner som bruker Postgres får automatisk en Cloud SQL Proxy som sørger for at tilkobling skjer kryptert og med credentials som roteres automatisk. Hvis man skulle trenge å hente ut Postgres-credentials finnes det et opplegg for det også. For OAuth får man også automatisk provisjonert (og rotert) nødvendige hemmeligheter som tilgjengeliggjøres i podene som miljøvariabler, filer eller Kubernetes secrets.

caution

Hemmeligheter for prod-systemer skal ikke under noen omstendigheter hentes ut og lagres på utsiden!

For andre typer hemmeligheter har man tilgang til Google Secrets Manager eller HashiCorp Vault for hhv GCP og on-prem. Disse gjør det mulig å oppbevare og dele hemmeligheter på en trygg måte.

Dersom man trenger å benytte hemmeligheter når man bygger på GitHub kan man bruke GitHubs opplegg. Disse vil automatisk bli tilgjengelige i workflows. Et eksempel på en slik hemmelighet er API-keyen som trengs for å deploye på nais.

Hemmeligheter i kildekode

Et av de vanligste stedene å lekke hemmeligheter er i kildekode. Hvis man ikke er oppmerksom er det fort gjort å hardkode og commit'e hemmeligheter fordi "man bare kjapt skulle teste noe", eller at man legger de i env-filer eller IDE-konfigurasjon som man glemmer å .gitignore. For å oppdage dette så tidlig som mulig lønner det seg å bruke verktøy som git-secrets og scanne repoene sine med Snyk Code.

Tips!

For å holde hemmeligheter unna lokale filer samt Git og kommandohistorikk kan man bruke kommandolinjeverktøyene gcloud eller vault.

Eksempler:

MY_PW=$(gcloud secrets versions access 1 --secret="my-password")

MY_PW=$(vault read path/to/my/password)

Hvordan håndtere lekkede hemmeligheter

Uansett hvor mange forholdsregler man tar vil det fra tid til annen skje feil eller uhell som medfører at hemmeligheter lekker. I slike situasjoner er det viktig å være "på ballen" kjapt.

  • Roter de(n) aktuelle hemmeligheten(e) så raskt som mulig.
  • Sjekk logging og overvåking for spor etter evt. kompromittering.
  • Varsle aktuelle parter ihht etatens beredskapsplaner dersom man har konkrete mistanker om at systemer er kompromittert og/eller at informasjon er på avveie.
Savner du noe?

Legg det inn selv på GitHub, si ifra i #security-champion, eller kontakt redaksjonen. Takk! 💖