Red Hat OpenShift Container Platform 上的基本安全功能部件
Cloud Pak for Data 基于 OpenShift® 安全功能部件进行构建,这些功能部件通过强大的加密控制来保护敏感客户数据,并改进应用程序和平台之间的访问控制。
特征
Red Hat® OpenShift Container Platform 支持改进的安全态势,增加了许多功能,大大提高了平台的安全性。
- 使用 Red Hat CoreOS 作为不可改变的主机操作系统。
- 通过符合 FIPS(联邦信息处理标准)的加密(第一级 FIPS 140-2),提供更强健的平台安全性。 有关更多信息,请参阅 支持 FIPS 的服务
- 使用 Node Tuning Operator,这提供了在安全上下文约束 (SCC) 中进一步减少特权需求的机会。 有关更多信息,请参阅 使用 Node Tuning Operator。
- 支持对存储在 etcd 中的数据进行加密,这为存储在 etcd 数据库中的私钥提供额外保护。 有关更多信息,请参阅 加密 etcd 数据。
- 提供网络绑定磁盘加密 (NBDE) 功能部件,可用于自动远程启用 LUKS 加密卷,从而更好地防止针对主机存储器的物理窃取。
- 在 Red Hat OpenShift Container Platform上启用必需的 SELinux。
服务帐户和角色
Cloud Pak for Data 在 OpenShift 集群上的单独名称空间或项目中运行。 在 OpenShift 项目中, Cloud Pak for Data 会创建服务帐户和 RBAC 角色绑定,以供 pod 在该名称空间中使用。
- 不允许进行集群级别的访问。 所有角色都会施加限制,只允许在该名称空间中工作。
- 将会创建两个角色:
cpd-admin-role和cpd-viewer-role。 这些角色允许 Cloud Pak for Data 确保即使在同一名称空间中也可以应用最少特权原则。 - 已创建四个服务帐户:
zen-admin-sa、zen-editor-sa、zen-viewer-sa和zen-norbac-sa。 没有任何 SCC 显式绑定到这些服务帐户,因此缺省情况下,它们会选取受限的 SCC。 - 不会向在每个 OpenShift 项目中自动创建的缺省服务帐户授予任何 RBAC 特权; 即,不会绑定任何角色。
- 预期是缺省服务帐户将用于用户工作负载,例如,Notebook 和 Python 作业。 不允许在名称空间内执行任何类型的操作。
- 缺省服务帐户与受限安全上下文约束 (SCC) 相关联。 但是,某些附加服务可能仍需要定制 SCC,例如,用于支持 IPC。 更多信息,请参阅 IBM® Cloud Platform Common Services 文档中的安全上下文约束。
但是,如果计划安装某些 Cloud Pak for Data 服务,那么可能需要创建一些定制 SCC。 有关更多信息,请参阅 为服务创建必需的安全上下文约束。
服务 UID
服务使用基于安装了 UID 的 Red Hat OpenShift Container Platform 项目的 UID。
创建项目时, Red Hat OpenShift 会将唯一范围的 UID 分配给该项目。 要确定与项目关联的 UID ,请运行以下命令:
oc describe project project-name
将 project-name 替换为安装了 Cloud Pak for Data 的项目的名称。
此外,如果服务使用定制 SCC ,那么它会保留一个或多个 UID:- Db2® 即服务 受限 SCC 保留 UID 500。
- IBM® Db2 SCC 保留以下 UID: 500, 501, 505, 600, 700和 1001。
- SCC 保留 UID xml-ph-0000@deepl.internal 。 Watson Knowledge Catalog SCC保留UID 10032 。
有关哪些服务使用这些 SCC 的详细信息,请参阅 服务的定制 SCC。
安全强化
在 Red Hat OpenShift上的 Cloud Pak for Data 上实施安全性强化。 将会采取下列安全强化措施:
- 只有非 root 用户进程可以在容器中运行。 这些进程的 UID 完全位于 OpenShift Project 的预定义范围内,通过使用受限 SCC 来实施。 受限 SCC 不允许以 root 用户身份运行容器。注意: 某些服务仍然需要固定的 UID。 此类服务使用定制 SCC 来实现此目的。
- Cloud Pak for Data 工作负载在运行时不需要集群管理员特权。 只有在设置项目和定制 SCC(仅针对确实需要它们的服务)时,才需要集群管理员权限。 每个 Cloud Pak for Data 实例中的服务帐户都被授予仅在其 OpenShift 项目中限定作用域的特权。
- Cloud Pak for Data 用户通常未被授予 OpenShift Kubernetes 访问权,即使是这样,也仅用于在其分配的 OpenShift 项目中安装或升级服务的明确目的。
- 严格使用具有 RBAC 特权的服务帐户,并应用最小特权原则。 Cloud Pak for Data 确保不会向运行用户代码 (例如脚本或分析环境) 的任何 pod 授予任何 RBAC 特权。
- 在运行时, Cloud Pak for Data 工作负载不需要主机访问权。 此限制由 SCC 实施。 无法访问主机路径或网络。
- 所有 Pod 的资源使用量都受限。 对于每个 Pod 都会设置 Pod 资源请求和限制,从而限制使用量。 这种方法有助于避免与繁忙的相邻 Pod 争用资源。
- 每个 pod 都存在可靠性标尺(活跃度和就绪探测器),以确保 pod 正常工作。
- 对于使用情况监视, Cloud Pak for Data 上的每个 pod 都使用测量注释进行注释,以唯一地标识集群上的附加组件服务工作负载。
安装期间的规范安全性实践
您不需要通过 SSH 到 OpenShift 集群节点来部署或管理 Cloud Pak for Data 及其附加组件服务。 命令行界面和xml-ph-0000@deepl.internal命令行界面用于部署和管理xml-ph-0001@deepl.internal平台运营商及其服务。 OpenShiftoc 命令行界面和 cloudctl 命令行界面用于部署和管理 IBM Cloud Pak® for Data 平台运营商及其服务。
可以将软件安装在连接到因特网的集群上,或安装在气隙式集群上。
- 在连接到因特网的集群上安装 Cloud Pak for Data
- 访问映像时为提高安全性和确保可靠性的建议操作。 强烈建议您使用客户机工作站中的
cloudctl实用程序将 CASE 软件包和镜像映像从 IBM Entitled Registry 和其他公共容器注册表下载到专用容器注册表中。 - 在气郄式集群上安装 Cloud Pak for Data
- Cloud Pak for Data 支持将映像镜像到专用容器注册表。 此过程不要求专用容器注册表和 Red Hat OpenShift Container Platform 集群能够访问因特网。 您可以使用
cloudctl实用程序从防御节点下载 CASE 软件包和镜像。 如果堡垒节点没有对专用容器注册表的直接访问权,那么可以使用中间容器注册表。 通过使用中间容器注册表,您可以先在堡垒节点上镜像映像。 然后,您从有权访问专用容器注册表的网络中传输这些映像。 因此, Red Hat OpenShift Container Platform 集群将配置为从专用容器注册表中拉取。 这样您就可以安装 Cloud Pak for Data 操作程序和服务,而无需访问因特网。 - 名称空间范围和操作程序特权
- Cloud Pak for Data 使用 "操作程序" 模式来管理其工作负载,这允许区分问题。 这样,将授予驻留在一个中央名称空间中的操作程序访问权,以管理多个不同 "实例" 名称空间中的 Cloud Pak for Data 服务工作负载。 因此,可向这些实例名称空间中的用户授予较少的特权,范围限定为该名称空间。 操作程序的作用域也限定为仅在这些特定名称空间中运行,并且根据设计,不允许操作程序管理集群中的非Cloud Pak for Data 名称空间。您需要以下范围和用户特权。
- 要安装操作程序目录源,您需要具有 openshift-marketplace 名称空间中的特权的 Red Hat OpenShift Container Platform 用户。
- 要为 OperatorGroup 创建“自己的名称空间”方式,并为所需操作程序创建所有预订,您需要在 ibm-common-services 或 cpd-operators 中具有特权的用户。注: 出于安全原因,建议不要使用 OperatorGroup 的 "所有名称空间" 方式。
- 要限制操作员有权限的命名空间, Cloud Pak for Data 操作员有权限的命名空间,请使用 IBM Cloud Pak 基础服务命名空间范围操作员。 您可以扩展操作员对更多 Cloud Pak for Data 实例名称空间的访问权,然后在其中部署服务工作负载。 有关更多信息,请参阅 授权基础服务对名称空间中的工作负载执行操作。
- 要创建定制资源以部署个别 Cloud Pak for Data 服务或在安装后对其进行升级或缩放,您需要在 "实例" 名称空间中具有项目管理特权的用户。
- 集群管理员职责
- 集群管理员应管理 OpenShift 集群,并准备该集群以供 Cloud Pak for Data 服务使用。 这类任务包括:
- 内核设置和 cri-o 设置的节点调整和机器池配置(例如,pids-limit 和 ulimit)。
- 仅适用于需要它们的服务。
- 设置映像内容源策略及所有私钥。
- 已完成用于从专用容器注册表中拉取映像的设置。
- 创建 OpenShift 项目。
- IBM Cloud Pak 基础服务和运营商。
- 配置名称空间。
- 定义名称空间限额和限制范围。
- 创建定制 SCC。
- 仅适用于需要它们的服务。
- 存储安装和配置。
- 工作负载使用的存储器。
- 安全地管理 OpenShift。
- 处理加密和审计以及其他操作,例如,添加节点、替换节点等等。