Grundlæggende Docker og DevOps · Lektion

Håndtering af Secrets og RBAC

Lær avancerede strategier til håndtering af følsomme data og implementering af rollebaseret adgangskontrol (RBAC) i containermiljøer.

Lektion 3 af 412 trin

Håndtering af Secrets og RBAC er en gratis Grundlæggende Docker og DevOps-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Grundlæggende Docker og DevOps, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Grundlæggende Docker og DevOps-kurset indeholder 4 lektioner i alt.

Sikr dit containermiljø

Velkommen! I denne lektion gennemgår vi vigtige sikkerhedsmetoder for containeriserede applikationer: håndtering af hemmeligheder og rollebaseret adgangskontrol (RBAC).

Disse koncepter er afgørende for at beskytte følsomme data og sikre, at kun autoriserede enheder kan udføre bestemte handlinger i dine containermiljøer.

Håndtering af Secrets og RBAC — illustration 1

Faren ved at hardkode hemmeligheder

Det er en stor sikkerhedsrisiko at indlejre følsomme oplysninger som API-nøgler, databaseadgangskoder eller private certifikater direkte i din applikationskode eller i Dockerfiler.

  • Eksponering: Alle, der har adgang til dit kodelager eller dit byggede image, kan nemt se dem.
  • Manglende kontrol: Hvis en hemmelighed skal ændres, kræver det, at hele applikationen bygges og udrulles igen.
  • Problemer med overholdelse: Det overtræder mange bedste praksisser for sikkerhed og lovmæssige krav.

Miljøvariabler (med forsigtighed)

En almindelig, men ikke altid sikker, måde at videregive hemmeligheder på er via miljøvariabler. Docker lader dig videregive dem med flaget -e, og applikationer kan læse dem.

Miljøvariabler kan dog nemt inspiceres (f.eks. med docker inspect) og kan blive gemt i shellhistorikken eller i logge. Til virkelig følsomme data findes der bedre løsninger.

Docker Secrets i praksis

Docker Secrets lader dig gemme og overføre følsomme data sikkert til containere. Når en hemmelighed knyttes til en container, monteres den som en midlertidig fil i /run/secrets/.

Først opretter du en hemmelighed (f.eks. echo "my_secure_pass" | docker secret create app_secret -). Derefter kan din applikation læse den:

import os

def main():
    secret_path = "/run/secrets/app_secret"
    try:
        with open(secret_path, 'r') as f:
            secret_value = f.read().strip()
        print(f"Secret read: {secret_value}")
    except FileNotFoundError:
        print("Secret file not found. Make sure it's mounted.")
    except Exception as e:
        print(f"An error occurred: {e}")

if __name__ == "__main__":
    main()

Oversigt over Kubernetes Secrets

Ligesom Docker Secrets har Kubernetes sit eget objekt kaldet "Secrets" til lagring og håndtering af følsomme oplysninger. Disse hemmeligheder kan monteres som filer i Pods eller eksponeres som miljøvariabler.

Vigtigt: Kubernetes Secrets er som standard kodet med base64, ikke krypteret. Det betyder, at de nemt kan afkodes. Hvis data skal være krypteret, når de er gemt, skal du bruge yderligere konfiguration (f.eks. KMS-integration).

Udrulning med K8s Secrets

Lad os se et eksempel på, hvordan en Kubernetes Secret defineres og derefter bruges i en Pod. Du kan definere hemmeligheder i YAML eller oprette dem via kubectl-kommandoer.

Når den er oprettet, kan en Pod referere til hemmeligheden for at montere den som en diskenhed eller indsætte dens værdier som miljøvariabler.

apiVersion: v1
kind: Pod
metadata:
  name: my-secret-pod
spec:
  containers:
  - name: my-app-container
    image: busybox
    command: ["sh", "-c", "echo Username: $(cat /etc/secrets/username) Password: $(cat /etc/secrets/password)"]
    volumeMounts:
    - name: secret-volume
      mountPath: "/etc/secrets"
      readOnly: true
  volumes:
  - name: secret-volume
    secret:
      secretName: my-k8s-secret

Eksterne gemmesteder til hemmeligheder

