Es kann schwierig sein, den Grad der Berechtigungen zu verwalten, die jedem Schoten und Container in einem Kubernetes -Container zur Verfügung gestellt werden. Wir können die Kubernetes SecurityContext -Funktionen nutzen, um die Linux -Funktionen aus dem Pod und dem Container hinzuzufügen oder zu löschen, um die Sicherheit des Containers zu erhöhen. Dieser Artikel konzentriert sich auf die Verwendung des SecurityContext, um ein einfaches Beispiel für das Hinzufügen und Löschen von Funktionen zu implementieren. Die Konfiguration einer YAML -Datei zum Löschen aller Funktionen und nur eine Fähigkeit zu einem Container wird im Beispielbeispiel bereitgestellt. In diesem Artikel werden die Proc- und Capsh -Befehle verwendet, um die Funktionen des Containers anzuzeigen.
Schritt 1: Starten Sie den Minikube -Server
Starten Sie zunächst den Minikube -Server, damit Sie Ihre Anwendung ausführen und die Kubectl -Anweisungen verwenden können. Sie können Ihre Knoten, Pods und sogar Cluster mit dem Minikube -Server in der Kubernetes -Umgebung bereitstellen. Der folgende Befehl muss verwendet werden, um das Minikube im aktiven Modus zu verwalten:
> Minikube Start
Auf diese Weise wird der Minikube -Server eingeschaltet und die Kubernetes -Umgebung ist für den Einsatz bereit.
Schritt 2: Erstellen Sie eine Kubernetes YAML -Datei
Erstellen Sie im zweiten Schritt eine YAML -Datei, um einen Pod bereitzustellen.
Befolgen Sie die Schritte zum Erstellen einer YAML -Datei mit Nano:
Führen Sie den folgenden Nano -Befehl aus. Es erstellt eine YAML -Konfigurationsdatei mit dem Namen „Nano PodSample.yaml ”.
> Nano PodSample.Yaml
Gehen wir mit dem nächsten Schritt über, um zu wissen, wie Sie ein PodSample konfigurieren.YAML -Datei.
Schritt 3: Konfigurieren Sie die YAML -Datei
Wir fügen das Capsh -Tool im vorhergehenden Schritt hinzu, damit wir die Funktionen unseres Containers sehen können.
Beachten Sie, dass keiner dieser Parameter für einen SecurityContext -Abschnitt für diesen Container konfiguriert ist. Somit sind sie alle auf Systemstandlagen eingestellt. Betrachten Sie die Tatsache, dass dieser Container als Standardbenutzer arbeitet, der in der Dockerfile geliefert wird, aus der er konstruiert wird, wenn kein Benutzer in Kubernetes dafür definiert ist. Für viele Container ist dieser Standardbenutzer das Root.
Schritt 4: Erstellen Sie einen Pod
Lassen Sie uns in diesem Schritt PodSample erstellen.YAML mit dem folgenden Befehl beigefügt:
> kubectl anwenden -f podSample.Yaml
Schritt 5: Überprüfen Sie die Fähigkeiten
Im vorherigen Schritt wird ein Pod erstellt und ausgeführt.
Nachdem wir eine Shell darin haben, können wir Capsh verwenden, um die Funktionen mit dem folgenden Befehl zu überprüfen:
> $ kubectl exec - -stdin - -tty Caps - - Asche
Mit dem Befehl capsh ist es möglich, die Standardkapazitäten des Containers anzuzeigen, die wie folgt aufgeführt sind:
Wir können aus der angegebenen Ausgabe beobachten, dass der Container viele Standardfunktionen hat, die zum Container zur Laufzeit gegeben werden.
Schritt 6: Fallen die Einzel Kapabilitäty In Kubernetes SecurityContext
In diesem Schritt lassen wir die einzelne Fähigkeit des Behälters fallen.
Konfigurieren wir die YAML -Datei mit dem folgenden Befehl:
> Nano Dropod.Yaml
Danach bewegen Sie sich, um den Droppod zu konfigurieren.YAML -Datei mit dem folgenden angegebenen Befehl:
> kubectl anwenden -f droppod.Yaml
Schritt 7: Konfigurieren Sie, um die einzelnen Funktionen in der YAML -Datei hinzuzufügen
Öffnen Sie in diesem Schritt die YAML -Datei (fallengelassen.yaml) das wurde in Schritt 6 erstellt. Stellen Sie dann den Container so ein, dass er keinen Zugriff mehr auf die Funktion cap_mknod hat, wodurch die Möglichkeit, die neuen Dateisystemknoten zu erstellen, beseitigt.
Die konfigurierte Datei ist wie gezeigt:
Schritt 8: Überprüfen Sie die Fähigkeiten
Die YAML -Datei ist so konfiguriert, dass sie die Fähigkeit cap_mknod fallen lassen.
In diesem Schritt die Dropcaps ausführen und ausführen.YAML -Datei, um die Funktionen des Containers mit dem folgenden Befehl zu überprüfen:
> $ kubectl exec - -stdin - -tty Dropcaps - - Asche
Die Kapazitäten können überprüft werden, indem die Dropcaps -Datei ausgeführt wird:
> # Capsh - -print
Wir können beobachten, dass diese Pod die Cap_mknod -Fähigkeit im Vergleich zum ersten Pod fallen ließ.
Schritt 9: Lassen Sie alle Funktionen in Kubernetes SecurityContext fallen
Da Kubernetes eine einzelne Fähigkeit fallen lassen kann, kann es auch alle Funktionen über SecurityContext fallen lassen. Lassen Sie in diesem Schritt alle Funktionen des Containers ab, indem Sie den angegebenen Befehl implizieren:
> Nano -Samplenocap.Yaml
Konfigurieren Sie danach das Samplenocap.YAML -Datei mit dem folgenden Befehl:
> kubectl erstellen -f samplenocap.Yaml
Wechseln wir nun zum nächsten Schritt, um alle Kapazitäten in unseren SecurityContext -Einstellungen abzugeben.
Schritt 10: Konfigurieren Sie alle Funktionen in der YAML -Datei
Öffnen Sie in diesem Schritt die YAML -Datei, die in Schritt 9 erstellt wurde. Konfigurieren Sie dann im Container.SecurityContext und lassen Sie alle Funktionen des Containers fallen.
Die konfigurierte Datei ist wie gezeigt:
Schritt 11: Überprüfen Sie die Fähigkeiten
Führen Sie die Nocaps in CAPSH aus, um die Informationen zu Funktionen zu sehen. Verwenden Sie in diesem Schritt den folgenden Befehl und zeigen Sie alle Funktionen des Containers an:
> Kubectl Exec - -Stdin - -tty Nocaps - - Asche
Die Kapazitäten können in der folgenden Abbildung überprüft werden, indem die YAML -Datei der Samplenocaps in Capsh ausgeführt wird:
># Capsh - -print
Die vorherige Ausgabe zeigt, dass der Strom = ”und Begrenzungsset =” ”jetzt leer sind. Die Fähigkeiten werden erfolgreich fallen gelassen.
Schritt 12: Installieren Sie die Bash
Installieren Sie in diesem Schritt Bash über APK, da einige Systemfunktionen nicht funktionieren, wenn wir überhaupt keine Funktionen haben. Obwohl unser Container als Root arbeitet, schlägt die Installation des Bash -Pakets fehl.
> # apk Bash hinzufügen
Schritt 13: Überprüfen Sie die Funktionsinformationen
Es gibt verschiedene Möglichkeiten, die Funktionen unseres Containers wie die Verwendung der CAPSH- und ProC -Befehle anzuzeigen. In diesem Schritt zeigen wir die Containerkapazitäten mit dem Proc -Befehl an und Proc zeigt Kapazitäten als Bitmap an. Obwohl es nicht so lesbar ist wie das Ergebnis von Capsh, steht jedes Bit, das hier definiert ist.
> # cd/proc/1//
Hier können wir sehen, dass dieser bestimmte Container keine fähigen Funktionen hat. Alle diese Werte sind Null.
Schritt 14: Hinzufügen einer einzigen Fähigkeit im Kubernetes SecurityContext
In den vorherigen Schritten haben wir eine einzelne Fähigkeit fallen lassen, die CAP_MKNOD ist und alle Funktionen fallen gelassen hat. In diesem Schritt können wir jedoch die Funktionen zurück hinzufügen.
Führen Sie den folgenden Befehl aus, um die YAML -Datei zu erstellen:
> Nano Sampleadd.Yaml
Konfigurieren Sie danach das Sampleadd.YAML -Datei.
> kubectl erstellen -f sampleadd.Yaml
Versuchen wir nun das Sampleadd.YAML -Datei und in unseren SecurityContext -Einstellungen eine einzelne Kapazität hinzufügen.
Schritt 15: Konfigurieren Sie die einzelne Funktionen in der YAML -Datei
Konfigurieren wir nun die Datei, indem Sie die Fähigkeit in der Spezifikation hinzufügen.Container.SecurityContext in Funktionen.Fügen Sie ["Mknod"] hinzu].
Die Fähigkeit wird in der YAML -Datei angezeigt.
Schritt 16: Überprüfen Sie die Fähigkeiten
Führen Sie in diesem Schritt die AddCaps aus, um die Funktionen mit dem folgenden Befehl zu überprüfen:
> kubectl exec - -stdin - -tty addCaps - - als
Die zusätzliche Kapazität ist in der folgenden gegebenen Ausgabe zu sehen:
current = cap_mknod+ep
Begrenzungsset = cap_mknod
> # Capsh - -print
Sie haben zuerst aus dem implementierten Beispiel über die Standardfunktionen des Containers erfahren, die zur Laufzeit zugewiesen sind, die mit dem Capsh -Befehl angezeigt wird. Als nächstes haben Sie gelernt, eine einzelne Funktion in einem Container namens Cap_mknod fallen zu. Anschließend haben Sie auch gelernt, wie Sie alle Funktionen des Containers mithilfe der Konfiguration // Drop: -All -Konfiguration fallen lassen. Anschließend haben wir zwei Möglichkeiten verwendet, um die Funktionen von Containern anzuzeigen - mit den Befehlen CAPSH und Proc.