问题描述
我们在Dockerfile和入口点Shell脚本中拥有“默认”用户,需要在运行时执行。当我们将其部署到Openshift集群(4.6)中时,pod拥有不同的用户,并且由于此入口点外壳脚本失败,因此应用程序无法启动。要求您提出建议,即使在POD中与用户一起执行这些Shell脚本
解决方法
Openshift提供了安全上下文约束(SCC)来控制Pod的权限。使用它们,您可以控制容器或容器集合可以执行的权限/操作以及它们可以访问的资源。 SCC允许管理员控制的几件事:
- pod是否可以运行特权容器。
- 容器的SELinux上下文。
- 容器用户ID。
- 拥有吊舱体积的
FSGroup
的分配。- 允许的补充组的配置。
- 容器是否需要使用只读的根文件系统。
- 卷类型的用法。
SCC由控制窗格可访问的安全功能的设置和策略组成。如果我正确理解了您的问题,则需要检查RunAsUser
策略:
-
MustRunAs
-需要配置runAsUser
。使用配置的runAsUser
作为默认值。针对已配置的runAsUser
进行验证。 -
MustRunAsRange
-如果不使用预分配的值,则需要定义最小值和最大值。使用最小值作为默认值。在整个允许范围内进行验证。 -
MustRunAsNonRoot
-要求以非零的runAsUser
提交pod或在图像中定义USER
指令。没有提供默认设置。 -
RunAsAny
-未提供默认值。允许指定任何runAsUser
。
有关更多信息,请查看official openshift docs。