Til meget følsomme data eller ved håndtering af hemmeligheder på tværs af flere klynger og miljøer tilbyder eksterne værktøjer til håndtering af hemmeligheder avancerede funktioner som:

  • Centraliseret lagring: Én samlet sandhedskilde for alle hemmeligheder.
  • Kryptering under lagring og overførsel: Stærkere sikkerhedsgarantier.
  • Dynamiske hemmeligheder: Automatisk genererede legitimationsoplysninger med kort levetid.
  • Revision og adgangskontrol: Finkornede tilladelser og omfattende logning.

Populære muligheder omfatter HashiCorp Vault, AWS Secrets Manager og Azure Key Vault.

Hvad er RBAC?

Rollebaseret adgangskontrol (RBAC) er en metode til at begrænse systemadgang til autoriserede brugere. I stedet for at tildele tilladelser direkte til individuelle brugere grupperes tilladelserne i "roller", og derefter tildeles brugerne disse roller.

I containerorkestrering sikrer RBAC, at brugere, applikationer eller tjenester kun har de nødvendige tilladelser til at interagere med ressourcer (f.eks. Pods, udrulninger og Secrets).

Grundelementer i K8s RBAC

Kubernetes RBAC bruger nogle få centrale ressourcetyper:

  • Role: Definerer tilladelser inden for et bestemt navneområde (f.eks. "kan se pods" i navneområdet "dev").
  • ClusterRole: Definerer tilladelser på tværs af hele klyngen (f.eks. "kan se alle pods" eller "kan administrere noder").
  • RoleBinding: Tildeler de tilladelser, der er defineret i en Role, til en bruger, gruppe eller tjenestekonto inden for et navneområde.
  • ClusterRoleBinding: Tildeler de tilladelser, der er defineret i en ClusterRole, til en bruger, gruppe eller tjenestekonto på tværs af hele klyngen.

RBAC-eksempel: Begrænsning af adgang

Lad os se et eksempel på, hvordan en bestemt tjenestekonto kun får tilladelse til at opliste og hente pods i et bestemt navneområde. Det håndhæver princippet om mindst mulige rettigheder.

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: default
  name: pod-reader
rules:
- apiGroups: [""] # "" indicates the core API group
  resources: ["pods"]
  verbs: ["get", "list", "watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: read-pods-binding
  namespace: default
subjects:
- kind: ServiceAccount
  name: pod-viewer-sa # Name of the ServiceAccount to bind to
  namespace: default
roleRef:
  kind: Role
  name: pod-reader
  apiGroup: rbac.authorization.k8s.io

Kontroller din forståelse

Du har lært om sikring af følsomme data og kontrol af adgang. Tid til en hurtig kontrol!

Opsummering: Sikr dine apps

Godt klaret! I denne lektion har du lært om to afgørende søjler inden for containersikkerhed:

  • Håndtering af hemmeligheder: Beskyttelse af følsomme data ved hjælp af Docker Secrets og Kubernetes Secrets samt forståelse af deres styrker og begrænsninger.
  • Rollebaseret adgangskontrol (RBAC): Implementering af finkornede tilladelser i Kubernetes for at sikre princippet om mindst mulige rettigheder.

Ved at mestre disse områder bygger du mere robuste og sikre containeriserede applikationer!

Gratis at komme i gang

Lær Grundlæggende Docker og DevOps med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
12
Lektioner
48

Ofte stillede spørgsmål

Er lektionen “Håndtering af Secrets og RBAC” gratis?

Ja — alle 3 lektioner i læringssporet Grundlæggende Docker og DevOps, inklusive “Håndtering af Secrets og RBAC”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Grundlæggende Docker og DevOps-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Håndtering af Secrets og RBAC”?

Lær avancerede strategier til håndtering af følsomme data og implementering af rollebaseret adgangskontrol (RBAC) i containermiljøer. Du øver dig i Grundlæggende Docker og DevOps med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Grundlæggende Docker og DevOps?

Der kræves ingen tidligere erfaring. Grundlæggende Docker og DevOps på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.

Hvor lang tid tager lektionen “Håndtering af Secrets og RBAC”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Grundlæggende Docker og DevOps-lektion?

Ja. Alle Grundlæggende Docker og DevOps-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Sikkerhedsscanning af containerimages
  2. Containersikkerhed under kørsel
  3. Håndtering af Secrets og RBAC
  4. Netværkspolitikker og netværk med mindst mulige privilegier
← Tilbage til Grundlæggende Docker og DevOps