第6章 非 root ユーザーとして Buildah を使用したコンテナーイメージのビルド
コンテナーで root ユーザーとして OpenShift Pipelines を実行すると、コンテナープロセスとホストが他の悪意のあるリソースにさらされる可能性があります。コンテナー内の特定の root 以外のユーザーとしてワークロードを実行すると、このタイプの露出を減らすことができます。
ほとんどの場合は、イメージを構築するためのカスタムタスクを作成し、このタスクでユーザー namespace を設定することで、root 権限なしで Buildah を実行できます。
この設定を使用してイメージが正常にビルドされない場合は、カスタムサービスアカウント (SA) およびセキュリティーコンテキスト制約 (SCC) 定義を使用できます。ただし、このオプションを使用する場合は、Buildah ステップを有効にして権限を上げる必要があります (allowPrivilegeEscalation: true)。
6.1. ユーザー namespace を設定して非ルートユーザーとして Buildah を実行する リンクのコピーリンクがクリップボードにコピーされました!
ユーザー namespace を設定することは、非 root ユーザーとしてタスクで Buildah を実行する最も簡単な方法です。ただし、このオプションを使用しても一部のイメージはビルドされない可能性があります。
前提条件
-
ocコマンドラインユーティリティーがインストールされました。
手順
openshift-pipelinesnamespace で提供されている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-userCopy 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タスクを使用して、パイプラインでイメージをビルドします。