了解預設安全的集群 VPC 網絡
虛擬私有雲 4.15 及後
從版本 4.15 建立的新 VPC 群集開始,Red Hat OpenShift on IBM Cloud 引進了稱為 Secure by Default Cluster VPC Networking 的新安全功能。 使用「預設安全保護」,會有新的 VPC 設定,例如當您建立 VPC 叢集時自動建立的受管理安全群組、安全群組規則及虛擬專用端點閘道 (VPE)。 檢視以下有關 VPC 元件的詳細資訊,這些元件會在您建立 4.15 及以後版本的群集時為您建立和管理。
概觀
使用 Secure by Default Networking,當您佈建新的 Red Hat OpenShift on IBM Cloud VPC 叢集 4.15 版或更新版本時,只容許叢集運作所需的資料流量,並封鎖所有其他存取。 為了實作 Secure by Default Networking,Red Hat OpenShift on IBM Cloud 使用各種安全群組和安全群組規則來保護叢集元件。 這些安全群組及規則會自動建立並連接至工作者節點、負載平衡器及叢集相關 VPE 閘道。
Virtual Private Cloud 安全群組會過濾 Hypervisor 層次的資料流量。 不會以特定順序套用安全群組規則。 不過,只有在要求符合您指定的其中一個規則時,才允許對工作者節點提出要求。 當您透過建立入埠或出埠規則來容許單向的資料流量時,也允許反向的回應。 安全群組是附加的,表示如果工作者節點連接至多個安全群組,則安全群組中包含的所有規則都會套用至工作者節點。 較新的叢集版本在 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」。
受管理安全群組
Red Hat OpenShift on IBM Cloud 會自動建立並更新 VPC 叢集的下列安全群組和規則。
| 安全群組 | 命名慣例 |
|---|---|
| 工人安全群組 | kube-<clusterID> |
| 主 VPE 閘道安全群組 | kube-vpegw-<clusterID> |
| 共用 VPE 閘道安全群組 | kube-vpegw-<vpcID> |
| 負載平衡服務安全群組 | kube-lbaas-<clusterID> |
工作者安全群組
當您建立 Red Hat OpenShift on IBM Cloud VPC 群集時,會為指定群集的所有工作者或節點建立安全群組。
- 安全群組的名稱是
kube-<clusterID>,其中<clusterID>是叢集的 ID。 - 如果稍後將新節點新增至叢集,則這些節點會自動新增至叢集安全群組。
- 負載平衡器可根據需要動態新增或移除規則。
- 在節點連接埠範圍中新增的規則,如果不需要,會自動移除。 如果客戶要允許傳入流量到節點連接埠服務,您必須在建立節點連接埠服務後,新增允許流量的規則。
- 請勿修改
kube-<clusterID>安全群組中的規則,因為這樣做可能會導致叢集的工作者節點與控制叢集之間的網路連線功能中斷。
| 說明 | 方向 | 通訊協定 | 埠或值 | 來源或目的地 |
|---|---|---|---|---|
| 容許 Pod 子網路的入埠資料流量。 | 入埠 | ICMP/ TCP / UDP | 全部 | 172.17.0.0/18 (預設子網路範圍) 或您在建立叢集時指定的自訂子網路範圍。 |
| 容許對自身的入埠存取,這容許工作者節點對工作者節點的通訊。 | 入埠 | ICMP/ TCP / UDP | 全部 | kube-<clusterID> |
| 容許入埠 ICMP (連線測試) 存取。 | 入埠 | 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 流量通過 Ingress 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 閘道建立安全群組。 然後會建立遠端規則,容許從叢集工作者安全群組到叢集主要 VPE 閘道上的必要埠的 Ingress 連線功能。 對於私有連線 (包括透過 VPC VPN 來的連線),若要連線至群集的私有服務端點 VPE 閘道,TCP 流量允許來自群集每個作用中工作人員池的子網路 CIDR。
| 說明 | 方向 | 通訊協定 | 埠或值 | 來源或目的地 |
|---|---|---|---|---|
| 容許從叢集工作程式安全群組到伺服器節點埠的入埠資料流量。 | 入埠 | TCP | 伺服器 URL 節點連接埠 | kube-<clusterID> |
| 容許從叢集工作者節點安全群組到 openVPN 或 Konnectivity 埠的入埠資料流量。 | 入埠 | TCP | Konnectivity 埠 | kube-<clusterID> |
| 容許從叢集工作者安全群組到 Oauth 埠的入埠資料流量。 | 入埠 | TCP | Oauth 埠 | kube-<clusterID> |
| CoreOS-enabled僅集群。 容許從叢集工作者安全群組到點火伺服器埠的入埠資料流量 | 入埠 | TCP | Ignition 伺服器埠 | kube-<clusterID> |
允許群集中每個作用中 Worker pool 的子網路的入站流量。* |
入埠 | TCP | 伺服器 URL 節點連接埠 | 子網路 CIDR |
允許群集中每個作用中 Worker pool 的子網路的入站流量。* |
入埠 | TCP | OAuth 埠 | 子網路 CIDR |
* 每個作用中工作人員池的子網路都會新增一條規則。 如果您在三個區域中都有工作人員,則會新增三個規則 (該區域中的每個子網路一個)。
共用 VPE 閘道安全群組
當 VPC 中的第一個叢集建立時,將建立共用 VPE 網關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 會套用 1 條規則,針對 VPC 中每個群集的 kube-<clusterID> 安全群組。 由於此配額,在給定的 VPC 中只能建立 15 個叢集。 如需相關資訊,請參閱 VPC 配額。
| 說明 | 方向 | 通訊協定 | 來源或目的地 |
|---|---|---|---|
| 容許來自指定叢集的入埠資料流量。 | 入埠 | 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 文件,以 在 air-gapped 環境中安裝代理程式。 - VPC 叢集配額
- 最多有 15 個規則可以以其他安全群組作為其來源或目的地。 預設情況下,Red Hat OpenShift on IBM Cloud 會套用 1 條規則,針對 VPC 中每個群集的
kube-<clusterID>安全群組。 由於此配額,在給定的 VPC 中只能建立 15 個叢集。 如需相關資訊,請參閱 VPC 配額。 - VPC 的傳輸中加密 File Storage.
- 若要在 Secure by Default 群集中使用 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)。 請確保從 VPC 中的每一個子網路至少將 1 個 IP 位址連結至 VPE。