Pod 安全标准 (PSS) 和安全上下文约束 (SCC)
Kubernetes Pod 安全标准 (PSS) 和 Pod 安全策略 (PSP) 定义权限级别并限制 Pod 的行为。OpenShift 安全上下文约束 (SCC) 同样定义了特定于 OpenShift Kubernetes 引擎的 Pod 限制。为了提供这种定制,Trident 在安装期间启用某些权限。以下各节详细介绍 Trident 设置的权限。
|
|
PSS 取代了 Pod Security Policies (PSP)。PSP 在 Kubernetes v1.21 中被弃用,并将在 v1.25 中删除。有关详细信息,请参阅 "Kubernetes:安全"。 |
必需的 Kubernetes 安全上下文和相关字段
| 权限 | 说明 |
|---|---|
特权 |
CSI 要求挂载点为双向,这意味着 Trident 节点 Pod 必须运行特权容器。有关详细信息,请参阅 "Kubernetes:挂载传播"。 |
主机网络 |
iSCSI 守护程序所需。 `iscsiadm`管理 iSCSI 挂载并使用主机网络与 iSCSI 守护程序通信。 |
主机 IPC |
NFS 使用进程间通信 (IPC) 与 NFSD 通信。 |
主机 PID |
需要启动 |
功能 |
该 |
Seccomp |
Seccomp 配置文件在特权容器中始终为"Unconfined";因此,它不能在 Trident 中启用。 |
SELinux |
在 OpenShift 上,特权容器在 |
DAC |
特权容器必须以 root 身份运行。非特权容器以 root 身份运行,以访问 CSI 所需的 unix 套接字。 |
Pod 安全标准 (PSS)
| 标签 | 说明 | 默认 |
|---|---|---|
|
允许 Trident 控制器和节点进入安装命名空间。请勿更改命名空间标签。 |
|
|
|
更改命名空间标签可能会导致 pod 未被调度,出现"Error creating: …"或"Warning: trident-csi-…"。如果发生这种情况,请检查 privileged 的命名空间标签是否已更改。如果是,请重新安装 Trident。
|
Pod 安全策略 (PSP)
| 字段 | 说明 | 默认 |
|---|---|---|
|
特权容器必须允许特权提升。 |
|
|
Trident 不使用内联 CSI 短暂卷。 |
空 |
|
非特权 Trident 容器不需要比默认设置更多的功能,特权容器被授予所有可能的功能。 |
空 |
|
Trident 不使用 "FlexVolume 驱动程序",因此它们不包括在允许的卷列表中。 |
空 |
|
Trident 节点 Pod 挂载节点的根文件系统,因此设置此列表没有任何好处。 |
空 |
|
Trident 不使用任何 |
空 |
|
Trident 不需要任何不安全的 |
空 |
|
特权容器中不需要添加任何功能。 |
空 |
|
允许权限提升在每个 Trident pod 中处理。 |
|
|
不允许 |
空 |
|
Trident 容器以 root 身份运行。 |
|
|
装载 NFS 卷需要主机 IPC 与 `nfsd`进行通信 |
|
|
iscsiadm 要求主机网络与 iSCSI 后台程序进行通信。 |
|
|
需要主机 PID 来检查 `rpc-statd`是否在节点上运行。 |
|
|
Trident 不使用任何主机端口。 |
空 |
|
Trident 节点 Pod 必须运行特权容器才能挂载卷。 |
|
|
Trident 节点 Pod 必须写入节点文件系统。 |
|
|
Trident 节点 Pod 运行特权容器,不能丢弃功能。 |
|
|
Trident 容器以 root 身份运行。 |
|
|
Trident 容器以 root 身份运行。 |
|
|
Trident 不使用 |
空 |
|
Trident 没有设置 |
空 |
|
Trident 容器以 root 身份运行。 |
|
|
Trident Pod 需要这些卷插件。 |
|
安全上下文约束 (SCC)
| 标签 | 说明 | 默认 |
|---|---|---|
|
Trident 节点 Pod 挂载节点的根文件系统。 |
|
|
装载 NFS 卷需要主机 IPC 与 `nfsd`进行通信。 |
|
|
iscsiadm 要求主机网络与 iSCSI 后台程序进行通信。 |
|
|
需要主机 PID 来检查 `rpc-statd`是否在节点上运行。 |
|
|
Trident 不使用任何主机端口。 |
|
|
特权容器必须允许特权提升。 |
|
|
Trident 节点 Pod 必须运行特权容器才能挂载卷。 |
|
|
Trident 不需要任何不安全的 |
|
|
非特权 Trident 容器不需要比默认设置更多的功能,特权容器被授予所有可能的功能。 |
空 |
|
特权容器中不需要添加任何功能。 |
空 |
|
Trident 容器以 root 身份运行。 |
|
|
此 SCC 特定于 Trident 并绑定到其用户。 |
空 |
|
Trident 节点 Pod 必须写入节点文件系统。 |
|
|
Trident 节点 Pod 运行特权容器,不能丢弃功能。 |
|
|
Trident 容器以 root 身份运行。 |
|
|
Trident 没有设置 |
空 |
|
特权容器始终运行 "Unconfined"。 |
空 |
|
Trident 容器以 root 身份运行。 |
|
|
提供了一个条目来将此 SCC 绑定到 Trident 命名空间中的 Trident 用户。 |
不适用 |
|
Trident Pod 需要这些卷插件。 |
|