了解默认情况下的安全集群 VPC 网络连接

虚拟私有云 4.15 后来

从在 4.15 版本创建的新 VPC 群集开始,Red Hat OpenShift on IBM Cloud 引入了一项新的安全功能,称为“默认安全群集 VPC 网络”。 通过“缺省安全”,您可以在创建 VPC 集群时自动创建新的 VPC 设置,例如受管安全组,安全组规则和虚拟专用端点网关 (VPE)。 查看以下有关创建 4.15 及更高版本群集时为您创建和管理的 VPC 组件的详细信息。

概述

通过“按缺省联网安全”,当您在 V 4.15 或更高版本供应新的 Red Hat OpenShift on IBM Cloud VPC 集群时,仅允许集群运行所需的流量,并且将阻止所有其他访问。 为实现“按缺省联网安全”,Red Hat OpenShift on IBM Cloud 使用各种安全组和安全组规则来保护集群组件。 这些安全组和规则会自动创建并连接到工作程序节点,负载均衡器和与集群相关的 VPE 网关。

VPC 安全组
显示了应用于 VPC 和群集的 VPC 安全组

虚拟私有云安全组在系统管理程序级别过滤流量。 未按特定顺序应用安全组规则。 但是,仅当请求与您指定的某个规则匹配时,才允许向工作程序节点发出的请求。 当您通过创建入站或出站规则在一个方向上允许流量时,也允许在相反方向上进行响应。 安全组是可加的,这意味着如果工作程序节点连接到多个安全组,那么安全组中包含的所有规则都将应用于工作程序节点。 较新的集群版本在 kube-<clusterID> 安全组中可能具有比较旧的集群版本更多的规则。 添加安全组规则以提高服务的安全性,并且不破坏功能。

虚拟专用端点 (VPE) 网关

在给定 VPC 中创建 Red Hat OpenShift on IBM Cloud 4.14+ 上的第一个 VPC 集群时,或者 VPC 中的一个集群将其主节点更新为 4.14+ 时,将为各种 IBM Cloud 服务创建多个共享 VPE 网关。 每个 VPC 仅创建其中一种类型的共享 VPE 网关。 VPC 中的所有集群共享这些服务的同一 VPE 网关。 将从集群工作程序所在的每个专区为这些共享 VPE 网关分配单个保留 IP。

共享 VPE 网关

创建 VPC 集群时,将自动创建以下 VPE 网关。

共享 VPE 网关
该表显示了为 VPC 群集创建的 VPE 网关。 第一列包含网关的名称。 第二栏包括简要说明。 第三列包括 DNS 名称。
VPE 网关 描述 DNS 名称
IBM Cloud Container Registry 从 IBM Cloud Container Registry 拉取容器镜像到集群中运行的应用程序。 icr.io, *.icr.io
IBM Cloud Object Storage s3 网关 访问 IBM Cloud Object Storage API。 s3.direct.<region>.cloud-object-storage.appdomain.cloud, *.s3.direct.<region>.cloud-object-storage.appdomain.cloud
IBM Cloud Object Storage 配置网关 将容器映像备份到 IBM Cloud Object Storage config.direct.cloud-object-storage.cloud.ibm.com
Red Hat OpenShift on IBM Cloud (ca-mon, in-che, in-mum) 访问 Red Hat OpenShift on IBM Cloud API,创建群集、添加工作池等。 private.<region>.containers.cloud.ibm.com
Red Hat OpenShift on IBM Cloud (其他地区) 访问 Red Hat OpenShift on IBM Cloud API,创建群集、添加工作池等。 api.<region>.containers.cloud.ibm.com
IBM Cloud VPC 访问 VPC API,调配和管理作为 VPC 基础设施即服务 ( IaaS ) 一部分的资源。 <region>.private.iaas.cloud.ibm.com

非共享 VPE 网关

所有受支持的 VPC 群集都有一个用于群集主控的 VPE 网关,创建群集时会在您的账户中创建该网关。

非共享 VPE 网关
该表显示了为 VPC 群集创建的 VPE 网关。 第一列包含网关的名称。 第二栏包括简要说明。
VPE 网关 描述
Red Hat OpenShift on IBM Cloud 集群主站 此 VPE 网关由集群工作程序使用,并且可供 VPC 中的其他内容用于连接到集群的主 API 服务器。 从群集工作者所在的每个区域为该 VPE 网关分配一个单个保留 IP,该 IP 在该区域内有群集工作者的 VPC 子网中创建。†

