Skip to main content
此產品有較新版本可以使用。
本繁體中文版使用機器翻譯,譯文僅供參考,若與英文版本牴觸,應以英文版本為準。

Pod安全標準(PSS)與安全內容限制(SCC)

貢獻者

Kubernetes Pod安全標準(Ps)和Pod安全政策(Ps)定義權限等級、並限制Pod的行為。OpenShift Security內容限制(SCC)同樣定義OpenShift Kubernetes Engine特有的Pod限制。為了提供此自訂功能、Astra Trident可在安裝期間啟用特定權限。以下各節詳細說明Astra Trident設定的權限。

註 PSS-取代Pod安全性原則(PSP)。在Kubernetes v1.21中、已不再使用PSP、將在v1.25中移除。如需詳細資訊"Kubernetes:安全性"、請參閱。

必要的Kubernetes安全內容和相關欄位

權限 說明

權限

SCSI需要雙向裝載點、這表示Trident節點Pod必須執行特殊權限容器。如需詳細資訊、請 "Kubernetes:掛載傳播"參閱。

主機網路

iSCSI 常駐程式所需。 `iscsiadm`管理 iSCSI 掛載、並使用主機網路與 iSCSI 常駐程式通訊。

主機iPC

NFS使用程序間通訊(IPC)與nfsd通訊。

主機 PID

啟動 NFS 所需 rpc-statd。Astra Trident 會查詢主機程序、以判斷是否 `rpc-statd`在裝載 NFS 磁碟區之前執行。

功能

SYS_ADMIN`功能是權限容器預設功能的一部分。例如、 Docker 會為權限容器設定以下功能:
`CapPrm: 0000003fffffffff

CapEff: 0000003fffffffff

Seccomp

Seccomp設定檔在特殊權限容器中一律為「未限制」、因此無法在Astra Trident中啟用。

SELinux

在 OpenShift 上、權限容器會在(「超級貴賓 Container 」)網域中執行 spc_t、而非權限容器則會在網域中執行 container_t。在上 containerd、安裝後 container-selinux、所有容器都會在網域中執行 spc_t、這會有效停用 SELinux 。因此、 Astra Trident 不會新增 `seLinuxOptions`至容器。

DAC

權限容器必須以root身分執行。非權限容器會以root身分執行、以存取csi所需的UNIX通訊端。

Pod安全標準(PSS)

標籤 說明 預設

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:Cig-…​」。如果發生這種情況、請檢查的命名空間標籤是否 `privileged`已變更。如果是、請重新安裝Trident。

Pod安全原則(PSP)

欄位 說明 預設

allowPrivilegeEscalation

特殊權限容器必須允許權限提高。

true

allowedCSIDrivers

Trident不使用即時的csi暫時性磁碟區。

空白

allowedCapabilities

非權限Trident容器不需要比預設集更多的功能、而且會將所有可能的功能授予權限容器。

空白

allowedFlexVolumes

Trident 不使用"FlexVolume驅動程式",因此它們不包括在允許的卷列表中。

空白

allowedHostPaths

Trident節點Pod會掛載節點的根檔案系統、因此設定此清單沒有任何好處。

空白

allowedProcMountTypes

Trident 不使用任何 ProcMountTypes

空白

allowedUnsafeSysctls

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需要這些Volume外掛程式。

hostPath, projected, emptyDir

安全內容限制(SCC)

標籤 說明 預設

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需要這些Volume外掛程式。

hostPath, downwardAPI, projected, emptyDir