Skip to main content
本产品推出了新版本。
简体中文版经机器翻译而成,仅供参考。如与英语版出现任何冲突,应以英语版为准。

POD安全标准(PSS)和安全上下文限制(SCC)

贡献者

Kubernetes Pod安全标准(PSS)和Pod安全策略(PSP)定义权限级别并限制Pod的行为。OpenShift安全上下文约束(SCC)同样定义了特定于OpenShift Kubernetes引擎的POD限制。为了提供此自定义设置、Astra Trident会在安装期间启用某些权限。以下各节详细介绍了Astra Trident设置的权限。

备注 PSS将取代Pod安全策略(PSP)。PSP已在Kubernetes v1.21中弃用、并将在v1.25中删除。有关详细信息,请参见 "Kubernetes:安全性"

所需的Kubernetes安全上下文和相关字段

权限 Description

特权

CSI要求挂载点为双向挂载点、这意味着Trident节点POD必须运行特权容器。有关详细信息,请参见 "Kubernetes:挂载传播"

主机网络连接

iSCSI守护进程所需的。 iscsiadm 管理iSCSI挂载并使用主机网络连接与iSCSI守护进程进行通信。

主机IPC

NFS使用进程间通信(Interprocess Communication、IPC)与NFSD进行通信。

主机PID

需要启动 rpc-statd 对于NFS。Astra Trident会查询主机进程以确定是否 rpc-statd 正在挂载NFS卷之前运行。

功能

SYS_ADMIN 此功能是特权容器的默认功能的一部分。例如、Docker为有权限的容器设置了以下功能:
CapPrm: 0000003fffffffff
CapEff: 0000003fffffffff

Seccomp

Seccomp配置文件在特权容器中始终处于"非受限"状态;因此、无法在Astra Trident中启用它。

SELinux

在OpenShift上、特权容器在中运行 spc_t ("超级特权容器")域和无特权容器在中运行 container_t 域。开启 containerd、使用 container-selinux 安装后、所有容器都会在中运行 spc_t 域、这会有效禁用SELinux。因此、Astra Trident不会添加 seLinuxOptions 到容器。

DAC

有权限的容器必须以root用户身份运行。非特权容器以root用户身份运行、以访问CSI所需的UNIX套接字。

POD安全标准(PSS)

Label Description Default

pod-security.kubernetes.io/enforce

pod-security.kubernetes.io/enforce-version

允许将Trident控制器和节点收入安装命名空间。请勿更改命名空间标签。

enforce: privileged

enforce-version: <version of the current cluster or highest version of PSS tested.>

警告 更改命名空间标签可能会导致Pod未计划、出现"创建时出错:…​"或"警告:Trident CSI -…​"。如果发生这种情况、请检查的命名空间标签 privileged 已更改。如果是、请重新安装Trident。

POD安全策略(PSP)

字段 Description Default

allowPrivilegeEscalation

有权限的容器必须允许权限升级。

true

allowedCSIDrivers

Trident不使用实时CSI临时卷。

allowedCapabilities

非特权Trident容器所需的功能不会超过默认设置、而特权容器会获得所有可能的功能。

allowedFlexVolumes

Trident不使用 "FlexVolume驱动程序"、因此它们不会包含在允许的卷列表中。

allowedHostPaths

Trident节点POD挂载节点的根文件系统、因此设置此列表没有好处。

allowedProcMountTypes

Trident不使用任何 ProcMountTypes

allowedUnsageSysctls

Trident不需要任何不安全的 sysctls

defaultAddCapabilities

无需向有权限的容器添加任何功能。

defaultAllowPrivilegeEscalation

允许权限升级在每个Trident POD中进行处理。

false

forbiddenSysctls

sysctls 允许。

fsGroup

Trident容器以root身份运行。

RunAsAny

hostIPC

挂载NFS卷需要主机IPC才能与进行通信 nfsd

true

hostNetwork

iscsiadm要求主机网络与iSCSI守护进程进行通信。

true

hostPID

需要使用主机PID检查是否存在 rpc-statd 正在节点上运行。

true

hostPorts

Trident不使用任何主机端口。

privileged

Trident节点Pod必须运行特权容器才能挂载卷。

true

readOnlyRootFilesystem

Trident节点Pod必须写入节点文件系统。

false

requiredDropCapabilities

Trident节点Pod运行有权限的容器、无法删除功能。

none

runAsGroup

Trident容器以root身份运行。

RunAsAny

runAsUser

Trident容器以root身份运行。

runAsAny

runtimeClass

Trident不使用 RuntimeClasses

seLinux

未设置Trident seLinuxOptions 因为容器运行时间和Kubernetes分发程序处理SELinux的方式目前存在差异。

supplementalGroups

Trident容器以root身份运行。

RunAsAny

volumes

Trident Pod需要这些卷插件。

hostPath, projected, emptyDir

安全上下文限制(SCC)

标签 Description Default

allowHostDirVolumePlugin

Trident节点Pod挂载节点的根文件系统。

true

allowHostIPC

挂载NFS卷需要主机IPC才能与进行通信 nfsd

true

allowHostNetwork

iscsiadm要求主机网络与iSCSI守护进程进行通信。

true

allowHostPID

需要使用主机PID检查是否存在 rpc-statd 正在节点上运行。

true

allowHostPorts

Trident不使用任何主机端口。

false

allowPrivilegeEscalation

有权限的容器必须允许权限升级。

true

allowPrivilegedContainer

Trident节点Pod必须运行特权容器才能挂载卷。

true

allowedUnsafeSysctls

Trident不需要任何不安全的 sysctls

none

allowedCapabilities

非特权Trident容器所需的功能不会超过默认设置、而特权容器会获得所有可能的功能。

defaultAddCapabilities

无需向有权限的容器添加任何功能。

fsGroup

Trident容器以root身份运行。

RunAsAny

groups

此SCC专用于Trident并绑定到其用户。

readOnlyRootFilesystem

Trident节点Pod必须写入节点文件系统。

false

requiredDropCapabilities

Trident节点Pod运行有权限的容器、无法删除功能。

none

runAsUser

Trident容器以root身份运行。

RunAsAny

seLinuxContext

未设置Trident seLinuxOptions 因为容器运行时间和Kubernetes分发程序处理SELinux的方式目前存在差异。

seccompProfiles

有权限的容器始终运行"无限制"。

supplementalGroups

Trident容器以root身份运行。

RunAsAny

users

提供了一个条目、用于将此SCC绑定到Trident命名空间中的Trident用户。

不适用

volumes

Trident Pod需要这些卷插件。

hostPath, downwardAPI, projected, emptyDir