第 1 章 风险和合规性
管理 Red Hat Advanced Cluster Management for Kubernetes 组件的安全性。使用定义的策略和流程监管集群,以识别并最大程度降低风险。使用策略来定义规则和设置控制。
先决条件:您必须为 Red Hat Advanced Cluster Management for Kubernetes 配置身份验证服务要求。如需更多信息,请参阅 访问控制。
查看以下主题以了解有关保护集群的更多信息:
1.1. 证书
在整个 Red Hat Advanced Cluster Management for Kubernetes 范围内会创建和使用各种证书。
您可以自带证书。为您的证书创建 Kubernetes TLS Secret。创建证书后,您可以替换由 Red Hat Advanced Cluster Management 安装程序创建的某些证书。
所需访问权限:集群管理员或团队管理员。
注: 只有在 Red Hat Advanced Cluster Management 原生安装中才支持替换证书。
在 Red Hat Advanced Cluster Management 中运行的服务所需的所有证书都是在 Red Hat Advanced Cluster Management 安装过程中创建的。证书由 OpenShift 服务证书服务创建和管理。
您还可以轮转 OpenShift Service Serving 证书。如需更多信息,请按照 OpenShift 文档手动轮转生成的服务证书,并手动轮转服务 CA 证书。轮转完成后,使用以下命令将新证书应用到所有服务:
oc -n open-cluster-management delete pod -l chart=management-ingress
集群中的相关 pod 会自动重启。
继续阅读以了解有关证书管理的更多信息:
Red Hat Advanced Cluster Management hub 集群证书
Red Hat Advanced Cluster Management 组件证书
Red Hat Advanced Cluster Management 管理的证书
注意 :用户负责证书轮转和更新。
1.1.1. Red Hat Advanced Cluster Management hub 集群证书
1.1.1.1. Observability 证书
安装 Red Hat Advanced Cluster Management 后,会创建可观察性证书并供可观察组件使用,以便在 hub 集群和受管集群间的网络流量上提供 mutual TLS。与可观察证书关联的 Kubernetes secret。
open-cluster-management-observability
命名空间包含以下证书:
-
Observability-server-ca-certs
:获取 CA 证书来签署服务器端证书 -
Observability-client-ca-certs
:获取 CA 证书来签署客户端的证书 -
Observability-server-certs
:获取由observability-observatorium-api 部署使用的服务器证书
-
Observability-grafana-certs
:获取observability-rbac-query-proxy
部署使用的客户端证书
open-cluster-management-addon-observability
命名空间在受管集群中包含以下证书:
-
Observability-managed-cluster-certs
:与 hub 服务器中的observability-server-ca-certs
相同的服务器 CA 证书 -
observability-controller-open-cluster-management.io-observability-signer-client-cert
:由被metrics-collector-deployment
使用的客户证书
CA 证书的有效期为五年,其他证书的有效期为一年。所有可观察证书会在过期后自动刷新。
查看以下列表以了解证书自动更新时的影响:
- 当剩余的有效时间不超过 73 天时,非 CA 证书将自动续订。续订证书后,相关部署中的 Pod 会自动重启以使用更新的证书。
- 当剩余有效时间不超过一年时,CA 证书会被自动续订。证书被续订后,旧的 CA 不会被删除,而是与更新的 CA 共存。相关部署同时使用旧和更新的证书,并继续工作。旧的 CA 证书在过期时会被删除。
- 当证书被续订时,hub 集群和受管集群之间的流量不会中断。
1.1.1.2. 使用您自己的 (BYO) 可观察证书认证机构 (CA) 证书
如果您不想使用 Red Hat Advanced Cluster Management 生成的默认可观察性 CA 证书,您可以在启用可观察性前选择使用 BYO observability CA 证书。
1.1.1.2.1. 用于生成 CA 证书的 OpenSSL 命令
Observability 需要两个 CA 证书;一个用于服务器端,另一个用于客户端。
使用以下命令生成您的 CA RSA 私钥:
openssl genrsa -out serverCAKey.pem 2048 openssl genrsa -out clientCAKey.pem 2048
使用私钥生成自签名 CA 证书。运行以下命令:
openssl req -x509 -sha256 -new -nodes -key serverCAKey.pem -days 1825 -out serverCACert.pem openssl req -x509 -sha256 -new -nodes -key clientCAKey.pem -days 1825 -out clientCACert.pem
1.1.1.2.2. 创建与 BYO observability CA 证书关联的 secret
完成以下步骤以创建 secret:
使用您的证书和私钥创建
observability-server-ca-certs
secret。运行以下命令:oc -n open-cluster-management-observability create secret tls observability-server-ca-certs --cert ./serverCACert.pem --key ./serverCAKey.pem
使用您的证书和私钥创建
observability-client-ca-certs
secret。运行以下命令:oc -n open-cluster-management-observability create secret tls observability-client-ca-certs --cert ./clientCACert.pem --key ./clientCAKey.pem
1.1.1.2.3. 替换 alertmanager 路由的证书
如果您不想使用 OpenShift 默认入口证书,您可以通过更新 alertmanager 路由来替换 alertmanager 证书。完成以下步骤:
使用以下命令检查可观察证书:
openssl x509 -noout -text -in ./observability.crt
-
将证书上的通用名称 (
CN
) 更改为alertmanager
。 -
使用 alertmanager 路由的主机名更改
csr.cnf
配置文件中的 SAN。 在
open-cluster-management-observability
命名空间中创建以下两个 secret。运行以下命令:oc -n open-cluster-management-observability create secret tls alertmanager-byo-ca --cert ./ca.crt --key ./ca.key oc -n open-cluster-management-observability create secret tls alertmanager-byo-cert --cert ./ingress.crt --key ./ingress.key
如需更多信息,请参阅 OpenSSL 命令以生成证书。如果要恢复 alertmanager 路由的默认自签名证书,请参阅为管理 ingress 恢复默认自签名证书以删除 open-cluster-management-observability
命名空间中的两个 secret。
1.1.2. Red Hat Advanced Cluster Management 组件证书
1.1.2.1. 列出 hub 集群受管证书
您可以查看在内部使用 OpenShift Service Serving 证书服务的 hub 集群受管证书列表。运行以下命令列出证书:
oc get secret -n open-cluster-management -o custom-columns=Name:.metadata.name,Expiration:.metadata.annotations.service\\.beta\\.openshift\\.io/expiry | grep -v '<none>'
注:如果启用了可观察性,则还需要额外的命名空间来创建证书。
1.1.2.2. 刷新 hub 集群受管证书
您可以通过在 List hub 集群受管证书中运行 命令来刷新 hub 集群受管证书。当您标识需要刷新的证书时,删除与该证书关联的 secret。例如,您可以运行以下命令删除 secret:
oc delete secret grc-0c925-grc-secrets -n open-cluster-management
注:删除 secret 后会创建一个新 secret。但是,您必须手动重启使用该 secret 的 pod,以便它们能够开始使用新证书。
1.1.2.3. 刷新 OpenShift Container Platform 受管证书
您可以刷新 OpenShift Container Platform 受管证书,它们是 Red Hat Advanced Cluster Management Webhook 和代理服务器使用的证书。
完成以下步骤以刷新 OpenShift Container Platform 受管证书:
运行以下命令,删除与 OpenShift Container Platform 受管证书关联的 secret:
oc delete secret -n open-cluster-management ocm-webhook-secret
注: 有些服务可能没有需要删除的 secret。
运行以下命令,重启与 OpenShift Container Platform 受管证书关联的服务:
oc delete po -n open-cluster-management ocm-webhook-679444669c-5cg76
重要 :许多服务都有副本;每个服务都需要重启。
查看下表,了解包含证书的 pod 概述列表,以及是否需要在重启 pod 前删除 secret 的信息:
服务名称 | Namespace | pod 名称示例 | Secret 名称(如果适用) |
---|---|---|---|
channels-apps-open-cluster-management-webhook-svc | open-cluster-management | multicluster-operators-application-8c446664c-5lbfk | - |
multicluster-operators-application-svc | open-cluster-management | multicluster-operators-application-8c446664c-5lbfk | - |
multiclusterhub-operator-webhook | open-cluster-management | multiclusterhub-operator-bfd948595-mnhjc | - |
ocm-webhook | open-cluster-management | ocm-webhook-679444669c-5cg76 | ocm-webhook-secret |
cluster-manager-registration-webhook | open-cluster-management-hub | cluster-manager-registration-webhook-fb7b99c-d8wfc | registration-webhook-serving-cert |
cluster-manager-work-webhook | open-cluster-management-hub | cluster-manager-work-webhook-89b8d7fc-f4pv8 | work-webhook-serving-cert |
1.1.3. Red Hat Advanced Cluster Management 管理的证书
1.1.3.1. 频道证书
CA 证书可与作为 Red Hat Advanced Cluster Management 应用程序管理一部分的 Git 频道关联。如需了解更多详细信息,请参阅使用自定义 CA 证书进行安全 HTTPS 连接。
Helm 频道允许您禁用证书验证。禁用证书验证的 Helm 频道,必须在开发环境中配置。禁用证书验证会带来安全隐患。
1.1.3.2. 受管集群证书
证书用于使用 hub 验证受管集群。因此,了解与这些证书关联的故障排除方案非常重要。如需了解更多详细信息,请参阅 证书更改后离线导入的集群。
受管集群证书会自动刷新。
1.1.4. 第三方证书
1.1.4.1. 轮转 gatekeeper Webhook 证书
完成以下步骤以轮转 gatekeeper Webhook 证书:
使用以下命令编辑包含证书的 secret:
oc edit secret -n openshift-gatekeeper-system gatekeeper-webhook-server-cert
-
删除
data
部分中的以下内容:ca.crt
、ca.key
、tls.crt' 和tls.key
。 使用以下命令删除
gatekeeper-controller-manager
pod 来重启 gatekeeper Webhook 服务:oc delete po -n openshift-gatekeeper-system -l control-plane=controller-manager
gatekeeper Webhook 证书被轮转。
1.1.4.2. 轮转完整性 shield Webhook 证书(技术预览)
完成以下步骤以轮转完整性 shield Webhook 证书:
编辑 IntegrityShield 自定义资源,把
integrity-shield-operator-system
命名空间添加到inScopeNamespaceSelector
设置中的命名空间排除列表中。运行以下命令编辑资源:oc edit integrityshield integrity-shield-server -n integrity-shield-operator-system
运行以下命令,删除包含 shield 证书的 secret:
oc delete secret -n integrity-shield-operator-system ishield-server-tls
删除 Operator,以便重新创建 secret。确保 Operator pod 名称与系统中的 pod 名称匹配。运行以下命令:
oc delete po -n integrity-shield-operator-system integrity-shield-operator-controller-manager-64549569f8-v4pz6
删除完整 shield 服务器 pod,以使用以下命令开始使用新证书:
oc delete po -n integrity-shield-operator-system integrity-shield-server-5fbdfbbbd4-bbfbz
在受管集群中使用证书策略控制器来创建和管理证书策略。请参阅策略控制器以了解更多有关控制器的信息。返回到风险和合规页面以了解更多信息。