例如,如果群集仅在单个区域(us-east-1 )和单个 VPC 子网中拥有工作人员,则在该子网中创建单个 IP 并分配给 VPE 网关。 如果集群在所有三个专区 (例如 us-east-1us-east-2us-east-3 ) 中都有工作程序,并且这些工作程序分布在每个专区中的 4 个 VPC 子网中,那么将总共创建 12 个 VPC 子网,在该专区中的四个 VPC 子网之一中创建三个 IP (每个专区中一个 IP)。 请注意,子网是随机选择的。

受管安全组

Red Hat OpenShift on IBM Cloud 会自动为 VPC 集群创建并更新以下安全组和规则。

管理的安全组
该表显示了为 VPC 群集创建的受管安全组。 第一列包含安全组的名称。 第二栏包括命名约定。
安全组 命名约定
工人安全小组 kube-<clusterID>
主 VPE 网关安全组 kube-vpegw-<clusterID>
共享 VPE 网关安全组 kube-vpegw-<vpcID>
负载平衡器服务安全组 kube-lbaas-<clusterID>

工作程序安全组

创建 Red Hat OpenShift on IBM Cloud VPC 群集时,会为指定群集的所有工作者或节点创建一个安全组。

  • 安全组的名称为 kube-<clusterID>,其中 <clusterID> 是集群的标识。
  • 如果稍后将新节点添加到集群,那么会自动将这些节点添加到集群安全组。
  • 负载平衡器可根据需要动态添加或删除规则。
  • 在节点端口范围内添加的规则如果不需要,就会自动删除。 如果客户希望允许传入流量到节点端口服务,则必须在创建节点端口服务后添加允许流量的规则。
  • 请勿修改 kube-<clusterID> 安全组中的规则,因为这样做可能会导致集群的工作程序与控制集群之间的网络连接中断。
kube-clusterID 安全组中的规则
下表显示了应用于群集工作者安全组的规则。 第一列包含规则的协议。 第二列包含端口和类型。 第三列包含规则的远程目标。 第四栏包括规则的简要说明。
描述 方向 协议 端口或值 源或目标
允许到 pod 子网的入站流量。 入站 ICMP/ TCP / UDP 全部 172.17.0.0/18 (缺省子网范围) 或您在创建集群时指定的定制子网范围。
允许对自身进行入站访问,这允许工作程序与工作程序进行通信。 入站 ICMP/ TCP / UDP 全部 kube-<clusterID>
允许入站 ICMP (ping) 访问。 入站 ICMP type=8 0.0.0.0/0
允许来自负载平衡器(ALB/NLB)打开的节点端口的入站流量。 添加或除去负载均衡器时,将动态添加或除去规则。 入站 TCP LoadBalancer 节点端口。 kube-lbaas-<clusterID>
允许到 pod 子网的出站流量。 出站 ICMP/ TCP / UDP 全部 172.17.0.0/18 (缺省子网范围) 或您在创建集群时指定的定制子网范围。
允许出站流量到允许供应工作程序的主控制平面。 出站 ICMP/ TCP / UDP 全部 161.26.0.0/16
允许对自身进行出站访问,这允许工作程序与工作程序进行通信。 出站 ICMP/ TCP / UDP 全部 kube-<clusterID>
允许到主 VPE 网关安全组的出站流量。 出站 ICMP/ TCP / UDP 全部 kube-vpegw-<clusterID>
允许到共享 VPE 网关安全组的出站流量。 出站 ICMP/ TCP / UDP 全部 kube-vpegw-<vpcID>
允许通过集群所在 MZR 的所有专区的 OAuth 端口到公共端点的流量。* 出站 TCP Oauth 端口 MZR 的所有区域的公共端点 IP。
允许 TCP 流量通过入口 ALB 出站 TCP Ports:Min=443,Max=443 ALB 公共 IP 地址 n
允许 TCP 和 UDP 流量通过 n 区域的自定义 DNS 解析器传输。** 出站 TCP/UDP Min=53,Max=53 区域 n 中的 DNS 解析器 IP 地址。
允许流量到整个 CSE 服务范围。 出站 ICMP/ TCP / UDP 全部 166.8.0.0/14
允许所有专区的 IAM 专用端点的流量。 IP 可能因区域而异。 将为集群所在的每个专区添加一个规则。 出站 ICMP/ TCP / UDP 全部 所有专区的 IAM 专用端点 IP 地址。
允许向实例元数据 API 发送出站流量。 出站 ICMP/ TCP / UDP 全部 169.254.169.254
4.18 及更高版本 允许向实例元数据 API 发送出站流量。 出站 ICMP/ TCP / UDP 全部 169.254.169.254

