Db2 Warehouse에 대한 사용자 정의 보안 컨텍스트 제한조건 작성

해당 Db2 Warehouse 서비스는 사용자 정의 보안 컨텍스트 제약 조건(SCC)이 필요합니다.

SMP 데이터베이스의 기본 SCC

SMP Db2 Warehouse 인스턴스를 생성하면 SCC가 자동으로 <NAMESPACE>-c-db2wh-<INSTANCE_ID>-scc 생성됩니다.

SCC의 내용은. 노드 설정을 변경하여 안전하지 않은 sysctl 변경을 허용하도록 Db2U 합니다을 변경하는지에 따라 달라집니다.


노드 설정을 변경하지 않습니다

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:
- '*'

MPP 데이터베이스의 기본 SCC

MPP Db2 Warehouse 인스턴스를 생성하면 SCC가 자동으로 <NAMESPACE>-c-db2wh-<INSTANCE_ID>-scc 생성됩니다.

SCC의 내용은. 노드 설정을 변경하여 안전하지 않은 sysctl 변경을 허용하도록 Db2U 합니다을 변경하는지에 따라 달라집니다.


노드 설정을 변경하지 않습니다
allowHostDirVolumePlugin: true
allowHostIPC: true
allowHostNetwork: false
allowHostPID: false
allowHostPorts: true
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: true
allowHostNetwork: false
allowHostPID: false
allowHostPorts: true
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
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
CAP_DAC_OVERRIDE 및 CAP_DAC_READ_SEARCH에서 수행되는 조작을 제외하고 파일의 UID(예: chmod(2), utime(2))와 일치시키기 위해 일반적으로 프로세스의 파일 시스템 UID를 요구하는 조작에 대한 권한 검사를 우회합니다.
SETGID
에스컬레이션된 그룹 권한으로 Db2 Warehouse 엔진 프로세스를 실행하는 데 필요합니다.
SETUID
에스컬레이션된 사용자 권한으로 Db2 Warehouse 엔진 프로세스를 실행하는 데 필요합니다.
CHOWN
chown을 실행하여 지속적 볼륨의 파일/디렉토리 소유권을 변경하기 위해 필요합니다.
DAC_OVERRIDE
파일 읽기, 쓰기 및 실행을 위한 권한 검사를 우회합니다.
SYS_RESOURCE
예약, 메모리 할당 및 자원 한계에 대한 조작을 허용합니다. 최대 메모리 할당은 여전히 이 시스템 기능으로 겹쳐쓸 수 없는 memory cgroup(memcg) 한계를 통해 제한됩니다. Db2 Warehouse 데이터베이스 엔진에서 자원 한계(IE.ulimits)를 늘리기 위해 이 시스템 기능이 필요합니다.
IPC_OWNER
IPC 오브젝트의 조작에 대한 권한 검사를 우회합니다. IPC 커널 매개변수가 호스트/작업자 노드에서 최대 값으로 설정된 경우에도 Db2 Warehouse 엔진은 여전히 이러한 값을 동적으로 조정하려고 합니다. 이 시스템 기능은 호스트와 IPC 네임스페이스를 공유하는 기능과 함께 제공됩니다.
SYS_NICE
프로세스의 우선순위를 변경하도록 허용합니다. 각각의 컨테이너에 고유한 PID 네임스페이스가 존재하기 때문에 이 기능은 해당 컨테이너에만 적용됩니다. Db2 Warehouse 데이터베이스 엔진은 WLM(Work Load Management) 및 FCM(Fast Communications Manager) 처리의 우선순위가 일반 에이전트 작업보다 높게 유지되도록 프로세스 스레드 우선순위 지정을 사용합니다.
FSETID
파일 수정 시 setuid 및 setgid 모드 비트가 지워지지 않도록 방지합니다.
SETFCAP
파일에서 기능을 설정하는 데 사용됩니다.
SETPCAP
프로세스에서 기능을 설정하는 데 사용됩니다.
"SYS_CHROOT"
chroot 명령을 사용하는 데 필요합니다.
KILL
신호를 보내기 위한 권한 검사를 무시합니다. 프로세스를 관리하는 동안 신호 처리에 필요합니다.
AUDIT_WRITE
SELinux를 사용하는 경우 커널 감사 로그에 레코드를 기록하는 데 필요합니다.