Sicurezza del runtime - Amazon EKS

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Sicurezza del runtime

La sicurezza in fase di esecuzione offre una protezione attiva per i container mentre sono in esecuzione. L'idea è quella di rilevare e and/or impedire che si verifichino attività dannose all'interno del contenitore. Ciò può essere ottenuto con una serie di meccanismi presenti nel kernel Linux o nelle estensioni del kernel integrate con Kubernetes, come le funzionalità Linux, l'elaborazione sicura (seccomp) o. AppArmor SELinux Esistono anche opzioni come Amazon GuardDuty e strumenti di terze parti che possono aiutare a stabilire linee di base e rilevare attività anomale con una configurazione meno manuale dei meccanismi del kernel Linux.

Importante

Al momento Kubernetes non fornisce alcun meccanismo nativo per caricare seccomp o profili su Nodes. AppArmor SELinux Devono essere caricati manualmente o installati sui nodi quando vengono avviati. Questa operazione deve essere eseguita prima di farvi riferimento nei Pod, poiché lo scheduler non è a conoscenza di quali nodi abbiano dei profili. Scopri di seguito come strumenti come Security Profiles Operator possono aiutare ad automatizzare il provisioning dei profili sui nodi.

Contesti di sicurezza e controlli Kubernetes integrati

Molti meccanismi di sicurezza del runtime di Linux sono strettamente integrati con Kubernetes e possono essere configurati tramite contesti di sicurezza Kubernetes. Una di queste opzioni è il privileged flag, che è di default e, se abilitato, è false essenzialmente equivalente a root sull'host. È quasi sempre inappropriato abilitare la modalità privilegiata nei carichi di lavoro di produzione, ma esistono molti altri controlli che possono fornire privilegi più granulari ai contenitori, a seconda dei casi.

Funzionalità Linux

Le funzionalità di Linux consentono di concedere determinate funzionalità a un Pod o a un contenitore senza fornire tutte le capacità dell'utente root. Gli esempi includonoCAP_NET_ADMIN, che consente di configurare interfacce di rete o firewall o che consente la manipolazione dell'orologio di sistema. CAP_SYS_TIME

Seccomp

Con secure computing (seccomp) è possibile impedire a un'applicazione containerizzata di effettuare determinate chiamate di sistema al kernel del sistema operativo host sottostante. Sebbene il sistema operativo Linux abbia poche centinaia di chiamate di sistema, la maggior parte di esse non è necessaria per l'esecuzione dei container. Limitando le chiamate di sistema che un container può effettuare, è possibile ridurre efficacemente la superficie di attacco dell'applicazione.

Seccomp funziona intercettando le chiamate di sistema e permettendo il passaggio solo a quelle che sono state consentite nell'elenco. Docker ha un profilo seccomp predefinito adatto alla maggior parte dei carichi di lavoro generici e altri runtime di container come containerd forniscono impostazioni predefinite comparabili. Puoi configurare il tuo contenitore o Pod per utilizzare il profilo seccomp predefinito del runtime del contenitore aggiungendo quanto segue alla sezione delle specifiche del Pod: securityContext

securityContext: seccompProfile: type: RuntimeDefault

A partire dalla 1.22 (in alpha, stabile dalla 1.27), quanto sopra RuntimeDefault può essere utilizzato per tutti i Pod su un nodo utilizzando un singolo flag kubelet,. --seccomp-default Quindi il profilo specificato in securityContext è necessario solo per altri profili.

È anche possibile creare profili personalizzati per cose che richiedono privilegi aggiuntivi. Questa operazione può essere molto noiosa da eseguire manualmente, ma esistono strumenti come Inspektor Gadget (consigliato anche nella sezione sulla sicurezza di rete per la generazione di politiche di rete) e Security Profiles Operator che supportano l'utilizzo di strumenti come eBPF o log per registrare i requisiti di privilegio di base come profili seccomp. Security Profiles Operator consente inoltre di automatizzare l'implementazione dei profili registrati nei nodi per l'utilizzo da parte di pod e contenitori.

AppArmor e SELinux

AppArmor e SELinux sono noti come sistemi di controllo degli accessi obbligatori o MAC. Sono concettualmente simili a seccomp ma con funzionalità diverse APIs , che consentono il controllo degli accessi, ad esempio, per percorsi di file system o porte di rete specifici. Il supporto per questi strumenti dipende dalla distribuzione Linux, con Debian/Ubuntu supporto AppArmor e supporto per RHEL/CentOS/Bottlerocket/Amazon Linux 2023 SELinux. Vedi anche la sezione sulla sicurezza dell'infrastruttura per ulteriori discussioni su SELinux.

