第 2 章 Pod Security Admission
Red Hat OpenShift 使用 Pod Security Admission (PSA)为同一 Red Hat OpenShift 集群中的应用程序 pod 应用一组安全规则。在 Cryostat 上下文中,这些应用程序 pod 包含 Cryostat pod 和一个 Report sidecar pod。另外,您可以在 Cryostat 自定义资源(CR)上启用 Report sidecar pod。如果应用程序不符合策略标准,则应用程序无法在 Red Hat OpenShift 集群中运行。
Red Hat OpenShift 4.8 弃用 PodSecurityPolicy API,并使用 PSA。PSA 提供以下优点:
- 包括一个内置控制器,可为应用程序 pod 强制执行 pod 安全标准。
-
包括一组定义三种不同策略的 pod 安全标准:Privileged、
Baseline和Restricted。
在 Red Hat OpenShift 上,您可以使用 PSA 及安全性上下文约束(SCC)为 Red Hat OpenShift 集群定义策略。默认情况下,restricted-v2 SCC 与 Restricted pod 安全标准一致。
默认情况下,Cryostat pod 的安全上下文符合 restricted-v2 SCC,这意味着 Red Hat OpenShift 可以接受强制限制 pod 安全标准的命名空间中 pod。
Restricted 策略要求 Red Hat build of Cryostat Operator 配置容器安全上下文,如下所示:
-
丢弃所有功能 -
将
allowPrivilegeEscaltion设置为false
Restricted 策略要求 Red Hat build of Cryostat Operator 配置 pod 安全上下文,如下所示:
-
将
runAsNonRoot设置为true -
将
seccompProfile设置为RuntimeDefault
另外,Red Hat build of Cryostat Operator 在 Cryostat 应用程序 pod 的 pod 安全上下文中定义 fsGroup,以便 Cryostat 可以在 Red Hat OpenShift 上的持久性存储卷中读取和写入文件。
如果您在符合 Restricted pod 安全标准外还有额外的要求,您可以覆盖 Cryostat 使用的默认安全上下文。
2.1. 配置安全上下文 复制链接链接已复制到粘贴板!
您可以在 Red Hat OpenShift 上的 Cryostat 自定义资源(CR)中指定 pod 和容器安全上下文。安全上下文对 Cryostat pod、Report sidecar pod (在使用时)和每个 pod 的容器应用权限。
如果您更改了 CR 的设置,这些设置会覆盖默认的安全上下文设置。
安全上下文将特定权限应用到 pod 中存在的应用程序。安全上下文无法更改 SCC 策略的条件。您可以创建自定义 SCC 来指示 Red Hat OpenShift 集群对 pod 强制执行严格的权限,如 Pod 可以执行的操作或 Pod 可以访问的资源。
要创建自定义 SCC,您必须具有集群管理权限。您还必须为在集群中运行的任何 pod 创建安全上下文,以便这些 pod 满足自定义 SCC 要求。
SCC 在 Red Hat OpenShift 集群级别和命名空间级别强制实施更改,以便此集群中运行的任何 pod 都接收策略标准。相反,安全性上下文对 pod 是唯一的。
默认情况下,Red Hat build of Cryostat Operator 遵循 Cryostat pod 的 restricted-v2 SCC 策略。
默认情况下,Red Hat build of Cryostat Operator 为 Cryostat 及其组件创建一个服务帐户,如 jfr-datasource 和 grafana。
要使此服务帐户使用自定义 SCC,请执行以下步骤之一:
-
创建一个
Role Binding,将 Cryostat 服务帐户绑定到使用自定义 SCC 的角色。 -
使用
Label Syncer组件指示项目的命名空间遵循 PSA 策略。
Label Syncer 组件超出了本文档的范围。您不能在 Red Hat OpenShift 系统命名空间中使用 Label Syncer 组件,它们通常以 openshift- 标签作为前缀。
在将安全上下文配置为对应用程序 pod 应用特定权限前,请考虑 Red Hat OpenShift 上可能会引入的安全风险。PSA 提供三个通常满足大多数要求的逐步策略级别。红帽不承担与 Red Hat OpenShift pod 安全标准一致的安全上下文更改。
先决条件
- 使用 Red Hat OpenShift Web 控制台登录到 OpenShift Container Platform。
- 在 Red Hat OpenShift 上的项目中安装了 Red Hat build of Cryostat Operator。请参阅使用 Red Hat build of Cryostat Operator (Installing Cryostat)在 Red Hat OpenShift 上安装 Cryostat。
- 可选: 阅读新的 PSA 和新的 SCC 策略。请参阅管理安全性上下文约束 (OpenShift Container Platform)。
可选: 将您的项目配置为使用 PSA 提供的三种策略之一。
- 如果要使用自定义 SCC 为 Pod 强制执行特定的策略,您必须配置 SCC 以启用 Pod 的服务帐户来访问它。
流程
- 在 Red Hat OpenShift web 控制台中点 Operators > Installed Operators。
- 从可用 operator 列表中,选择 Red Hat build of Cryostat。
- 点 Provided APIs > Create。Red Hat build of Cryostat Operator 不会为 Report sidecar pod 创建服务帐户。相反,这些 pod 在自己的命名空间中使用默认服务帐户。
要配置安全上下文,请完成以下选项之一:
点 YAML 视图。在
spec:元素中,编辑securityOptions和reportOptions属性以匹配您的安全要求。安全上下文配置示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 展开 Advanced Configuration 以打开 Red Hat OpenShift Web 控制台中的附加选项。
图 2.1. 高级配置菜单选项
- 展开 Core Security Context。在可用选项列表中,为您的安全上下文定义设置。
- 点 Create。
- 根据情况,对数据源 安全上下文、Grafana 安全上下文 和 Pod 安全上下文 重复步骤一到五。
可选: 如果您使用 Report Generator 服务,您也可以为此服务配置安全上下文,如下所示:
- 在 Report Options 中,展开 高级配置。
- 展开 Security Options。根据需要定义 报告安全上下文 和 Pod 安全上下文。