OpenShift - Tekton

Tip

Ucz się & ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Wspieraj HackTricks

Oryginalnym autorem tej strony jest Haroun

Czym jest tekton

Według dokumentacji: Tekton to potężny i elastyczny framework open-source do tworzenia systemów CI/CD, umożliwiający deweloperom budowanie, testowanie i wdrażanie w różnych dostawcach chmury oraz na systemach lokalnych. Zarówno Jenkins, jak i Tekton mogą być używane do testowania, budowania i wdrażania aplikacji, jednak Tekton jest Cloud Native.

W Tekton wszystko jest reprezentowane przez pliki YAML. Deweloperzy mogą tworzyć Zasoby Niestandardowe (CR) typu Pipelines i określać w nich wiele Tasks, które chcą uruchomić. Aby uruchomić Pipeline, muszą zostać utworzone zasoby typu PipelineRun.

Gdy tekton jest zainstalowany, w każdej przestrzeni nazw tworzony jest konto usługi (sa) o nazwie pipeline. Gdy Pipeline jest uruchamiany, tworzony jest pod przy użyciu tego sa o nazwie pipeline, aby uruchomić zadania zdefiniowane w pliku YAML.

Getting Started with Pipelines | Tekton

Możliwości konta usługi Pipeline

Domyślnie konto usługi pipeline może korzystać z możliwości pipelines-scc. Wynika to z globalnej domyślnej konfiguracji tekton. Właściwie, globalna konfiguracja tekton jest również YAML w obiekcie openshift o nazwie TektonConfig, który można zobaczyć, jeśli masz pewne role czytelnicze w klastrze.

apiVersion: operator.tekton.dev/v1alpha1
kind: TektonConfig
metadata:
name: config
spec:
...
...
platforms:
openshift:
scc:
default: "pipelines-scc"

W dowolnej przestrzeni nazw, jeśli możesz uzyskać token konta serwisowego potoku, będziesz mógł użyć pipelines-scc.

Błąd w konfiguracji

Problem polega na tym, że domyślny scc, który może używać konto sa potoku, jest kontrolowany przez użytkownika. Można to zrobić za pomocą etykiety w definicji przestrzeni nazw. Na przykład, jeśli mogę utworzyć przestrzeń nazw z następującą definicją yaml:

apiVersion: v1
kind: Namespace
metadata:
name: test-namespace
annotations:
operator.tekton.dev/scc: privileged

Operator tekton przyzna kontu usługi pipeline w test-namespace możliwość używania scc privileged. Umożliwi to montowanie węzła.

Rozwiązanie

Dokumenty Tekton opisują, jak ograniczyć nadpisywanie scc, dodając etykietę w obiekcie TektonConfig.

Tekton

Ta etykieta nazywa się max-allowed

apiVersion: operator.tekton.dev/v1alpha1
kind: TektonConfig
metadata:
name: config
spec:
...
...
platforms:
openshift:
scc:
default: "restricted-v2"
maxAllowed: "privileged"

Tip

Ucz się & ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Wspieraj HackTricks