第3章 Pod のセキュリティーコンテキストの設定
OpenShift Pipelines が開始する Pod のデフォルトのサービスアカウントは、Pipeline
です。pipeline
サービスアカウントに関連付けられた Security Context Constraint (SCC) は、pipelines-scc
です。pipelines-scc
SCC は anyuid
SCC に基づいていますが、次の YAML 仕様で定義されているように若干の違いがあります。
pipelines-scc.yaml
スニペットの例
apiVersion: security.openshift.io/v1 kind: SecurityContextConstraints # ... allowedCapabilities: - SETFCAP # ... fsGroup: type: MustRunAs # ...
さらに、OpenShift Pipelines の一部として提供される Buildah
タスクは、デフォルトのストレージドライバーとして vfs
を使用します。
OpenShift Pipelines がパイプライン実行およびタスク実行用に作成する Pod のセキュリティーコンテキストを設定できます。次の変更を加えることができます。
- すべての Pod のデフォルトおよび最大 SCC を変更する
- 特定の namespace でのパイプライン実行およびタスク実行用に作成された Pod のデフォルト SCC を変更する
- カスタム SCC およびサービスアカウントを使用するように特定のパイプライン実行またはタスク実行を設定する
すべてのイメージを確実にビルドできるように buildah
を実行する最も簡単な方法は、特権
SCC を使用して Pod 内で root として実行することです。より制限的なセキュリティー設定で buildah
を実行する手順は、root 以外のユーザーとして Buildah を使用したコンテナーイメージのビルド を参照してください。
3.1. OpenShift Pipelines が作成する Pod のデフォルトおよび最大 SCC の設定
OpenShift Pipelines がタスク実行およびパイプライン実行用に作成するすべての Pod に対して、デフォルトの security context constraint (SCC) を設定できます。最大 SCC を設定することもできますが、これは、任意の namespace 内のこれらの Pod に対して設定できる最も制限の少ない SCC です。
手順
次のコマンドを入力して、
TektonConfig
カスタムリソース (CR) を編集します。$ oc edit TektonConfig config
次の例のように、仕様でデフォルトと最大の SCC を設定します。
apiVersion: operator.tekton.dev/v1alpha1 kind: TektonConfig metadata: name: config spec: # ... platforms: openshift: scc: default: "restricted-v2" 1 maxAllowed: "privileged" 2
- 1
spec.platforms.openshift.scc.default
は、OpenShift Pipelines がワークロードに使用されるサービスアカウント (SA) にアタッチするデフォルトの SCC (デフォルトではpipeline
SA) を指定します。この SCC は、すべてのパイプライン実行 Pod とタスク実行 Pod に使用されます。- 2
spec.platforms.openshift.scc.maxAllowed
は、任意の namespace のパイプライン実行 Pod およびタスク実行 Pod に対して設定できる最も制限の少ない SCC を指定します。この設定は、特定のパイプライン実行またはタスク実行でカスタム SA および SCC を設定する場合には適用されません。