* 这些规则只添加到已启用公共服务终端的群集中,以允许通过 OAuth 端口访问 OpenShift 网络控制台和公共终端。 针对集群所在的多专区区域 (MZR) 的每个专区添加一个规则。 如果集群位于具有 3 区域的 MZR 中,那么将创建 3 规则。

** Hub 和 Spoke VPC 在 VPC 上使用定制 DNS 解析器。 流量必须流经每个 DNS 解析器的 IP 地址。 通过 53 端口,每个区域有两条规则( TCP 和 UDP )。

主 VPE 网关安全组

创建 VPC 集群时,将在与集群相同的 VPC 中创建虚拟专用端点 (VPE) 网关。 安全名称为 kube-vpegw-<clusterID>,其中 <clusterID> 是群集的 ID。 此 VPE 网关的目的是充当群集主控的网关,群集主控由 IBM Cloud 管理。 VPE 网关在集群具有工作程序的 VPC 中的每个专区中分配一个 IP 地址。

为了仅允许从集群的工作程序节点访问集群的主节点,将为每个集群主 VPE 网关创建一个安全组。 然后,将创建一个远程规则,允许 Ingress 从集群工作程序安全组连接到集群主 VPE 网关上的所需端口。 对于私有连接(包括通过 VPC VPN 的连接),要连接到群集的私有服务端点 VPE 网关,TCP 流量允许来自群集每个活动工作池的子网 CIDR。

主 VPE 网关安全组中的入站规则
下表显示了应用于群集工作者安全组的入站规则。 第一列包含规则的用途。 第二列包含规则的方向。 第三列包含协议。 第四列包含端口或值。 第五栏包括规则的远程目的地。
描述 方向 协议 端口或值 源或目标
允许从集群工作程序安全组到服务器节点端口的入站流量。 入站 TCP 服务器 URL 节点端口 kube-<clusterID>
允许从集群工作程序安全组到 openVPN 或 Konnectivity 端口的入站流量。 入站 TCP Konnectivity 端口 kube-<clusterID>
允许从集群工作程序安全组到 Oauth 端口的入站流量。 入站 TCP Oauth 端口 kube-<clusterID>
CoreOS-enabled集群。 允许从集群工作程序安全组到点火服务器端口的入站流量 入站 TCP Ignition 服务器端口 kube-<clusterID>
允许来自群集中每个活动工作池子网的入站流量。* 入站 TCP 服务器 URL 节点端口 子网 CIDR
允许来自群集中每个活动工作池子网的入站流量。* 入站 TCP OAuth 港 子网 CIDR

* 为每个活动工作池的子网添加一条规则。 如果在三个区域内都有工人,则将添加三条规则(该区域内的每个子网一条)。

共享 VPE 网关安全组

共享 VPE 网关在 VPC 中的第一个群集provisioned.The共享 VPE 网关安全组在创建群集时创建(如果以前的群集不存在)。 安全组的名称是 kube-vpegw-<vpcID> 其中 <vpcID> 是 VPC 的 ID。 然后,将创建一个远程规则,以允许来自给定集群的集群工作程序安全组的 Ingress 连接。 共享 VPE 网关安全组包含该 VPC 中所有集群共享的 VPE 网关。 共享 VPE 网关可能会在以后的版本中添加,以允许连接到其他 IBM Cloud服务。

如果供应集群时此共享 VPE 网关安全组已存在,那么供应过程将识别该安全组,并且不会重新创建该安全组。 但是,仍会在现有共享 VPE 网关安全组与新的工作程序安全组之间添加远程规则。 这样做是为了允许从给定 VPC 中的所有集群进行连接。 将为 VPC 中的每个集群创建一个规则。

最多有 15 条规则可以将其他安全组作为其源或目标。 默认情况下,Red Hat OpenShift on IBM Cloud 为 VPC 中的每个群集应用 1 条针对 kube-<clusterID> 安全组的规则。 由于存在此配额,因此只能在给定的 VPC 中创建 15 个集群。 有关更多信息,请参阅 VPC 配额

共享 VPE 网关安全组中的入站规则
下表显示了应用于共享 VPE 网关安全组的入站规则。 第一栏包括规则的目的。 第二列包含规则的方向。 第三列包含协议。 第四栏包括规则的远程目的地。
描述 方向 协议 源或目标
允许来自指定集群的入站流量。 入站 TCP kube-<clusterID>

