(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【OpenShift/SCC】Podで起動しているアプリケーションをroot権限で実行する

スポンサーリンク

やりたいこと

Podを起動するもログに

Permission denied

と表示されるため、特権ユーザで起動したい。

環境情報
$ ibmcloud oc cluster ls
...
OK
名前                    ID                     状態     作成日        ワーカー   ロケーション   バージョン              リソース・グループ名   プロバイダー
X   ...   normal   ..  3          Tokyo          4.6.X_openshift   Default                classic

やり方

プロジェクト内にサービスアカウントを新規作成して

$ oc create sa testz
serviceaccount/testz created

同サービスアカウントにanyuidというSCCの権限を与えて

$ oc adm policy add-scc-to-user anyuid -z testz
clusterrole.rbac.authorization.k8s.io/system:openshift:scc:anyuid added: "testz"

該当するPodが起動するDeploymentにサービスアカウントをsetする。

$ oc set sa deployment/mongodb testz
deployment.apps/mongodb serviceaccount updated

以下にて同Podがイメージで指定されている通りroot権限で実行されていることが確認できる。

$ oc exec -it mongodb-5bc87db5bf-h5kbz sh
# whoami
root

以下、補足です。

補足

セキュリティコンテキストにてこれらを実現します。

同作業をするまではOpenshiftの仕様で別なユーザIDが割り当てられるので

$ oc exec -it mongodb-6746f8f765-6gcqz sh
$ whoami
1000670000

アプリケーションによっては以下のようにパーミッションでエラーとなります。

...  I STORAGE  [main] In File::open(), ::open for '//.mongorc.js' failed with Permission denied
...[main] Error saving history file: FileOpenFailed: Unable to open() file //.dbshell: Permission denied

以上、ご参考になれば幸いです。