Bedste fremgangsmåder til sikker opbevaring af API-nøgler

Tidligere har jeg set mange mennesker bruge Git-arkiver til at gemme følsomme oplysninger relateret til deres projekter.

På det seneste har jeg set nogle mennesker meddele, at de gemmer API-nøgler i deres private GitHub-arkiver. Jeg skriver denne artikel, fordi folk skal forstå risikoen ved at gemme API-nøgler med din kode.

Denne artikel er ikke beregnet til at være en permanent løsning på de problemer, du måtte have med lagring af API-nøgler. I stedet er det min egen analyse af problemet og mine forslag til, hvordan jeg løser det.

Så hvad er nøjagtigt problemet med at gemme følsomme oplysninger i nærheden af ​​din kode i et Git-arkiv?

Hvorfor skal du ikke gemme API-nøgler på Git-arkiver

Opbevaring af API-nøgler eller andre følsomme oplysninger i et gitarkiv er noget, der skal undgås for enhver pris. Selvom arkivet er privat, skal du ikke se det som et sikkert sted at gemme følsomme oplysninger.

Lad os starte med at se på, hvorfor det er en dårlig idé at gemme API-nøgler på offentligegit arkiver.

Af natur gitkan enhver få adgang til et offentligt arkiv.

Med andre ord kan enhver med en internetforbindelse få adgang til indholdet af et offentligt gitarkiv. Ikke kun det, men de kan også gennemse al koden inde i arkivet og muligvis endda køre den. Hvis du gemmer en API-nøgle i et offentligt lager, offentliggør du det åbent, så alle kan se det.

En nylig søgning efter client_secret på GitHub afslørede, at der er mere end en 30.000 forpligtelser, der potentielt udsætter en API-nøgle og hemmelighed. I nogle tilfælde kopierer og indsætter du kun koden for straks at få adgang til API'en.

Dette problem bliver så vigtigt, at nogle virksomheder investerer i ressourcer for at sikre, at der ikke er lækkede API-nøgler og hemmeligheder.

Sidste år begyndte Slack at søge efter eksponerede API-tokens og ugyldiggøre dem proaktivt. Denne handling forhindrer ondsindet adgang til Slacks konti, men kan umuligt finde alle de lækkede tokens.

Så dette sker på offentlige Git-arkiver. Hvad med de private ? Hvorfor er det et problem?

Private Git-arkiver hostet på tjenester som GitHub, GitLab og Bitbucket er udsat for en anden type risiko. Når du integrerer en tredjepartsapplikation med en af ​​de nævnte tjenester, åbner du muligvis dine private arkiver for disse tredjeparter. Disse applikationer vil være i stand til at få adgang til dine private arkiver og læse oplysningerne indeholdt i.

Mens det alene ikke skaber en risiko, kan du forestille dig, om en af ​​disse applikationer bliver sårbar over for angribere. Ved at få uautoriseret adgang til en af ​​disse tredjepartsapplikationer kan angribere få adgang til dine følsomme data, herunder API-nøgler og hemmeligheder.

Så hvor skal API-nøgler opbevares?

Der er mange alternativer til sikker opbevaring af API-nøgler og hemmeligheder. Nogle af dem lader dig bruge dit Git-arkiv og kryptere de følsomme data. Andre værktøjer er mere sofistikerede og dekrypterer følsomme oplysninger som en del af en implementeringsworkflow. Lad os se på nogle af de tilgængelige løsninger.

git-remote-gcrypt

Den første løsning giver dig mulighed for at kryptere et helt Git-arkiv. git-remote-gcrypt gør det ved at tilføje funktionalitet til Git-fjernhjælpere, så et nyt krypteret transportlag bliver tilgængeligt. Brugere skal kun oprette en ny krypteret fjernbetjening og skubbe kode ind i den.

Læs videre, hvis du leder efter en mere finkornet løsning, der giver dig mulighed for at kryptere individuelle filer.

git-secret

git-secreter et værktøj, der fungerer på din lokale maskine og krypterer specifikke filer, før du skubber dem til dit arkiv. Bag kulisserne git-secreter der et shell-script, der bruger GNU Privacy Guard (GPG) til at kryptere og dekryptere filer, der kan have følsomme oplysninger.

git-crypt

En anden løsning er git-crypt. Det ligner meget git-hemmelighed i den måde, det fungerer på, men det har nogle interessante forskelle.

Den første ting at bemærke om git-crypter, at det er en binær eksekverbar og ikke et shell-script, som git-hemmelighed er. At være en binær eksekverbar betyder, at for at bruge den skal du først kompilere den, eller du skal finde en binær distribution til din maskine.

Hvis du bruger en Mac, er du heldig, fordi HomeBrew tilbyder en git-cryptklar til installation-pakke. Alt hvad du skal gøre er at køre bryginstallation git-cryptpå en terminal.

Sort kasse

BlackBox er et værktøj oprettet af Stack Overflow. Dette er virksomheden bag populære Q&A samfund som Stack Overflow selv, Serverfejl og Superbruger. BlackBox er et robust værktøj, da det fungerer med Git såvel som andre versionskontrolsystemer som Mercurial og Subversion.

Det understøtter også kryptering af små strenge og ikke kun hele filer. Det gør det, når du arbejder med Puppet og bruger Puppet's Hiera, et opslagsværktøj til nøgleværdi til konfigurationsdata.

At have muligheden for at kryptere og dekryptere individuelle strenge gør BlackBox til en god løsning til sikring af API-nøgler og hemmeligheder.

Heroku-konfiguration og Config Vars

Hvis du arbejder med Heroku, skal du ikke gemme følsomme oplysninger såsom API-nøgler og hemmeligheder i dine Git-arkiver. Heroku tilbyder en løsning, der giver dig mulighed for at indstille konfigurationsvariabler.

Din applikation kan derefter få adgang til indholdet af disse konfigurationsvariabler under runtime ved at få adgang til de tilsvarende miljøvariabler. Selvom værdierne ikke er krypteret, giver denne løsning dig mulighed for at undgå at bruge dit Git-lager til lagring af API-nøgler.

Dokku, en Open Source-løsning som Heroku, tilbyder de samme muligheder.

Docker-hemmeligheder

I slutningen af ​​spektret af mulige løsninger findes Docker-hemmeligheder. Denne løsning blev introduceret af Docker i februar 2017. Den har fået popularitet lige siden.

Docker-hemmeligheder giver dig mulighed for at definere krypterede variabler og gøre dem tilgængelige for specifikke tjenester under løbetid. Hemmeligheder krypteres både under transit og i hvile.

Denne tilgang gør Docker-hemmeligheder til den perfekte løsning til opbevaring og brug af API-nøgler og hemmeligheder på en sikker og krypteret måde.

Resumé

Nu skal du være opmærksom på farerne ved at gemme følsomme oplysninger som API-nøgler og hemmeligheder på offentlige og private Git-arkiver.

At forstå de mulige måder, hvorpå dine arkiver kan blive eksponeret, er nøglen til at vurdere og afbøde de risici, der er forbundet med informationslækager.

Denne artikel foreslår også et par forskellige løsninger, der giver dig mulighed for at kryptere API-nøgler og hemmeligheder, så du sikkert kan bruge dine kodeopbevaringssteder.

Jeg er sikker på, at der er flere løsninger derude, der kan hjælpe dig med at opnå de samme resultater.