OpenShift - Tekton
Ta strona przedstawia scenariusz eskalacji uprawnień, zakładając że tekton jest zainstalowany w klastrze i że można utworzyć przestrzeń nazw (czasami wystarczą prawa do edycji)
Oryginalnym autorem tej strony jest Haroun
Czym jest tekton
Zgodnie z dokumentacją: Tekton to potężny i elastyczny framework typu open-source do tworzenia systemów CI/CD, pozwalający programistom budować, testować i wdrażać aplikacje w różnych środowiskach chmurowych i systemach lokalnych. Zarówno Jenkins, jak i Tekton mogą być używane do testowania, budowania i wdrażania aplikacji, jednak Tekton jest natywny dla chmury.
W Tektonie wszystko jest reprezentowane przez pliki YAML. Programiści mogą tworzyć zasoby niestandardowe (CR) typu Pipelines
i określać w nich wiele Tasks
, które chcą uruchomić. Aby uruchomić zasoby Pipeline, należy utworzyć zasoby typu PipelineRun
.
Gdy tekton jest zainstalowany, konto usługi (sa) o nazwie pipeline jest tworzone w każdej przestrzeni nazw. Gdy Pipeline jest uruchamiany, pojawi się moduł nazywany pipeline
korzystający z tego konta sa, aby uruchomić zadania zdefiniowane w pliku YAML.
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. Faktycznie, globalna konfiguracja tekton jest również plikiem YAML w obiekcie openshift o nazwie TektonConfig
, który można zobaczyć, mając pewne role czytelnika w klastrze.
W dowolnym namespace, jeśli uzyskasz token konta usługi pipeline, będziesz mógł użyć pipelines-scc
.
Błąd konfiguracji
Problem polega na tym, że domyślne scc, które konto sa pipeline może używać, jest kontrolowalne przez użytkownika. Można to zrobić za pomocą etykiety w definicji namespace. Na przykład, jeśli mogę utworzyć namespace z następującą definicją yaml:
Naprawa
Dzięki operatorowi tekton, konto usługi przepływu w przestrzeni nazw test-namespace
będzie miało możliwość korzystania z uprzywilejowanego scc. Pozwoli to na montowanie węzła.
Tekton dokumentuje, jak ograniczyć nadpisanie scc poprzez dodanie etykiety w obiekcie TektonConfig
.
Ta etykieta nazywa się max-allowed
Last updated