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