Kubernetes Secrets Management

Kubernetes Secrets Management
Kubernetes -miljøet, som mange andre datasystemer, nødvendiggjør bruk av sensitive data. Hemmeligheter forholder seg til en gruppes sensitive data (for eksempel passord, SSH -nøkler og sikkerhetstokener). Vi ser på mulighetene til Kubernetes og andre hemmelige styringssystemer i dette innlegget og hvordan du kan lage og administrere hemmeligheter i Kubernetes -miljøet ditt.

Hva er hemmeligheter i Kubernetes?

En hemmelighet er et stykke privat informasjon som et passord, nøkkel eller token. Slik informasjon kan også legges ut i et containerbilde eller en POD -spesifikasjon. Hvis du bruker en hemmelighet, trenger du ikke ta med hemmelige data i applikasjonskoden din.

Fordi hemmeligheter kan installeres uavhengig av belgene som bruker dem, kan det være mye mindre trussel om hemmeligheten (og dens informasjon) som blir oppdaget i arbeidsflyten for å generere, undersøke og endre pods. Kubernetes og appene som kjører for klyngen din bruker også hemmeligheter og teknikker for å ta større forholdsregler, inkludert å skrive konfidensiell informasjon til ikke -flyktig lagring.

Typer hemmeligheter

Kubernetes gir mange innebygde typer for noen felles bruksscenarier. Valideringene oppnådd og begrensningene som håndheves gjennom Kubernetes er forskjellige mellom disse kategoriene.

Ugjennomsiktige hemmeligheter

Standard hemmelig type brukes når det ikke er noen hemmelig konfigurasjonsfil. Når du oppretter en hemmelighet av Kubectl, bruk den generiske underkommandoen for å spesifisere denne typen.

Tjenestekonto -tokenhemmeligheter

Denne hemmelige lagrer et symbol med en tjenestekonto. Du må stille Kubernetes.IO/Service-Account.Navn merknad til et gjeldende tjenestekontonavn under bruken av denne hemmelige typen.

Docker Config Secrets

Denne typen er for lagring av en serialisert /.DockerCFG -fil. Det er det tradisjonelle formatet for å konfigurere Docker -kommandolinjen. Først må du bekrefte at feltet med hemmelige data har en.dockercfg -nøkkel, og verdien er innholdet i a /.dockercfg -fil kodet i base64 -format når du bruker denne hemmelige typen.

Grunnleggende autentiseringshemmelighet

Denne typen brukes til lagring av grunnleggende godkjenning av godkjenning. Når du bruker denne hemmelige typen, må en av de to nøklene (brukernavn og passord) være til stede i hemmelighetens datafelt:

Disse nøklene verdier er begge base64 -kodede strenger. Du kan bruke StringData for Secret Generation hvis du vil levere klart tekstinnhold.

SSH -autentiseringshemmeligheter

Dette brukes til å håndtere SSHs autentiseringsdata. SSH-legitimasjonen må aksepteres som et SSH-PrivateKey Key-Value Pair With Ininside Data (eller StringData) -muligheten mens du håndhever denne hemmelige typen.

TLS -hemmeligheter

Kubernetes har en innebygd hemmelig type Kubernetes.IO/TLS som kan lagre et sertifikat og dets tilsvarende nøkkel, som ofte brukes til TLS. Denne informasjonen brukes med TLS -oppsigelsen. Men det kan i tillegg brukes med forskjellige eiendeler eller uten forsinkelse gjennom arbeidsmengde. Når du pålegger denne typen hemmeligheter, TLS.Nøkkel og TLS.CRT -nøkler skal leveres innenfor dataene (eller StringData) -området for den hemmelige konfigurasjonen, selv om API -serveren nå ikke lenger bare undersøker verdiene for hver tast.

Bootstrap token -hemmeligheter

Denne formen for hemmelighet kan opprettes ved å gå til Bootstrap.Kubernetes.io/token og velge den hemmelige typen. Denne typen hemmeligheter har som mål å lagre symboler. Disse symbolene brukes først og fremst under Node Bootstrap -prosedyren. Det holder oversikt over signaturtokensene for kjente konfigurasjoner.

Et bootstrap-token-hemmeligheter opprettes ofte under Kube-System-navneområdet og kalt Bootstrap-Token-Token-ID>, hvor token-id> er en seks-karakterstreng som representerer token-ID.

Hvordan lage en hemmelighet i Kubernetes?

En hemmelighet kan brukes til å holde brukeropplysninger. Pods bruker disse legitimasjonene for å få tilgang til en database. En ID (brukernavn) pluss passord, for eksempel utgjør en databasetilkoblingsstreng. Du kan lagre brukernavnet i./Brukernavn.txt og passordet i./passord.txt på din lokale PC.

$ ekko -n 'Alex'> ./Brukernavn.tekst
$ ekko -n '01TRFG02'> ./passord.tekst

Kode nedenfor viser hvordan du kan opprette en hemmelighet med Create -kommandoen.

$ KUBECTL Lag hemmelig generisk hemmelig-mbps \
--Fra-fil =./Brukernavn.tekst \
--Fra-fil =./passord.tekst

Nedenfor opprettes hemmeligheten (kalt Secret-Mbps).

Som nevnt ovenfor, sikrer -N -parameteren i kommandoene at det ikke er noe ekstra Newline -tegn på slutten av innholdet i utdatafilene. Dette er viktig fordi den ekstra nye linjekarakteren er kodet når Kubectl leser en fil og konverterer den til en base64 -streng.

Hvordan redigere en hemmelighet?

Følgende kommando brukes til å gjøre endringer i en eksisterende hemmelighet:

$ KUBECTL Rediger hemmeligheter Secret-Mbps

Dette vil åpne redigeringsprogrammet med standardkonfigurasjonen. Det vil tillate deg å justere datafeltets Base64 -kodede hemmelige verdier:

Hvordan sjekke om en hemmelighet eksisterer?

For å bekrefte en hemmelighet, skriver du HEMMITE -kommandoen.

$ kubectl få hemmeligheter

Det vedlagte skjermbildet viser detaljene i den spesifiserte hemmeligheten.

Hvordan avkode hemmeligheten?

For å avkode hemmeligheten, kan du bruke den nedenfor-nevnte kommandoen.

$ kubectl få hemmelig hemmelig -mbps -o jsonpath = '.data'

Nedenfor kan du se output -skjermbildet.

Du kan nå avkode passorddataene som følger:

$ ECHO 'MWYYZDFLMMU2N2RM' | Base64 -Decode

Her er resultatet.

Du kan bruke kommandoen (som du kan se nedenfor) hvis du ikke vil lagre en hemmelig kodet verdi i skallhistorikken din:

$ kubectl få hemmelig hemmelig -mbps -o jsonpath = '.data.passord '| Base64 -dekode

Denne kommandoen vil gi de samme resultatene som den forrige.

Hvordan slette hemmeligheten?

For å slette hemmeligheten, kan du bruke Delete -kommandoen og nevne det nøyaktige navnet på hemmeligheten.

$ kubectl slett hemmelig hemmelig-mbps

Her kan du observere at den spesifiserte hemmeligheten blir slettet med hell.

Konklusjon:

Hemmeligheter er digitale identiteter som lar brukere verifisere identiteten og få tilgang til privilegerte kontoer, apper og tjenester ved å autentisere identiteten deres. Vi har nevnt Kubernetes Secrets Management i detalj i denne artikkelen.