Remove pod security policy (PSP) references for 2.9+

This commit is contained in:
Billy Tat
2025-07-18 14:05:21 -07:00
parent 399d9683d0
commit b95f9105dd
271 changed files with 100 additions and 3814 deletions
@@ -194,7 +194,6 @@ cert-manager-webhook-787858fcdb-nlzsq 1/1 Running 0 2m
- 将 `hostname` 设置为解析到你的负载均衡器的 DNS 名称。
- 将 `bootstrapPassword` 设置为 `admin` 用户独有的值。
- 如果你需要安装指定的 Rancher 版本,使用 `--version` 标志,例如 `--version 2.7.0`。
- 对于 Kubernetes v1.25 或更高版本,使用 Rancher v2.7.2-v2.7.4 时,将 `global.cattle.psp.enabled` 设置为 `false`。对于 Rancher v2.7.5 及更高版本来说,这不是必需的,但你仍然可以手动设置该选项。
```
helm install rancher rancher-<CHART_REPO>/rancher \
@@ -235,7 +234,6 @@ deployment "rancher" successfully rolled out
- 将 `ingress.tls.source` 设置为 `letsEncrypt`。
- 将 `letsEncrypt.email` 设置为可通讯的电子邮件地址,用于发送通知(例如证书到期的通知)。
- 将 `letsEncrypt.ingress.class` 设为你的 Ingress Controller(例如 `traefik`,`nginx`,`haproxy`)
- 对于 Kubernetes v1.25 或更高版本,使用 Rancher v2.7.2-v2.7.4 时,将 `global.cattle.psp.enabled` 设置为 `false`。对于 Rancher v2.7.5 及更高版本来说,这不是必需的,但你仍然可以手动设置该选项。
```
helm install rancher rancher-<CHART_REPO>/rancher \
@@ -278,7 +276,6 @@ deployment "rancher" successfully rolled out
- 设置 `hostname`。
- 将 `bootstrapPassword` 设置为 `admin` 用户独有的值。
- 将 `ingress.tls.source` 设置为 `secret`。
- 对于 Kubernetes v1.25 或更高版本,使用 Rancher v2.7.2-v2.7.4 时,将 `global.cattle.psp.enabled` 设置为 `false`。对于 Rancher v2.7.5 及更高版本来说,这不是必需的,但你仍然可以手动设置该选项。
```
helm install rancher rancher-<CHART_REPO>/rancher \
@@ -149,8 +149,6 @@ hostname: rancher.my.org
将上一步中的所有值用 `--set key=value` 追加到命令中。
对于 Kubernetes v1.25 或更高版本,使用 Rancher v2.7.2-v2.7.4 时,将 `global.cattle.psp.enabled` 设置为 `false`。对于 Rancher v2.7.5 及更高版本来说,这不是必需的,但你仍然可以手动设置该选项。
```
helm upgrade rancher rancher-<CHART_REPO>/rancher \
--namespace cattle-system \
@@ -183,8 +181,6 @@ helm upgrade rancher-stable rancher-<CHART_REPO>/rancher \
```
1. 只更新 Rancher 版本:
对于 Kubernetes v1.25 或更高版本,使用 Rancher v2.7.2-v2.7.4 时,将 `global.cattle.psp.enabled` 设置为 `false`。对于 Rancher v2.7.5 及更高版本来说,这不是必需的,但你仍然可以手动设置该选项。
```
helm upgrade rancher rancher-<CHART_REPO>/rancher \
--namespace cattle-system \
@@ -58,8 +58,6 @@ keywords: [rancher helm chart, rancher helm 选项, rancher helm chart 选项, h
| `systemDefaultRegistry` | "" | `string` - 用于所有系统容器镜像的私有仓库,例如 http://registry.example.com/ |
| `tls` | "ingress" | `string` - 详情请参见[外部 TLS 终止](#外部-tls-终止)。- "ingress, external" |
| `useBundledSystemChart` | `false` | `bool` - 选择 Rancher Server 打包的 system-charts。此参数用于离线环境安装。 |
| `global.cattle.psp.enabled` | `true` | `bool` - 使用 Rancher v2.7.2-v2.7.4 时,选择 `false` 以禁用 Kubernetes v1.25 及更高版本的 PSP。使用 Rancher v2.7.5 及更高版本时,Rancher 会尝试检测集群是否运行不支持 PSP 的 Kubernetes 版本,如果确定集群不支持 PSP,则将默认 PSP 的使用设置为 false。你仍然可以通过显式提供此值的 `true` 或 `false` 来手动覆盖此值。在支持 PSP 的集群中(例如使用 Kubernetes v1.24 或更低版本的集群),Rancher 仍将默认使用 PSP。 |
### 引导密码
@@ -167,8 +167,6 @@ kubectl create namespace cattle-system
然后安装 Rancher,并声明你选择的选项。参考下表来替换每个占位符。Rancher 需要配置为使用私有镜像仓库,以便配置所有 Rancher 启动的 Kubernetes 集群或 Rancher 工具。
对于 Kubernetes v1.25 或更高版本,使用 Rancher v2.7.2-v2.7.4 时,将 `global.cattle.psp.enabled` 设置为 `false`。对于 Rancher v2.7.5 及更高版本来说,这不是必需的,但你仍然可以手动设置该选项。
| 占位符 | 描述 |
------------|-------------
| `<VERSION>` | 输出压缩包的版本号。 |
@@ -198,8 +196,6 @@ kubectl create namespace cattle-system
安装 Rancher,并声明你选择的选项。参考下表来替换每个占位符。Rancher 需要配置为使用私有镜像仓库,以便配置所有 Rancher 启动的 Kubernetes 集群或 Rancher 工具。
对于 Kubernetes v1.25 或更高版本,使用 Rancher v2.7.2-v2.7.4 时,将 `global.cattle.psp.enabled` 设置为 `false`。对于 Rancher v2.7.5 及更高版本来说,这不是必需的,但你仍然可以手动设置该选项。
| 占位符 | 描述 |
| -------------------------------- | ----------------------------------------------- |
| `<VERSION>` | 输出压缩包的版本号。 |
@@ -31,7 +31,7 @@ Rancher API Server 是基于嵌入式 Kubernetes API Server 和 etcd 数据库
### 授权和基于角色的权限控制(RBAC)
- **用户管理**:Rancher API Server 除了管理本地用户,还[管理用户用来访问外部服务所需的认证信息](../how-to-guides/new-user-guides/authentication-permissions-and-global-configuration/authentication-config/authentication-config.md),如登录 Active Directory 和 GitHub 所需的账号密码。
- **授权**:Rancher API Server 可以管理[访问控制策略](../how-to-guides/new-user-guides/authentication-permissions-and-global-configuration/manage-role-based-access-control-rbac/manage-role-based-access-control-rbac.md)和[安全策略](../how-to-guides/new-user-guides/authentication-permissions-and-global-configuration/create-pod-security-policies.md)。
- **授权**:Rancher API Server 可以管理[访问控制策略](../how-to-guides/new-user-guides/authentication-permissions-and-global-configuration/manage-role-based-access-control-rbac/manage-role-based-access-control-rbac.md)和[安全标准](../how-to-guides/new-user-guides/authentication-permissions-and-global-configuration/pod-security-standards.md)。
### 使用 Kubernetes 的功能
@@ -124,8 +124,6 @@ helm install cert-manager jetstack/cert-manager `
要安装特定的 Rancher 版本,请使用 `--version` 标志(例如,`--version 2.6.6`)。否则,默认安装最新的 Rancher。请参阅[选择 Rancher 版本](../../installation-and-upgrade/resources/choose-a-rancher-version.md)。
对于 Kubernetes v1.25 或更高版本,使用 Rancher v2.7.2-v2.7.4 时,将 `global.cattle.psp.enabled` 设置为 `false`。对于 Rancher v2.7.5 及更高版本来说,这不是必需的,但你仍然可以手动设置该选项。
请注意,密码至少需要 12 个字符。
```
@@ -9,9 +9,3 @@ title: 安装 Rancher CIS Benchmark
1. 单击**安装**。
**结果**:CIS 扫描应用已经部署在 Kubernetes 集群上。
:::note
如果你使用 Kubernetes v1.24 或更早版本,并且具有使用 [Pod 安全策略](../../new-user-guides/authentication-permissions-and-global-configuration/create-pod-security-policies.md) (PSP) 加固的集群,则 CIS Benchmark 4.0.0 及更高版本会默认禁用 PSP。要在 PSP 加固集群上安装 CIS Benchmark,请在安装 Chart 之前将 values 中的 `global.psp.enabled` 设置为 `true`。[Pod 安全准入](../../new-user-guides/authentication-permissions-and-global-configuration/pod-security-standards.md) (PSA) 加固集群不受影响。
:::
@@ -39,8 +39,6 @@ Rancher 包含一些默认关闭的实验功能。在某些情况下,例如当
使用 Helm Chart 安装 Rancher 时,使用 `--set` 选项。下面的示例通过传递功能开关名称(用逗号分隔)来启用两个功能:
对于 Kubernetes v1.25 或更高版本,使用 Rancher v2.7.2-v2.7.4 时,将 `global.cattle.psp.enabled` 设置为 `false`。对于 Rancher v2.7.5 及更高版本来说,这不是必需的,但你仍然可以手动设置该选项。
```
helm install rancher rancher-latest/rancher \
--namespace cattle-system \
@@ -5,7 +5,6 @@ title: 1. 在集群中启用 Istio
:::note 先决条件:
- 只有分配了 `cluster-admin` [Kubernetes 默认角色](https://kubernetes.io/docs/reference/access-authn-authz/rbac/#user-facing-roles)的用户可以在 Kubernetes 集群中配置和安装 Istio。
- 如果你有 pod 安全策略,则需要安装启用了 CNI 的 Istio。有关详细信息,请参阅[本节](../../../integrations-in-rancher/istio/configuration-options/pod-security-policies.md)。
- 要在 RKE2 集群上安装 Istio,则需要执行额外的步骤。有关详细信息,请参阅[本节](../../../integrations-in-rancher/istio/configuration-options/install-istio-on-rke2-cluster.md)。
- 要在启用了项目网络隔离的集群中安装 Istio,则需要执行额外的步骤。有关详细信息,请参阅[本节](../../../integrations-in-rancher/istio/configuration-options/project-network-isolation.md)。
@@ -1,39 +0,0 @@
---
title: Pod 安全策略
---
:::note
本文介绍的集群选项仅适用于 [Rancher 已在其中启动 Kubernetes 的集群](../../../pages-for-subheaders/launch-kubernetes-with-rancher.md)。
:::
你可以在创建项目的时候设置 Pod 安全策略(PSP)。如果在创建项目期间没有为项目分配 PSP,你也随时可以将 PSP 分配给现有项目。
### 先决条件
- 在 Rancher 中创建 Pod 安全策略。在将默认 PSP 分配给现有项目之前,你必须有一个可分配的 PSP。有关说明,请参阅[创建 Pod 安全策略](../../new-user-guides/authentication-permissions-and-global-configuration/create-pod-security-policies.md)。
- 将默认 Pod 安全策略分配给项目所属的集群。如果 PSP 还没有应用到集群,你无法将 PSP 分配给项目。有关详细信息,请参阅[将 pod 安全策略添加到集群](../../new-user-guides/manage-clusters/add-a-pod-security-policy.md)。
### 应用 Pod 安全策略
1. 在左上角,单击 **☰ > 集群管理**。
1. 在**集群**页面上,转到需要移动命名空间的集群,然后单击 **Explore**。
1. 单击**集群 > 项目/命名空间**。
1. 找到要添加 PSP 的项目。在该项目中选择 **⋮ > 编辑配置**。
1. 从 **Pod 安全策略**下拉列表中,选择要应用于项目的 PSP。
将 PSP 分配给项目将:
- 覆盖集群的默认 PSP。
- 将 PSP 应用于项目。
- 将 PSP 应用到后续添加到项目中的命名空间。
1. 单击**保存**。
**结果**:已将 PSP 应用到项目以及项目内的命名空间。
:::note
对于在分配 PSP 之前已经在集群或项目中运行工作负载,Rancher 不会检查它们是否符合 PSP。你需要克隆或升级工作负载以查看它们是否通过 PSP。
:::
@@ -24,7 +24,6 @@ _项目_ 是 Rancher 中引入的对象,可帮助你更有组织地管理 Kube
- [设置资源配额](manage-project-resource-quotas/manage-project-resource-quotas.md)
- [管理命名空间](../../new-user-guides/manage-namespaces.md)
- [配置工具](../../../reference-guides/rancher-project-tools.md)
- [配置 Pod 安全策略](manage-pod-security-policies.md)
### 授权
@@ -29,13 +29,6 @@ Rancher 为 Kubernetes 增加了一项关键特性是集中式的用户认证。
在 Rancher 中,每个人都是以 _用户_ 的身份进行鉴权,这是一个授予你访问 Rancher 的登录身份。用户登录 Rancher 后,他们的 _授权_ 或者他们在系统中的访问权限由用户的角色决定。Rancher 提供了内置的角色,允许你你轻松地配置用户对资源的权限,但是 Rancher 还提供了为每个 Kubernetes 资源自定义角色的功能。
更多关于授权的工作原理以及自定义角色的使用,请参考 [RBAC](manage-role-based-access-control-rbac/manage-role-based-access-control-rbac.md)。
## Pod 安全策略
_Pod 安全策略_ (或 PSPs) 是控制 Pod 安全敏感方面规范的对象,例如 root 权限。如果一个 Pod 不满足 PSP 中指定的条件,Kubernetes 将不允许 Pod 启动,同时 Rancher 会显示一条错误信息。
更多关于如何创建和使用 PSPs 的内容,请参考 [Pod 安全策略](create-pod-security-policies.md)。
## Provisioning Drivers
Rancher 中的驱动允许你管理哪些程序可以预置[托管的 Kubernetes 集群](../kubernetes-clusters-in-rancher-setup/set-up-clusters-from-hosted-kubernetes-providers/set-up-clusters-from-hosted-kubernetes-providers.md) 或 [云服务器节点](../launch-kubernetes-with-rancher/use-new-nodes-in-an-infra-provider/use-new-nodes-in-an-infra-provider.md),允许 Rancher 部署和管理 Kubernetes。
@@ -1,78 +0,0 @@
---
title: Pod 安全策略
---
:::caution
Pod 安全策略仅在 Kubernetes v1.24 之前可用。[Pod 安全标准](pod-security-standards.md) 是内置的替代方案。
:::
[Pod 安全策略(PSP)](https://kubernetes.io/docs/concepts/security/pod-security-policy/)是用来控制安全敏感相关 Pod 规范(例如 root 特权)的对象。
如果某个 Pod 不满足 PSP 指定的条件,Kubernetes 将不允许它启动,Rancher 中将显示错误消息 `Pod <NAME> is forbidden: unable to validate...`。
## PSP 工作原理
你可以在集群或项目级别分配 PSP。
PSP 通过继承的方式工作:
- 默认情况下,分配给集群的 PSP 由其项目以及添加到这些项目的任何命名空间继承。
- **例外**:无论 PSP 是分配给集群还是项目,未分配给项目的命名空间不会继承 PSP。因为这些命名空间没有 PSP,所以这些命名空间的工作负载 deployment 将失败,这是 Kubernetes 的默认行为。
- 你可以通过将不同的 PSP 直接分配给项目来覆盖默认 PSP。
在分配 PSP 之前已经在集群或项目中运行的任何工作负载如果符合 PSP,则不会被检查。你需要克隆或升级工作负载以查看它们是否通过 PSP。
在 [Kubernetes 文档](https://kubernetes.io/docs/concepts/policy/pod-security-policy/)中阅读有关 Pod 安全策略的更多信息。
## 默认 PSP
Rancher 内置了三个默认 Pod 安全策略 (PSP),分别是 `restricted-noroot`(受限 noroot),`restricted`(受限)和 `unrestricted`(不受限)策略。
### 受限-NoRoot
此策略基于 Kubernetes [示例受限策略](https://raw.githubusercontent.com/kubernetes/website/master/content/en/examples/policy/restricted-psp.yaml)。它极大地限制了可以将哪些类型的 Pod 部署到集群或项目中。这项策略:
- 阻止 Pod 以特权用户身份运行,并防止特权升级。
- 验证服务器所需的安全机制是否到位,例如限制哪些卷只能挂载到核心卷类型,并防止添加 root 补充组。
### 受限
该策略是宽松版的 `restricted-noroot` 策略,除了允许以特权用户身份运行容器外,几乎所有限制都到位。
### 不受限
该策略等效于在禁用 PSP 控制器的情况下运行 Kubernetes。对于可以将哪些 Pod 部署到集群或项目中,它没有任何限制。
:::note 重要提示:
禁用 PSP 时,默认 PSP **不会**自动从集群中删除。如果不再需要它们,你必须手动删除它们。
:::
## 创建 PSP
使用 Rancher,你可以使用我们的 GUI 创建 Pod 安全策略,而不是创建 YAML 文件。
### 要求
Rancher 只能为[使用 RKE 启动的集群](../../../pages-for-subheaders/launch-kubernetes-with-rancher.md)分配 PSP。
你必须先在集群级别启用 PSP,然后才能将它们分配给项目。这可以通过[编辑集群](../../../pages-for-subheaders/cluster-configuration.md)来配置。
最好的做法是在集群级别设置 PSP。
我们建议在集群和项目创建期间添加 PSP,而不是将其添加到现有的项目或集群中。
### 在 Rancher UI 中创建 PSP
1. 在左上角,单击 **☰ > 集群管理**。
1. 在左侧导航栏中,单击 **Pod 安全策略**。
1. 单击**添加策略**。
1. 为策略命名。
1. 填写表格的每个部分。请参阅 [Kubernetes 文档](https://kubernetes.io/docs/concepts/policy/pod-security-policy/),了解每个策略的作用。
1. 单击**创建**。
## 配置
关于 PSP 的 Kubernetes 文档,请参阅[这里](https://kubernetes.io/docs/concepts/policy/pod-security-policy/)。
@@ -7,54 +7,6 @@ title: Pod 安全标准 (PSS) 和 Pod 安全准入 (PSA)
PSS 定义了工作负载的安全级别。PSA 描述了 Pod 安全上下文和相关字段的要求。PSA 参考 PSS 级别来定义安全限制。
## 升级到 Pod 安全标准 (PSS)
确保将所有 PSP 都迁移到了另一个工作负载安全机制,包括将你当前的 PSP 映射到 Pod 安全标准,以便使用 [PSA 控制器](https://kubernetes.io/docs/concepts/security/pod-security-admission/)执行。如果 PSA 控制器不能满足企业的所有需求,建议你使用策略引擎,例如 [OPA Gatekeeper](https://github.com/open-policy-agent/gatekeeper)、[Kubewarden](https://www.kubewarden.io/)、[Kyverno](https://kyverno.io/) 或 [NeuVector](https://neuvector.com/)。有关如何迁移 PSP 的更多信息,请参阅你选择的策略引擎的文档。
:::caution
必须在删除 PodSecurityPolicy 对象_之前_添加新的策略执行机制。否则,你可能会为集群内的特权升级攻击创造机会。
:::
### 从 Rancher 维护的应用程序和市场工作负载中删除 PodSecurityPolicies {#remove-psp-rancher-workloads}
Rancher v2.7.2 提供了 Rancher 维护的 Helm Chart 的新主要版本。v102.x.y 允许你删除与以前的 Chart 版本一起安装的 PSP。这个新版本使用标准化的 `global.cattle.psp.enabled` 开关(默认关闭)替换了非标准的 PSP 开关。
你必须在_仍使用 Kubernetes v1.24_ 时执行以下步骤:
1. 根据需要配置 PSA 控制器。你可以使用 Rancher 的内置 [PSA 配置模板](#psa-config-templates),或创建自定义模板并将其应用于正在迁移的集群。
1. 将活动的 PSP 映射到 Pod 安全标准:
1. 查看集群中哪些 PSP 仍处于活动状态:
:::caution
此策略可能会错过当前未运行的工作负载,例如 CronJobs、当前缩放为零的工作负载或尚未推出的工作负载。
:::
```shell
kubectl get pods \
--all-namespaces \
--output jsonpath='{.items[*].metadata.annotations.kubernetes\.io\/psp}' \
| tr " " "\n" | sort -u
```
1. 按照[将 PSP 映射到 Pod 安全标准](https://kubernetes.io/docs/reference/access-authn-authz/psp-to-pod-security-standards/)的 Kubernetes 指南将 PSS 应用于依赖 PSP 的工作负载。有关详细信息,请参阅[从 PodSecurityPolicy 迁移到内置 PodSecurity Admission 控制器](https://kubernetes.io/docs/tasks/configure-pod-container/migrate-from-psp/)。
1. 要从 Rancher Chart 中删除 PSP,请在升级到 Kubernetes v1.25 _之前_将 Chart 升级到最新的 v102.x.y 版本。确保 **Enable PodSecurityPolicies** 选项**已禁用**。这将删除与以前的 Chart 版本一起安装的所有 PSP。
:::info 重要提示
如果你想将 Chart 升级到 v102.x.y,但不打算将集群升级到 Kubernetes v1.25 和弃用 PSP,请确保为每个要升级的 Chart 选择 **Enable PodSecurityPolicies** 选项。
:::
### 在 Kubernetes v1.25 升级后清理版本
如果你在删除 Chart 的 PSP 时遇到问题,或者 Chart 不包含用于删除 PSP 的内置机制,Chart 升级或删除可能会失败并显示如下错误消息:
```console
Error: UPGRADE FAILED: resource mapping not found for name: "<object-name>" namespace: "<object-namespace>" from "": no matches for kind "PodSecurityPolicy" in version "policy/v1beta1"
ensure CRDs are installed first
```
Helm 尝试在集群中查询存储在先前版本的数据 blob 中的对象时,就会发生这种情况。要清理这些版本并避免此错误,请使用 `helm-mapkubeapis` Helm 插件。要详细了解 `helm-mapkubeapis`、它的工作原理以及如何针对你的用例进行微调,请参阅 [Helm 官方文档](https://github.com/helm/helm-mapkubeapis#readme)。
请注意,Helm 插件安装在你运行命令的机器本地。因此,请确保从同一台机器运行安装和清理。
#### 安装 `helm-mapkubeapis`
1. 在打算使用 `helm-mapkubeapis` 的机器上打开你的终端并安装插件:
@@ -158,8 +158,6 @@ Kubernetes v1.22 是 Rancher 2.6.3 的实验功能,不支持使用 apiVersion
使用与第一个集群上使用的相同版本的 Helm 来安装 Rancher:
对于 Kubernetes v1.25 或更高版本,使用 Rancher v2.7.2-v2.7.4 时,将 `global.cattle.psp.enabled` 设置为 `false`。对于 Rancher v2.7.5 及更高版本来说,这不是必需的,但你仍然可以手动设置该选项。
```bash
helm install rancher rancher-latest/rancher \
--namespace cattle-system \
@@ -240,15 +240,7 @@ Rancher 没有注册的 Kubernetes 集群(除了 RKE2 和 K3s Kubernetes 集
但是,如果集群具有某种功能(例如使用 pod 安全策略),那么该集群的用户可能仍希望在 Rancher UI 中为集群选择 pod 安全策略。为此,用户需要手动让 Rancher 知道集群已启用 pod 安全策略。
通过对已注册的集群进行注释,你可以向 Rancher 表明集群在 Rancher 之外被赋予了 Pod 安全策略或其他功能。
此示例注释表示启用了 pod 安全策略:
```json
"capabilities.cattle.io/pspEnabled": "true"
```
以下注释表示 Ingress 功能。请注意,非原始对象的值需要进行 JSON 编码,并转义引号:
通过对已注册的集群进行注释,你可以向 Rancher 表明集群在 Rancher 之外被赋予了 Ingress 功能或其他功能。以下注释表示 Ingress 功能。请注意,非原始对象的值需要进行 JSON 编码,并转义引号:
```json
"capabilities.cattle.io/ingressCapabilities": "[
@@ -265,7 +257,6 @@ Rancher 没有注册的 Kubernetes 集群(除了 RKE2 和 K3s Kubernetes 集
- `loadBalancerCapabilities`
- `nodePoolScalingSupported`
- `nodePortRange`
- `pspEnabled`
- `taintSupport`
所有功能及其类型定义都可以在 Rancher API 视图中查看,地址是 `[Rancher Server URL]/v3/schemas/capabilities`。
@@ -1,39 +0,0 @@
---
title: 添加 Pod 安全策略
---
:::note 先决条件:
以下选项仅适用于[使用 RKE 启动的集群](../../../pages-for-subheaders/launch-kubernetes-with-rancher.md)。
:::
当你的集群上运行了具有安全敏感配置的 pod 时,请为其分配 [pod 安全策略](../authentication-permissions-and-global-configuration/create-pod-security-policies.md),这是一组用于监控 pod 中的状态和设置的规则。如果 pod 不符合你的策略中指定的规则,则该策略会阻止它运行。
你可以在配置集群时分配 pod 安全策略。如果你以后需要放松或限制 pod 的安全性,你可以在编辑集群时更新策略:
1. 点击 **☰ > 集群管理**。
1. 转到要应用 pod 安全策略的集群,然后单击 **⋮ > 编辑配置**。
1. 在 **Pod 安全策略支持**中,选择**启用**。
:::note
此选项仅适用于[由 RKE 配置的集群](../../../pages-for-subheaders/launch-kubernetes-with-rancher.md)。
:::
4. 从**默认 Pod 安全策略**下拉列表中,选择要应用于集群的策略。
Rancher 支持了`受限`和`不受限`的[策略](../authentication-permissions-and-global-configuration/create-pod-security-policies.md#默认-psp),你也可以[创建自定义策略](../authentication-permissions-and-global-configuration/create-pod-security-policies.md#创建-psp)。
5. 单击**保存**。
**结果**:pod 安全策略应用于集群和集群内的任何项目。
:::note
在分配 pod 安全策略之前已经运行的工作负载是不受限制的。即使它们不符合你的 pod 安全策略,在分配策略之前运行的工作负载也会继续运行。
要检查正在运行的工作负载是否通过了你的 pod 安全策略,请克隆或升级它。
:::
@@ -1,25 +0,0 @@
---
title: 分配 Pod 安全策略
---
_Pod 安全策略_(PSP)是控制 Pod 安全的规范(如是否可以使用 root 权限等)的对象。
## 添加默认 Pod 安全策略
使用 RKE 创建新集群时,你可以将其配置为立即应用 PSP。创建集群时,使用**集群选项**来启用 PSP。分配给集群的 PSP 将是集群内项目的默认 PSP。
:::note 先决条件:
在 Rancher 中创建 Pod 安全策略。在将默认 PSP 分配给新集群之前,你必须有一个可分配的 PSP。有关说明,请参阅[创建 Pod 安全策略](../authentication-permissions-and-global-configuration/create-pod-security-policies.md)。
:::
:::note
出于安全考虑,我们建议你在创建集群时分配 PSP。
:::
要启用默认 Pod 安全策略,请将 **Pod 安全策略支持**选项设置为**启用**,然后从**默认 Pod 安全策略**下拉框中进行选择。
集群完成配置后,你选择的 PSP 将应用于集群内的所有项目。
@@ -122,12 +122,11 @@ Rancher 在 Kubernetes 之上进行了扩展,除了集群级别之外,还允
本节介绍如何创建具有名称以及可选 pod 安全策略、成员和资源配额的新项目。
1. [命名新项目](#1-命名新项目)
2. [可选:选择 pod 安全策略](#2-可选选择-pod-安全策略)
3. [推荐:添加项目成员](#3-推荐添加项目成员)
4. [可选:添加资源配额](#4-可选添加资源配额)
1. [命名新项目](#命名新项目)
1. [推荐:添加项目成员](#推荐添加项目成员)
1. [可选:添加资源配额](#可选添加资源配额)
### 1. 命名新项目
### 命名新项目
1. 在左上角,单击 **☰ > 集群管理**。
1. 在**集群**页面上,转到要在其中创建项目的集群,然后单击 **Explore**。
@@ -135,17 +134,7 @@ Rancher 在 Kubernetes 之上进行了扩展,除了集群级别之外,还允
1. 单击**创建项目**。
1. 输入**项目名称**。
### 2. 可选:选择 Pod 安全策略
此选项仅在 Pod 安全策略已创建时可用。有关说明,请参阅[创建 Pod 安全策略](../authentication-permissions-and-global-configuration/create-pod-security-policies.md)。
将 PSP 分配给项目将:
- 覆盖集群的默认 PSP。
- 将 PSP 应用于项目。
- 将 PSP 应用到后续添加到项目中的命名空间。
### 3. 推荐:添加项目成员
### 推荐:添加项目成员
使用**成员**为其他用户提供项目访问权限和角色。
@@ -175,7 +164,7 @@ Rancher 在 Kubernetes 之上进行了扩展,除了集群级别之外,还允
:::
1. 在**项目权限**中选择一个角色。如需更多信息,请参阅[项目角色文档](../authentication-permissions-and-global-configuration/manage-role-based-access-control-rbac/cluster-and-project-roles.md)。
### 4. 可选:添加资源配额
### 可选:添加资源配额
资源配额用于限制项目(及其命名空间)可以使用的资源。有关详细信息,请参阅[资源配额](../../advanced-user-guides/manage-projects/manage-project-resource-quotas/manage-project-resource-quotas.md)。
@@ -30,11 +30,7 @@ Monitoring 应用设置了 `prometheus.prometheusSpec.ignoreNamespaceSelectors=f
详情请参阅[本节](selectors-and-scrape-configurations.md)。
### 在具有 Pod 安全策略的情况下启用 Istio
详情请参阅[本节](pod-security-policies.md)。
### 在 RKE2 集群上安装 Istio 的其他步骤
#### 在 RKE2 集群上安装 Istio 的其他步骤
详情请参阅[本节](install-istio-on-rke2-cluster.md)。
@@ -1,53 +0,0 @@
---
title: 在具有 Pod 安全策略的情况下启用 Istio
---
如果你启用了限制性 Pod 安全策略(Pod Security Policy),由于 Istio 需要某些权限才能自行安装和管理 pod 基础设施,因此 Istio 可能无法正常运行。在本文中,我们将配置一个为 Istio 启用了 PSP 的集群,并设置 Istio CNI 插件。
Istio CNI 插件不再要求每个应用 pod 具有特权 `NET_ADMIN` 容器。如需更多信息,请参阅 [Istio CNI 插件文档](https://istio.io/docs/setup/additional-setup/cni)。请注意,[Istio CNI 插件处于 alpha 阶段](https://istio.io/about/feature-stages/)。
:::note 先决条件:
- 集群必须是 RKE Kubernetes 集群。
- 必须使用默认 PodSecurityPolicy 创建集群。
要在使用 Rancher UI 创建 Kubernetes 集群时启用 Pod 安全策略支持,请转到<b>高级选项</b>。在 <b>Pod 安全策略支持</b>中,单击<b>启用</b>,然后选择一个默认的 pod 安全策略。
:::
1. [将 PodSecurityPolicy 设置为不受限制](#1-将-podsecuritypolicy-设置为不受限制)
2. [启用 CNI](#2-启用-cni)
3. [验证 CNI 是否正常工作](#3-验证-cni-是否正常工作)
### 1. 将 PodSecurityPolicy 设置为不受限制
不受限制的 PSP 支持安装 Istio。
在安装 Istio 的项目或计划安装 Istio 的项目中,将 PSP 设置为 `unrestricted`。
1. 点击 **☰ > 集群管理**。
1. 选择你创建的集群,并点击 **Explore**。
1. 单击**集群 > 项目/命名空间**。
1. 找到**项目: System**,然后选择 **⋮ > 编辑配置**。
1. 将 Pod 安全策略选项更改为不受限制,然后单击**保存**。
### 2. 启用 CNI
通过 **Apps** 安装或升级 Istio 时:
1. 单击**组件**。
2. 选中**启用 CNI**旁边的框。
3. 完成 Istio 的安装或升级。
你也可以通过编辑 `values.yaml` 来启用 CNI:
```
istio_cni.enabled: true
```
在集群中启用 CNI 后,Istio 应该能成功安装。
### 3. 验证 CNI 是否正常工作
通过部署[示例应用](https://istio.io/latest/docs/examples/bookinfo/)或部署你自己的应用,来验证 CNI 是否正常工作。
@@ -26,10 +26,6 @@ Monitoring 应用设置了 `prometheus.prometheusSpec.ignoreNamespaceSelectors=f
详情请参阅[本节](../integrations-in-rancher/istio/configuration-options/selectors-and-scrape-configurations.md)。
### 在具有 Pod 安全策略的情况下启用 Istio
详情请参阅[本节](../integrations-in-rancher/istio/configuration-options/pod-security-policies.md)。
### 在 RKE2 集群上安装 Istio 的其他步骤
详情请参阅[本节](../integrations-in-rancher/istio/configuration-options/install-istio-on-rke2-cluster.md)。
@@ -35,8 +35,6 @@ Rancher 包含一些默认关闭的实验功能。在某些情况下,例如当
使用 Helm Chart 安装 Rancher 时,使用 `--set` 选项。下面的示例通过传递功能开关名称(用逗号分隔)来启用两个功能:
对于 Kubernetes v1.25 或更高版本,使用 Rancher v2.7.2-v2.7.4 时,将 `global.cattle.psp.enabled` 设置为 `false`。对于 Rancher v2.7.5 及更高版本来说,这不是必需的,但你仍然可以手动设置该选项。
```
helm install rancher rancher-latest/rancher \
--namespace cattle-system \
@@ -194,7 +194,6 @@ cert-manager-webhook-787858fcdb-nlzsq 1/1 Running 0 2m
- 将 `hostname` 设置为解析到你的负载均衡器的 DNS 名称。
- 将 `bootstrapPassword` 设置为 `admin` 用户独有的值。
- 如果你需要安装指定的 Rancher 版本,使用 `--version` 标志,例如 `--version 2.7.0`。
- 对于 Kubernetes v1.25 或更高版本,使用 Rancher v2.7.2-v2.7.4 时,将 `global.cattle.psp.enabled` 设置为 `false`。对于 Rancher v2.7.5 及更高版本来说,这不是必需的,但你仍然可以手动设置该选项。
```
helm install rancher rancher-<CHART_REPO>/rancher \
@@ -235,7 +234,6 @@ deployment "rancher" successfully rolled out
- 将 `ingress.tls.source` 设置为 `letsEncrypt`。
- 将 `letsEncrypt.email` 设置为可通讯的电子邮件地址,用于发送通知(例如证书到期的通知)。
- 将 `letsEncrypt.ingress.class` 设为你的 Ingress Controller(例如 `traefik`,`nginx`,`haproxy`)
- 对于 Kubernetes v1.25 或更高版本,使用 Rancher v2.7.2-v2.7.4 时,将 `global.cattle.psp.enabled` 设置为 `false`。对于 Rancher v2.7.5 及更高版本来说,这不是必需的,但你仍然可以手动设置该选项。
```
helm install rancher rancher-<CHART_REPO>/rancher \
@@ -278,7 +276,6 @@ deployment "rancher" successfully rolled out
- 设置 `hostname`。
- 将 `bootstrapPassword` 设置为 `admin` 用户独有的值。
- 将 `ingress.tls.source` 设置为 `secret`。
- 对于 Kubernetes v1.25 或更高版本,使用 Rancher v2.7.2-v2.7.4 时,将 `global.cattle.psp.enabled` 设置为 `false`。对于 Rancher v2.7.5 及更高版本来说,这不是必需的,但你仍然可以手动设置该选项。
```
helm install rancher rancher-<CHART_REPO>/rancher \
@@ -62,7 +62,7 @@ This configuration needs to be done before setting the kubelet flag, otherwise K
## Kubernetes Runtime Requirements
The CIS Benchmark runtime requirements center around pod security (via PSP or PSA), network policies and API Server auditing logs.
The CIS Benchmark runtime requirements center around pod security (via PSA), network policies and API Server auditing logs.
By default, K3s does not include any pod security or network policies. However, K3s ships with a controller that enforces any network policies you create. By default, K3s enables both the `PodSecurity` and `NodeRestriction` admission controllers, among others.
@@ -20,7 +20,6 @@ _项目_ 是 Rancher 中引入的对象,可帮助你更有组织地管理 Kube
- [设置资源配额](manage-project-resource-quotas.md)
- [管理命名空间](../how-to-guides/new-user-guides/manage-namespaces.md)
- [配置工具](../reference-guides/rancher-project-tools.md)
- [配置 Pod 安全策略](../how-to-guides/advanced-user-guides/manage-projects/manage-pod-security-policies.md)
### 授权
@@ -145,12 +145,6 @@ Rancher v2.6 引入了[为 RKE 集群配置 ECR 镜像仓库](https://rancher.co
每个能够使用 RKE 启动集群的云提供商都可以收集指标并监控你的集群节点。如果启用此选项,你可以从你的云提供商门户查看你的节点指标。
### Pod 安全策略支持
为集群启用 [pod 安全策略](../../../how-to-guides/new-user-guides/authentication-permissions-and-global-configuration/create-pod-security-policies.md)。启用此选项后,使用**默认 Pod 安全策略**下拉菜单选择一个策略。
你必须有已配置的 Pod 安全策略才能使用此选项。
### 节点上的 Docker 版本
表示是否允许节点运行 Rancher 不正式支持的 Docker 版本。
@@ -124,10 +124,6 @@ Rancher 与以下开箱即用的网络提供商兼容:
:::
#### 默认 Pod 安全策略
为集群选择默认的 [pod 安全策略](../../../how-to-guides/new-user-guides/authentication-permissions-and-global-configuration/create-pod-security-policies.md)。请参阅 [RKE2 文档](https://docs.rke2.io/security/pod_security_policies)来了解每个可用策略的规范。
#### Worker CIS 配置文件
选择一个 [CIS benchmark](../../../pages-for-subheaders/cis-scan-guides.md) 来验证系统配置。
@@ -79,7 +79,7 @@ kernel.panic_on_oops=1
## Kubernetes 运行时要求
CIS Benchmark 的运行时要求主要围绕 Pod 安全(通过 PSP 或 PSA)、网络策略和 API 服务器审计日志展开。
CIS Benchmark 的运行时要求主要围绕 Pod 安全(通过 PSA)、网络策略和 API 服务器审计日志展开。
默认情况下,K3s 不包含任何 Pod 安全或网络策略。然而,K3s 附带一个控制器,可以强制执行你创建的任何网络策略。默认情况下,K3s 启用了 `PodSecurity` 和 `NodeRestriction` 等多个准入控制器。
@@ -155,7 +155,6 @@ done
## 已知限制
- 当注册自定义节点仅提供公共 IP 时,Rancher **exec shell** 和 **查看 pod 日志** 在加固设置中**不起作用**。 此功能需要在注册自定义节点时提供私有 IP。
- 当根据 Rancher [提供](../../../../how-to-guides/new-user-guides/authentication-permissions-and-global-configuration/create-pod-security-policies.md)的 Pod 安全策略 (Pod Security Policies, PSP) 将 `default_pod_security_policy_template_id:` 设置为 `restricted` 或 `restricted-noroot` 时,Rancher 会在 `default` service accounts 上创建 `RoleBindings` 和 `ClusterRoleBindings`。CIS 检查 5.1.5 要求除了默认角色之外,`default` service accounts 不应绑定其他角色或集群角色。此外,`default` service accounts 应配置为不提供服务账户令牌,也不具有任何明确的权限分配。
## 加固的 RKE `cluster.yml` 配置参考
@@ -12,7 +12,6 @@
| [轮换证书](../how-to-guides/new-user-guides/manage-clusters/rotate-certificates.md) | ✓ | ✓ | | |
| [备份](../how-to-guides/new-user-guides/backup-restore-and-disaster-recovery/back-up-rancher-launched-kubernetes-clusters.md)和[恢复](../how-to-guides/new-user-guides/backup-restore-and-disaster-recovery/restore-rancher-launched-kubernetes-clusters-from-backup.md) Rancher 启动的集群 | ✓ | ✓ | | ✓<sup>4</sup> |
| [在 Rancher 无法访问集群时清理 Kubernetes 组件](../how-to-guides/new-user-guides/manage-clusters/clean-cluster-nodes.md) | ✓ | | | |
| [配置 Pod 安全策略](../how-to-guides/new-user-guides/manage-clusters/add-a-pod-security-policy.md) | ✓ | ✓ | |
1. 注册的 EKS、GKE 和 AKS 集群与从 Rancher UI 创建的 EKS、GKE 和 AKS 集群的可用选项一致。不同之处是,从 Rancher UI 中删除已注册的集群后,集群不会被销毁。