第6章 非 root ユーザーとして Buildah を使用したコンテナーイメージのビルド
コンテナーで root ユーザーとして OpenShift Pipelines を実行すると、コンテナープロセスとホストが他の悪意のあるリソースにさらされる可能性があります。コンテナー内の特定の root 以外のユーザーとしてワークロードを実行すると、このタイプの露出を減らすことができます。
ほとんどの場合は、イメージを構築するためのカスタムタスクを作成し、このタスクでユーザー namespace を設定することで、root 権限なしで Buildah を実行できます。
この設定を使用してイメージが正常にビルドされない場合は、カスタムサービスアカウント (SA) およびセキュリティーコンテキスト制約 (SCC) 定義を使用できます。ただし、このオプションを使用する場合は、Buildah ステップを有効にして権限を上げる必要があります (allowPrivilegeEscalation: true
)。
6.1. ユーザー namespace を設定して非ルートユーザーとして Buildah を実行する リンクのコピーリンクがクリップボードにコピーされました!
ユーザー namespace を設定することは、非 root ユーザーとしてタスクで Buildah を実行する最も簡単な方法です。ただし、このオプションを使用しても一部のイメージはビルドされない可能性があります。
前提条件
-
oc
コマンドラインユーティリティーがインストールされました。
手順
openshift-pipelines
namespace で提供されているbuildah
タスクのコピーを作成し、そのコピーの名前をbuildah-as-user
に変更するには、次のコマンドを入力します。oc get task buildah -n openshift-pipelines -o yaml | yq '. |= (del .metadata |= with_entries(select(.key == "name" )))' | yq '.kind="Task"' | yq '.metadata.name="buildah-as-user"' | oc create -f -
$ oc get task buildah -n openshift-pipelines -o yaml | yq '. |= (del .metadata |= with_entries(select(.key == "name" )))' | yq '.kind="Task"' | yq '.metadata.name="buildah-as-user"' | oc create -f -
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、コピーした
buildah
タスクを編集します。oc edit task buildah-as-user
$ oc edit task buildah-as-user
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 新しいタスクで、次の例に示すように、
annotations
とstepTemplate
セクションを作成します。buildah-as-user
タスクへの追加例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
podTemplate
が使用されるため、runAsUser:
設定は厳密には必要ありません。
-
新しい
buildah-as-user
タスクを使用して、パイプラインでイメージをビルドします。