OpenShift - Tekton
Diese Seite zeigt ein Szenario zur Privilegieneskalation, vorausgesetzt Tekton ist im Cluster installiert und Sie können einen Namespace erstellen (manchmal sind auch Bearbeitungsrechte ausreichend)
Last updated
Diese Seite zeigt ein Szenario zur Privilegieneskalation, vorausgesetzt Tekton ist im Cluster installiert und Sie können einen Namespace erstellen (manchmal sind auch Bearbeitungsrechte ausreichend)
Last updated
Der ursprüngliche Autor dieser Seite ist Haroun
Laut der Dokumentation: Tekton ist ein leistungsstarkes und flexibles Open-Source-Framework zur Erstellung von CI/CD-Systemen, das es Entwicklern ermöglicht, über Cloud-Anbieter und lokale Systeme hinweg zu erstellen, zu testen und bereitzustellen. Sowohl Jenkins als auch Tekton können zum Testen, Erstellen und Bereitstellen von Anwendungen verwendet werden, wobei Tekton jedoch Cloud-Native ist.
Bei Tekton wird alles durch YAML-Dateien dargestellt. Entwickler können benutzerdefinierte Ressourcen (CR) vom Typ Pipelines
erstellen und mehrere Tasks
darin angeben, die sie ausführen möchten. Um eine Pipeline auszuführen, müssen Ressourcen vom Typ PipelineRun
erstellt werden.
Wenn Tekton installiert ist, wird ein Servicekonto (sa) namens pipeline
in jedem Namespace erstellt. Wenn eine Pipeline ausgeführt wird, wird ein Pod unter Verwendung dieses sa mit dem Namen pipeline
erstellt, um die in der YAML-Datei definierten Aufgaben auszuführen.
Standardmäßig kann das Pipeline-Servicekonto die pipelines-scc
-Fähigkeit nutzen. Dies liegt an der globalen Standardkonfiguration von Tekton. Tatsächlich ist die globale Konfiguration von Tekton auch eine YAML-Datei in einem OpenShift-Objekt namens TektonConfig
, die eingesehen werden kann, wenn Sie einige Leserollen im Cluster haben.
Das Problem besteht darin, dass die Standard-SCC, die der Pipeline-Service-Account verwenden kann, vom Benutzer gesteuert werden kann. Dies kann mithilfe eines Labels in der Namespace-Definition erreicht werden. Wenn ich beispielsweise einen Namespace mit der folgenden YAML-Definition erstellen kann:
Der Tekton-Operator wird dem Pipeline-Service-Konto im test-namespace
die Berechtigung geben, das SCC-Privileg zu verwenden. Dies ermöglicht das Einhängen des Knotens.
Tekton-Dokumente beschreiben, wie man das Überschreiben des SCC einschränkt, indem man ein Label im TektonConfig
-Objekt hinzufügt.
Dieses Label heißt max-allowed