OpenShift - Tekton

Ova stranica prikazuje scenarij eskalacije privilegija uz pretpostavku da je tekton instaliran u klasteru i da možete kreirati namespace (ponekad su dovoljna i prava za uređivanje)

Originalni autor ove stranice je Haroun

Šta je tekton

Prema dokumentaciji: Tekton je moćan i fleksibilan open-source okvir za kreiranje CI/CD sistema, omogućavajući developerima da grade, testiraju i implementiraju aplikacije na različitim cloud provajderima i on-premise sistemima. Sama činjenica da Tekton predstavlja Cloud Native rešenje, omogućava da se koristi za testiranje, izgradnju i implementaciju aplikacija, slično kao i Jenkins.

Sa Tektonom, sve je predstavljeno YAML fajlovima. Developeri mogu kreirati prilagođene resurse (CR) tipa Pipelines i specificirati više Tasks u njima koje žele da izvrše. Da bi se izvršio Pipeline, resursi tipa PipelineRun moraju biti kreirani.

Kada je tekton instaliran, service account (sa) pod nazivom pipeline je kreiran u svakom namespace-u. Kada se pokrene Pipeline, pod će biti pokrenut koristeći ovaj sa pod nazivom pipeline kako bi izvršio zadatke definisane u YAML fajlu.

Mogućnosti servisnog naloga za Pipeline

Podrazumevano, servisni nalog za pipeline može koristiti mogućnost pipelines-scc. Ovo je zbog globalne podrazumevane konfiguracije tektona. Zapravo, globalna konfiguracija tektona je takođe YAML fajl u openshift objektu nazvanom TektonConfig koji može biti viđen ako imate određene čitalačke uloge u klasteru.

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

Nespecifikacija

Problem je što je podrazumevani scc koji može koristiti servisni nalog za tokene cjevovoda podložan kontroli korisnika. Ovo se može postići korišćenjem oznake u definiciji prostora imena. Na primer, ako mogu da kreiram prostor imena sa sledećom yaml definicijom:

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

Popravka

Tekton operator će omogućiti servisnom nalogu za pipeline u test-namespace mogućnost korišćenja scc privilegija. Ovo će omogućiti montiranje čvora.

Tekton dokumenti opisuju kako ograničiti prebrisavanje scc dodavanjem oznake u objekat TektonConfig.

Ova oznaka se naziva max-allowed

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

Last updated