Aggiungere o rimuovere le funzionalità Linux in Kubernetes SecurityContext

Aggiungere o rimuovere le funzionalità Linux in Kubernetes SecurityContext

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:

  • Vai al percorso della directory in cui si desidera creare il file o modificare un file esistente.
  • Digita il comando nano seguito dal nome del file.

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

Conclusione

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.