OpenShift - Tekton
このページでは、クラスターにtektonがインストールされており、ネームスペースを作成できる(編集権限がある場合もあります)という前提で特権昇格シナリオを示しています。
Last updated
このページでは、クラスターにtektonがインストールされており、ネームスペースを作成できる(編集権限がある場合もあります)という前提で特権昇格シナリオを示しています。
Last updated
このページの元の著者は Haroun
ドキュメントによると:Tektonは、クラウドプロバイダーやオンプレミスシステム上で開発者がビルド、テスト、展開できる強力で柔軟なオープンソースフレームワークであるCI/CDシステムを作成するためのものです。 JenkinsとTektonの両方は、アプリケーションのテスト、ビルド、展開に使用できますが、TektonはCloud Nativeです。
Tektonでは、すべてがYAMLファイルで表現されます。開発者はPipelines
というタイプのカスタムリソース(CR)を作成し、それらで実行したい複数のTasks
を指定できます。Pipelineを実行するには、PipelineRun
というタイプのリソースを作成する必要があります。
Tektonがインストールされると、各ネームスペースにpipeline
という名前のサービスアカウント(sa)が作成されます。Pipelineが実行されると、このsaを使用してYAMLファイルで定義されたタスクを実行するためにpipeline
という名前のポッドが生成されます。
デフォルトでは、pipelineサービスアカウントはpipelines-scc
機能を使用できます。これは、tektonのグローバルデフォルト構成によるものです。実際、tektonのグローバル構成もTektonConfig
というopenshiftオブジェクト内のYAMLであり、クラスターにいくつかのリーダーロールがある場合に表示できます。
問題は、パイプラインサービスアカウントが使用できるデフォルトのsccがユーザーによって制御可能であることです。これは、ネームスペース定義内のラベルを使用して行うことができます。たとえば、次のyaml定義を持つネームスペースを作成できる場合:
Tektonのドキュメントによると、TektonConfig
オブジェクトにラベルを追加することで、sccのオーバーライドを制限する方法が記載されています。
このラベルはmax-allowed
と呼ばれます。