Gestione dei Secret e RBAC
Scopra strategie avanzate per gestire i dati sensibili e implementare il Role-Based Access Control (RBAC) negli ambienti containerizzati.
Gestione dei Secret e RBAC è una lezione DevOps Bootcamp gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento DevOps Bootcamp, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso DevOps Bootcamp include 4 lezioni in totale.
Proteggere l'ambiente dei container
Benvenuto! In questa lezione approfondiremo alcune pratiche di sicurezza fondamentali per le applicazioni containerizzate: gestione dei secrets e controllo degli accessi basato sui ruoli (RBAC).
Questi concetti sono fondamentali per proteggere i dati sensibili e garantire che solo le entità autorizzate possano eseguire azioni specifiche negli ambienti dei container.

Il pericolo dei secrets hardcoded
Inserire direttamente nel codice dell'applicazione o nei Dockerfile informazioni sensibili come chiavi API, password di database o certificati privati rappresenta un grave rischio per la sicurezza.
- Esposizione: Chiunque abbia accesso al repository del codice o all'immagine compilata può visualizzarle facilmente.
- Mancanza di controllo: La modifica di un secret richiede la ricompilazione e la ridistribuzione dell'intera applicazione.
- Problemi di conformità: Viola molte best practice di sicurezza e numerosi requisiti normativi.
Variabili d'ambiente (con cautela)
Un modo comune, ma non sempre sicuro, per passare i secrets consiste nell'utilizzare le variabili d'ambiente. Docker consente di passarle con il flag -e e le applicazioni possono leggerle.
Tuttavia, le variabili d'ambiente possono essere ispezionate facilmente (ad esempio con docker inspect) e potrebbero rimanere nella cronologia della shell o nei log. Per i dati realmente sensibili esistono soluzioni migliori.
Docker Secrets in azione
Docker Secrets consente di archiviare e trasmettere in modo sicuro i dati sensibili ai container. Quando un secret viene collegato a un container, viene montato come file temporaneo in /run/secrets/.
Per prima cosa, si crea un secret (ad esempio, echo "my_secure_pass" | docker secret create app_secret -). In seguito, l'applicazione può leggerlo:
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()Panoramica dei Kubernetes Secrets
Analogamente ai Docker Secrets, Kubernetes dispone di un proprio oggetto chiamato "Secrets" per archiviare e gestire le informazioni sensibili. Questi secrets possono essere montati come file nei Pod o esposti come variabili d'ambiente.
Importante: I Kubernetes Secrets sono codificati in base64, ma per impostazione predefinita non sono crittografati. Ciò significa che possono essere facilmente decodificati. Per ottenere una vera crittografia dei dati a riposo, è necessaria una configurazione aggiuntiva (ad esempio, l'integrazione con KMS).
Distribuzione con i K8s Secrets
Vediamo un esempio di definizione di un Kubernetes Secret e del suo utilizzo all'interno di un Pod. È possibile definire i secrets in YAML o crearli tramite i comandi kubectl.
Una volta creato, un Pod può fare riferimento al secret per montarlo come volume o iniettarne i valori come variabili d'ambiente.
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-secretVault esterni per i secrets
Per i dati altamente sensibili o quando si gestiscono secrets in più cluster e ambienti, gli strumenti esterni di gestione dei secrets offrono funzionalità avanzate come:
- Archiviazione centralizzata: Un'unica fonte autorevole per tutti i secrets.
- Crittografia dei dati a riposo e in transito: Garanzie di sicurezza più solide.
- Secrets dinamici: Credenziali generate automaticamente e con durata limitata.
- Audit e controllo degli accessi: Autorizzazioni granulari e registrazione completa degli eventi.
Tra le opzioni più diffuse figurano HashiCorp Vault, AWS Secrets Manager e Azure Key Vault.
Che cos'è l'RBAC?
Il controllo degli accessi basato sui ruoli (RBAC) è un metodo per limitare l'accesso al sistema agli utenti autorizzati. Anziché assegnare i permessi direttamente ai singoli utenti, i permessi vengono raggruppati in "ruoli" e gli utenti vengono quindi assegnati a tali ruoli.
Nel coordinamento dei container, l'RBAC garantisce che utenti, applicazioni o servizi dispongano solo dei permessi necessari per interagire con le risorse (come Pod, Deployment e Secrets).
Elementi costitutivi dell'RBAC in K8s
L'RBAC di Kubernetes utilizza alcuni tipi di risorse fondamentali:
- Role: Definisce i permessi all'interno di uno specifico namespace (ad esempio, "può visualizzare i pod" nel namespace "dev").
- ClusterRole: Definisce i permessi nell'intero cluster (ad esempio, "può visualizzare tutti i pod" o "può gestire i nodi").
- RoleBinding: Concede i permessi definiti in un Role a un utente, un gruppo o un account di servizio all'interno di un namespace.
- ClusterRoleBinding: Concede i permessi definiti in un ClusterRole a un utente, un gruppo o un account di servizio nell'intero cluster.
Esempio di RBAC: limitare l'accesso
Vediamo un esempio di assegnazione a uno specifico account di servizio del permesso di elencare e recuperare esclusivamente i pod presenti in un determinato namespace. In questo modo si applica il principio del privilegio minimo.
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.ioVerifichi la Sua comprensione
Ha appreso come proteggere i dati sensibili e controllare gli accessi. È il momento di una rapida verifica!
Riepilogo: proteggere le applicazioni
Ottimo lavoro! In questa lezione ha appreso due pilastri fondamentali della sicurezza dei container:
- Gestione dei secrets: Proteggere i dati sensibili utilizzando Docker Secrets e Kubernetes Secrets, comprendendone punti di forza e limitazioni.
- Controllo degli accessi basato sui ruoli (RBAC): Implementare autorizzazioni granulari in Kubernetes per garantire il rispetto del principio del privilegio minimo.
Applicando queste conoscenze, sta creando applicazioni containerizzate più solide e sicure!
Domande Frequenti
La lezione «Gestione dei Secret e RBAC» è gratuita?
Sì — il testo completo di «Gestione dei Secret e RBAC» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso DevOps Bootcamp, passa a CoddyKit PRO. Il corso DevOps Bootcamp include 4 lezioni in totale.
Cosa imparerò in «Gestione dei Secret e RBAC»?
Scopra strategie avanzate per gestire i dati sensibili e implementare il Role-Based Access Control (RBAC) negli ambienti containerizzati. Eserciti DevOps Bootcamp con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare DevOps Bootcamp?
Non è richiesta alcuna esperienza precedente. DevOps Bootcamp su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «Gestione dei Secret e RBAC»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione DevOps Bootcamp?
Sì. Ogni lezione DevOps Bootcamp include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Scansione di sicurezza delle immagini dei container
- Sicurezza dei container a runtime
- Gestione dei Secret e RBAC
- Network policy e networking con privilegi minimi