Potrebbe essere difficile gestire il grado di privilegi forniti a ciascun pod e contenitore in un contenitore Kubernetes. Possiamo utilizzare le funzionalità di Kubernetes SecurityContext per aggiungere o eliminare le funzionalità Linux dal pod e dal contenitore per aumentare la sicurezza del contenitore. Questo articolo si concentra sull'utilizzo di SecurityContext per implementare un semplice esempio di aggiunta ed eliminazione delle funzionalità. Nell'esempio viene fornita la configurazione di un file YAML per eliminare tutte le funzionalità e aggiungere solo una funzionalità a un contenitore. In questo articolo, i comandi Proc e Capsh vengono utilizzati per visualizzare le capacità del contenitore.
Passaggio 1: avviare il server minikube
Innanzitutto, avvia il server minikube in modo da poter eseguire l'applicazione e utilizzare le istruzioni Kubectl. È possibile distribuire i tuoi nodi, pod e persino cluster utilizzando il server Minikube nell'ambiente Kubernetes. Il comando seguente deve essere utilizzato per mantenere il minikube in modalità attiva:
> Minikube Start
In tal modo, il server minikube è acceso e l'ambiente Kubernetes è pronto per l'uso.
Passo 2: Crea un file yaml kubernetes
Nel secondo passaggio, crea un file YAML per distribuire un pod.
Segui i passaggi per creare un file YAML utilizzando Nano:
Esegui il seguente comando nano. Crea un file di configurazione YAML chiamato "Nano Podsample.yaml ".
> Nano Podsample.Yaml
Passiamo al passaggio successivo che ti aiuta a sapere come configurare un podsample.file yaml.
Passaggio 3: Configurare il file yaml
Aggiungiamo lo strumento Capsh nel passaggio precedente in modo da poter vedere le capacità del nostro contenitore.
Si noti che nessuno di questi parametri è configurato per una sezione SecurityContext per questo contenitore. Pertanto, sono tutti impostati sui valori predefiniti del sistema. Considera il fatto che questo contenitore funzioni come l'utente predefinito che viene fornito in Dockerfile da cui è costruito se nessun utente è definito per esso in Kubernetes. Per molti contenitori, questo utente predefinito è il root.
Passaggio 4: Crea un baccello
In questo passaggio, creiamo podsample.Yaml con il seguente comando allegato:
> kubectl applica -f podsample.Yaml
Passaggio 5: Controlla le capacità
Nel passaggio precedente, viene creato un pod.
Ora che abbiamo una shell al suo interno, possiamo usare Capsh per verificarne le capacità utilizzando il seguente comando:
> $ Kubectl Exec - -stdin - -tty Caps - - Ash
Utilizzando il comando Capsh, è possibile vedere le capacità predefinite del contenitore che sono elencate come segue:
Dall'output possiamo osservare che il contenitore ha molte funzionalità predefinite che vengono assegnate al contenitore in fase di esecuzione.
Passaggio 6: Dropp the Separare Capability In Kubernetes SecurityContext
In questo passaggio, eliminiamo la singola capacità del contenitore.
Configuriamo il file yaml utilizzando il comando seguente:
> nano dropod.Yaml
Successivamente, spostati per configurare il droppod.File Yaml utilizzando il seguente comando fornito:
> kubectl appliche -f droppod.Yaml
Fare un passo 7: Configura per aggiungere la singola funzionalità nel file YAML
In questo passaggio, apri il file yaml (abbandonato.Yaml) che è stato creato nel passaggio 6. Quindi, impostare il contenitore in modo tale che non abbia più accesso alla funzionalità Cap_Mknod, che rimuove la possibilità di creare i nuovi nodi del file system.
Il file configurato è come mostrato:
Fare un passo 8: Controlla le capacità
Il file YAML è configurato per rilasciare la funzionalità Cap_Mknod.
In questo passaggio, eseguire ed eseguire i dropcaps.File YAML per verificare le capacità del contenitore utilizzando il comando seguente:
> $ kubectl exec - -stdin - -tty dropcaps - - Ash
Le capacità possono essere controllate eseguendo il file Dropcaps:
> # capsh - -print
Possiamo osservare che questo pod ha lasciato cadere la funzionalità Cap_Mknod rispetto al primo pod.
Fare un passo 9: Lascia cadere tutte le funzionalità in Kubernetes SecurityContext
Poiché Kubernetes può abbandonare una singola capacità, può anche far cadere tutte le capacità tramite SecurityContext. In questo passaggio, rilascia tutte le capacità del contenitore implicando il comando indicato:
> Nano Samplenocap.Yaml
Successivamente, configurare il campionocap.File Yaml utilizzando il seguente comando:
> kubectl crea samplenocap.Yaml
Ora, passiamo al passaggio successivo per eliminare tutte le capacità nelle nostre impostazioni SecurityContext.
Passaggio 10: configurare tutte le funzionalità nel file YAML
In questo passaggio, apri il file YAML creato nel passaggio 9. Quindi, configura all'interno del contenitore.SecurityContext e rilascia tutte le funzionalità del contenitore.
Il file configurato è come mostrato:
Fare un passo 11: Controlla le capacità
Esegui i Nocaps in Capsh per vedere le informazioni sulle capacità. In questo passaggio, utilizzare il seguente comando e visualizzare tutte le capacità del contenitore:
> Kubectl Exec - -stdin - -tty Nocaps - - Ash
Le capacità possono essere verificate nella seguente illustrazione eseguendo il file YAML Samplenocaps in Capsh:
># capsh - -print
L'output precedente mostra che la corrente = ”” e il limite set = ”” sono vuoti ora. Le capacità vengono eliminate con successo.
Passo 12: Installa la festa
In questo passaggio, installa bash tramite APK poiché alcune funzioni di sistema non funzionano se non abbiamo alcuna capacità. Anche se il nostro contenitore funziona come una radice, l'installazione del pacchetto bash non riesce.
> # APK Aggiungi bash
Passo 13: Controlla le informazioni sulle capacità
Esistono diversi modi per visualizzare le capacità del nostro contenitore come l'utilizzo dei comandi Capsh e Proc. In questo passaggio, visualizziamo le capacità del contenitore utilizzando il comando Proc e Proc visualizza le capacità come bitmap. Sebbene non sia così leggibile come il risultato di Capsh, ogni bit che è definito qui rappresenta una certa capacità.
> # cd/proc/1/
Qui, possiamo vedere che questo particolare contenitore non ha capacità abilitate; Tutti questi valori sono zero.
Passo 14: Aggiunta di una singola capacità in Kubernetes SecurityContext
Nei passaggi precedenti, abbiamo lasciato cadere una singola capacità che è Cap_Mknod e lasciato cadere tutte le capacità. Ma, in questo passaggio, possiamo aggiungere le funzionalità.
Esegui il seguente comando per creare il file YAML:
> Nano Sampleadd.Yaml
Successivamente, configurare Sampledd.file yaml.
> kubectl crea -f sampleadd.Yaml
Ora, proviamo il campione.file yaml e aggiungi un'unica capacità nelle nostre impostazioni di securitycontext.
Passo 15: Configurare la funzionalità singola nel file YAML
Ora, configuriamo il file aggiungendo la funzionalità nelle specifiche.contenitore.SecurityContext in funzionalità.Aggiungi ["mknod"].
La funzionalità viene visualizzata nel file YAML.
Fare un passo 16: Controlla le capacità
In questo passaggio, eseguire gli ADDCAP per verificare le funzionalità utilizzando il comando seguente:
> kubectl exec - -stdin - -tty addcaps - - as
La capacità aggiuntiva può essere vista nel seguente output fornito:
corrente = cap_mknod+ep
Set di limite = cap_mknod
> # capsh - -print
Hai imparato per la prima volta dall'esempio implementato sulle funzionalità predefinite del contenitore assegnato in fase di esecuzione che viene visualizzato con il comando Capsh. Successivamente, hai imparato a far cadere una singola capacità in un contenitore chiamato cap_mknod. Quindi, hai anche imparato come eliminare tutte le funzionalità del contenitore utilizzando // drop: -tule configurazione. Quindi, abbiamo usato due modi per visualizzare le capacità dei contenitori, utilizzando i comandi Capsh e Proc.