Secrets-hantering och RBAC
Lär dig avancerade strategier för att hantera känsliga data och implementera rollbaserad åtkomstkontroll (RBAC) i containermiljöer.
Secrets-hantering och RBAC är en gratis lektion i DevOps-bootcamp på CoddyKit. Detta är lektion 3 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 DevOps-bootcamp, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i DevOps-bootcamp innehåller totalt 4 lektioner.
Säkra er containermiljö
Välkomna! I den här lektionen går vi igenom viktiga säkerhetsmetoder för containeriserade applikationer: hemlighetshantering och rollbaserad åtkomstkontroll (RBAC).
Dessa koncept är avgörande för att skydda känsliga data och säkerställa att endast behöriga entiteter kan utföra specifika åtgärder i era containermiljöer.

Risken med hårdkodade hemligheter
Att hårdkoda känslig information som API-nycklar, databaslösenord eller privata certifikat direkt i applikationskoden eller Dockerfiles är en stor säkerhetsrisk.
- Exponering: Alla som har åtkomst till kodarkivet eller den byggda avbilden kan enkelt se dem.
- Bristande kontroll: För att ändra en hemlighet måste ni bygga om och driftsätta hela applikationen på nytt.
- Efterlevnadsproblem: Det strider mot många bästa praxis för säkerhet och regulatoriska krav.
Miljövariabler (med försiktighet)
Ett vanligt, men inte alltid säkert, sätt att skicka hemligheter är via miljövariabler. Docker låter er skicka dem med flaggan -e, och applikationer kan läsa dem.
Miljövariabler kan dock enkelt inspekteras (t.ex. med docker inspect) och kan finnas kvar i skalthistoriken eller loggar. För verkligt känsliga data finns bättre lösningar.
Docker Secrets i praktiken
Docker Secrets gör det möjligt att lagra och överföra känsliga data till containrar på ett säkert sätt. När en hemlighet kopplas till en container monteras den som en temporär fil i /run/secrets/.
Först skapar ni en hemlighet (t.ex. echo "my_secure_pass" | docker secret create app_secret -). Därefter kan applikationen läsa 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()Översikt över Kubernetes Secrets
I likhet med Docker Secrets har Kubernetes ett eget objekt kallat "Secrets" för att lagra och hantera känslig information. Dessa hemligheter kan monteras som filer i Pods eller exponeras som miljövariabler.
Viktigt: Kubernetes Secrets kodas med base64, men krypteras inte som standard. Det innebär att de enkelt kan avkodas. För verklig kryptering vid lagring krävs ytterligare konfiguration (t.ex. KMS-integrering).
Driftsättning med K8s Secrets
Låt oss se ett exempel på hur en Kubernetes Secret definieras och sedan används i en Pod. Ni kan definiera hemligheter i YAML eller skapa dem med kommandon i kubectl.
När den har skapats kan en Pod referera till hemligheten för att montera den som en volym eller injicera dess värden 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-secretExterna hemlighetsvalv
För mycket känsliga data, eller när hemligheter hanteras i flera kluster och miljöer, erbjuder externa verktyg för hemlighetshantering avancerade funktioner som:
- Centraliserad lagring: En enda källa till sanning för alla hemligheter.
- Kryptering vid lagring och överföring: Starkare säkerhetsgarantier.
- Dynamiska hemligheter: Autogenererade autentiseringsuppgifter med kort livslängd.
- Granskning och åtkomstkontroll: Finkorniga behörigheter och omfattande loggning.
Populära alternativ är HashiCorp Vault, AWS Secrets Manager och Azure Key Vault.
Vad är RBAC?
Rollbaserad åtkomstkontroll (RBAC) är en metod för att begränsa systemåtkomst till behöriga användare. I stället för att tilldela enskilda användare behörigheter direkt grupperas behörigheterna i "roller", och användarna tilldelas sedan dessa roller.
Inom containerorkestrering säkerställer RBAC att användare, applikationer eller tjänster endast har de behörigheter som krävs för att interagera med resurser (som Pods, Deployments och Secrets).
Byggstenar i K8s RBAC
Kubernetes RBAC använder några viktiga resurskategorier:
- Role: Definierar behörigheter inom ett specifikt namnrymd (t.ex. "kan visa pods" i namnrymden "dev").
- ClusterRole: Definierar behörigheter i hela klustret (t.ex. "kan visa alla pods" eller "kan hantera noder").
- RoleBinding: Ger en användare, grupp eller tjänstekonto de behörigheter som definieras i en Role inom en namnrymd.
- ClusterRoleBinding: Ger en användare, grupp eller tjänstekonto de behörigheter som definieras i en ClusterRole i hela klustret.
RBAC-exempel: Begränsa åtkomst
Låt oss se ett exempel på hur ett specifikt tjänstekonto får behörighet att endast lista och hämta pods i en viss namnrymd. Detta tillämpar principen om minsta privilegium.
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.ioKontrollera era kunskaper
Ni har lärt er hur känsliga data skyddas och åtkomst kontrolleras. Dags för en snabb kontroll!
Sammanfattning: Säkra era appar
Bra jobbat! I den här lektionen har ni lärt er om två viktiga grundpelare inom containersäkerhet:
- Hemlighetshantering: Skydda känsliga data med Docker Secrets och Kubernetes Secrets samt förstå deras styrkor och begränsningar.
- Rollbaserad åtkomstkontroll (RBAC): Implementera finkorniga behörigheter i Kubernetes för att säkerställa principen om minsta privilegium.
Genom att behärska dessa bygger ni mer robusta och säkra containeriserade applikationer!
Lär dig DevOps-bootcamp 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
- 142
- Lektioner
- 568
Vanliga frågor
Är lektionen ”Secrets-hantering och RBAC” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen DevOps-bootcamp, inklusive ”Secrets-hantering och RBAC”, 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 DevOps-bootcamp innehåller totalt 4 lektioner.
Vad lär jag mig i ”Secrets-hantering och RBAC”?
Lär dig avancerade strategier för att hantera känsliga data och implementera rollbaserad åtkomstkontroll (RBAC) i containermiljöer. Ni övar på DevOps-bootcamp 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 DevOps-bootcamp?
Du behöver inga förkunskaper. Utbildningen i DevOps-bootcamp 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 3 av 4.
Hur lång tid tar lektionen ”Secrets-hantering och RBAC”?
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 DevOps-bootcamp-lektionen?
Ja. Varje DevOps-bootcamp-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
- Säkerhetsskanning av containeravbildningar
- Containersäkerhet under körning
- Secrets-hantering och RBAC
- Nätverkspolicyer och nätverk med minsta privilegium