负载均衡器服务安全组

连接到所有负载均衡器 (ALB 和 NLB) 的缺省安全组。

  • 每个集群都将获取其自己的唯一安全组,该安全组由集群中的所有负载均衡器共享。
  • 安全组的名称是 kube-lbaas-<clusterID> 其中 <clusterID> 是群集的 ID。
  • 在添加,除去或更新负载均衡器时,将动态添加或删除此安全组上的规则。 请注意,SDNLB 不支持连接安全组。
  • 您可以为该安全组添加规则。 不过,如果某些规则与其他规则不兼容或破坏了功能,则可能会被删除。
负载平衡器安全组规则
下表显示了应用于负载平衡器安全组的规则。 第一列包含规则的用途。 第二列包含规则的方向。 第三列包含协议。 第四列包含端口或值。 第五栏包括规则的远程目的地。
描述 方向 协议 端口或值 源或目标
允许对负载均衡器打开的节点端口进行出站访问。 根据负载均衡器,您可能有多个规则。 出站 TCP 负载均衡器打开的 Node 端口。 kube-<clusterID>
负载均衡器侦听允许从该端口进行入站访问的端口 80。 入站 TCP 公共 LB 端口。 示例 80 0.0.0.0/0
负载均衡器侦听端口 443,以允许从该端口进行入站访问。 入站 TCP 公共 LB 端口。 示例 443 0.0.0.0/0

用户提供 Security Groups

创建 VPC 群集时,最多可提供四个自己拥有的附加安全组。

更多信息,请参阅 创建和管理 VPC 安全组

限制

工作程序节点安全组
由于 VPC 集群中的工作程序节点存在于服务帐户中,并且未在 VPC 基础结构仪表板中列出,因此无法创建安全组并将其应用于工作程序节点实例。 只能修改现有 kube-<clusterID> 安全组。
日志记录和监视
在 4.15 或更高版本的集群上设置日志记录和监视时,在集群中安装日志记录代理程序时必须使用专用服务端点。 如果使用公共端点,那么不会保存日志数据。
使用 RHCOS 工作程序节点监视集群
监视代理程序依赖于操作系统中的内核头,但是 RHCOS 没有内核头。 在此场景中,代理程序返回到 sysdig.com 以使用预编译的代理程序。 在没有公共网络访问的集群中,该过程会失败。现在,新的 Sysdig 部署默认启用 eBPF。 但是,如果您在现有群集上遇到问题,请 验证 eBPF 是否已启用,并在必要时启用它。 另外,也可以允许出站流量,或参阅 Sysdig 文档,了解如何 在空气屏蔽环境中安装代理
VPC 集群配额
最多有 15 条规则可以将其他安全组作为其源或目标。 默认情况下,Red Hat OpenShift on IBM Cloud 为 VPC 中的每个群集应用 1 条针对 kube-<clusterID> 安全组的规则。 由于存在此配额,因此只能在给定的 VPC 中创建 15 个集群。 有关更多信息,请参阅 VPC 配额
VPC 传输中加密 File Storage.
要将 EIT 与“默认安全”群集一起使用,必须在 kube-<clusterID> 安全组中添加以下出站规则。
  • 协议:任何
  • 来源类型:任何类型
  • 资料来源 0.0.0.0/0
  • 目的地 169.254.169.254.
通过公用网络进行备份通信
VPC 集群工作程序使用专用网络与集群主节点进行通信。 先前,对于启用了公共服务端点的 VPC 集群,如果专用网络被阻塞或不可用,那么集群工作程序可能会回退到使用公用网络与集群主节点进行通信。 在“按缺省值保护”集群中,由于来自集群工作程序的公共出站流量被阻塞,因此无法选择回退到公用网络。 您可能希望禁用出站流量保护以允许此公用网络备份选项,但是有更好的替代方法。 相反,如果通过专用网络的工作程序到主节点连接存在临时问题,那么此时可以将临时安全组规则添加到 kube-clusterID 安全组以允许出站流量到集群主节点 apiserver 端口。 稍后,当问题得到解决时,您可以除去临时规则。
OpenShift Data Foundation 和 Portworx 加密
如果计划在没有公用网络访问权的集群中使用 OpenShift Data Foundation 或 Portworx,并且要使用 Hyper Protect Crypto Services 或 Key Protect 进行加密,那么必须创建允许访问 KMS 实例的虚拟专用端点网关 (VPE)。 确保至少将 1 IP 地址从 VPC 中的每个子网绑定到 VPE。