Db2 创建自定义安全上下文约束

Db2 服务需要自定义安全上下文约束 (SCC)。

缺省 SCC

创建 Db2 实例时,会自动创建名为 <NAMESPACE>-c-db2oltp-<INSTANCE_ID>-scc 的 SCC。

SCC 的内容取决于您是否更改 节点设置以允许 Db2U 进行不安全的 sysctl 更改


不更改节点设置
allowHostDirVolumePlugin: true
allowHostIPC: false
allowHostNetwork: false
allowHostPID: false
allowHostPorts: false
allowPrivilegeEscalation: true
allowPrivilegedContainer: true
allowedCapabilities:
- FOWNER
- SETGID
- SETUID
- CHOWN
- DAC_OVERRIDE
- SYS_RESOURCE
- IPC_OWNER
- SYS_NICE
- FSETID
- SETFCAP
- SETPCAP
- SYS_CHROOT
- KILL
- AUDIT_WRITE
apiVersion: security.openshift.io/v1
defaultAddCapabilities: null
fsGroup:
  type: RunAsAny
groups: []
kind: SecurityContextConstraints
metadata:
  name: ${SCC_NAME}
priority: 10
readOnlyRootFilesystem: false
requiredDropCapabilities:
- ALL
runAsUser:
  type: RunAsAny
seLinuxContext:
  type: MustRunAs
supplementalGroups:
  type: RunAsAny
users:
- system:serviceaccount:${PROJECT_CPD_INST_OPERANDS}:${SERVICE_ACCOUNT}
volumes:
- '*'

更改节点设置以允许 Db2U 进行不安全的 sysctl 更改
allowHostDirVolumePlugin: false
allowHostIPC: false
allowHostNetwork: false
allowHostPID: false
allowHostPorts: false
allowPrivilegeEscalation: true
allowPrivilegedContainer: false
allowedCapabilities:
- FOWNER
- SETGID
- SETUID
- CHOWN
- DAC_OVERRIDE
- SYS_RESOURCE
- IPC_OWNER
- SYS_NICE
- FSETID
- SETFCAP
- SETPCAP
- SYS_CHROOT
- KILL
- AUDIT_WRITE
allowedUnsafeSysctls:
- kernel.shmmni
- kernel.shmmax
- kernel.shmall
- kernel.sem
- kernel.msgmni
- kernel.msgmax
- kernel.msgmnb
apiVersion: security.openshift.io/v1
defaultAddCapabilities: null
fsGroup:
  type: RunAsAny
groups: []
kind: SecurityContextConstraints
metadata:
  name: ${SCC_NAME}
priority: 10
readOnlyRootFilesystem: false
requiredDropCapabilities:
- ALL
runAsUser:
  type: MustRunAsNonRoot
seLinuxContext:
  type: MustRunAs
supplementalGroups:
  type: RunAsAny
users:
- system:serviceaccount:${PROJECT_CPD_INST_OPERANDS}:${SERVICE_ACCOUNT}
volumes:
- '*'

允许的功能的扩展描述

FOWNER
针对通常需要进程的文件系统 UID 与文件 UID 相匹配的操作(例如,chmod(2)、utime(2),但不包括 CAP_DAC_OVERRIDE 和 CAP_DAC_READ_SEARCH 所覆盖的操作)绕过许可权检查。
SETGID
需要带升级组特权运行 Db2 引擎流程。
SETUID
需要带升级用户特权运行 Db2 引擎流程。
CHOWN
需要此功能,才能运行 chown 以更改持久卷中文件/目录的所有权。
DAC_OVERRIDE
绕过文件读取、写入和执行的许可权检查。
SYS_RESOURCE
允许操纵预留、内存分配和资源限制。 最大内存分配仍受内存 cgroup (memcg) 限制约束,该限制不能被此系统功能覆盖。 Db2 数据库引擎需要此系统功能来提高资源限制 (IE.ulimits)。
IPC_OWNER
绕过对 IPC 对象的操作的许可权检查。 即使 IPC 内核参数在主机/工作程序节点上设置为最大值,但 Db2 引擎仍会尝试动态调整这些值。 提供此系统功能是对与主机共享 IPC 名称空间的补充。
SYS_NICE
允许更改进程优先级。 因为每个容器都有自己的 PID 名称空间,所以此功能仅适用于该容器。 Db2 数据库引擎依赖于进程线程优先级划分,以确保工作负载管理 (WLM) 和快速通信管理器 (FCM) 处理优先于通用代理程序工作。
FSETID
当文件被修改时,阻止清除 setuid 和 setgid 方式位。
SETFCAP
用于对文件设置功能。
SETPCAP
用于对进程设置功能。
SYS_CHROOT
需要此功能,才能使用 chroot 命令。
KILL
在发送信号时绕过许可权检查。 需要此功能,才能在进程管理期间进行信号处理。
AUDIT_WRITE
需要此功能,才能在启用 SELinux 的情况下将记录写入内核审计日志。