Entrambi AppArmor SELinux sono integrati con Kubernetes, ma a partire da Kubernetes 1.28 i AppArmor profili devono essere specificati tramite annotazioni, mentre le SELinux etichette possono essere impostate direttamente tramite il SELinux campo Opzioni nel contesto di sicurezza.

Come per i profili seccomp, il Security Profiles Operator sopra menzionato può fornire assistenza nella distribuzione dei profili sui nodi del cluster. (In futuro, il progetto mira anche a generare profili per AppArmor e SELinux come fa per seccomp.)

Raccomandazioni

Usa Amazon GuardDuty per il monitoraggio del runtime e il rilevamento delle minacce ai tuoi ambienti EKS

Se al momento non disponi di una soluzione per il monitoraggio continuo dei runtime EKS, l'analisi dei log di controllo EKS e la scansione alla ricerca di malware e altre attività sospette, Amazon consiglia vivamente l'uso di Amazon ai clienti che desiderano un modo semplice, veloce, sicuro, scalabile ed economico GuardDuty per proteggere i propri ambienti AWS con un solo clic. Amazon GuardDuty è un servizio di monitoraggio della sicurezza che analizza ed elabora fonti di dati fondamentali, come eventi di CloudTrail gestione AWS, registri CloudTrail eventi AWS, log di flusso VPC (da istanze Amazon EC2), log di audit Kubernetes e log DNS. Include anche il monitoraggio del runtime EKS. Utilizza feed di intelligence sulle minacce costantemente aggiornati, come elenchi di indirizzi IP e domini dannosi, e l'apprendimento automatico per identificare attività impreviste, potenzialmente non autorizzate e dannose all'interno del tuo ambiente AWS. Ciò può includere problemi come l'aumento dei privilegi, l'uso di credenziali esposte o la comunicazione con indirizzi IP e domini dannosi, la presenza di malware sulle istanze Amazon EC2 e sui carichi di lavoro dei container EKS o l'individuazione di attività API sospette. GuardDuty ti informa sullo stato del tuo ambiente AWS producendo risultati di sicurezza che puoi visualizzare nella GuardDuty console o tramite Amazon EventBridge. GuardDuty fornisce inoltre supporto per esportare i risultati in un bucket Amazon Simple Storage Service (S3) e integrarli con altri servizi come AWS Security Hub and Detective.

Guarda questo talk tecnico online di AWS «Enhanced threat detection for Amazon EKS with Amazon GuardDuty - AWS Online Tech Talks» per scoprire come abilitare queste funzionalità di sicurezza EKS aggiuntive step-by-step in pochi minuti.

Facoltativamente: utilizza una soluzione di terze parti per il monitoraggio del runtime

Creare e gestire i profili seccomp e Apparmor può essere difficile se non hai familiarità con la sicurezza di Linux. Se non avete il tempo di diventare esperti, prendete in considerazione l'utilizzo di una soluzione commerciale di terze parti. Molti di loro sono andati oltre i profili statici come Apparmor e seccomp e hanno iniziato a utilizzare l'apprendimento automatico per bloccare o avvisare di attività sospette. Alcune di queste soluzioni sono disponibili di seguito nella sezione strumenti. Altre opzioni sono disponibili su AWS Marketplace for Containers.

Prendi in considerazione le funzionalità di add/dropping Linux prima di scrivere policy seccomp

Le funzionalità implicano vari controlli nelle funzioni del kernel raggiungibili tramite syscalls. Se il controllo fallisce, la syscall restituisce in genere un errore. Il controllo può essere eseguito direttamente all'inizio di una specifica syscall o più in profondità nel kernel in aree che potrebbero essere raggiungibili tramite più syscall diverse (come la scrittura su uno specifico file privilegiato). Seccomp, d'altra parte, è un filtro syscall che viene applicato a tutte le syscall prima che vengano eseguite. Un processo può impostare un filtro che consenta loro di revocare il diritto di eseguire determinate syscall o argomenti specifici per determinate syscall.

Prima di usare seccomp, valuta se le funzionalità di adding/removing Linux ti offrono il controllo di cui hai bisogno. Per ulteriori informazioni, vedere Impostazione delle funzionalità per- containers.

Scopri se puoi raggiungere i tuoi obiettivi utilizzando Pod Security Policies () PSPs

Le politiche di sicurezza di Pod offrono molti modi diversi per migliorare il livello di sicurezza senza introdurre complessità eccessive. Esplora le opzioni disponibili PSPs prima di avventurarti nella creazione di profili seccomp e Apparmor.

Strumenti e risorse