Apigee mTLS 簡介

Edge for Private Cloud 4.19.01 版

Apigee mTLS 功能可提高 Edge for Private Cloud 叢集元件之間的通訊安全性。

架構總覽

為確保元件之間的通訊安全,Apigee mTLS 會使用服務網格,在元件之間建立安全、相互驗證的 TLS 連線。

下圖顯示 Apigee mTLS 保護的 Apigee 元件之間的連線 (in red)。圖中顯示的通訊埠為範例,請參閱「通訊埠使用情形」,查看各元件可使用的範圍清單。

(請注意,標示「M」的通訊埠用於管理元件,且必須在元件上開啟,管理伺服器才能存取)。

如上圖所示,Apigee mTLS 可為叢集中大多數元件之間的連線提供安全防護,包括:

來源 目的地
管理伺服器 路由器、MP、QPid、LDAP、Postgres、Zookeeper 和 Cassandra 節點
路由器 回送;Qpid、Zookeeper 和 Cassandra 節點
訊息處理器 回送;Qpid、Zookeeper 和 Cassandra 節點
ZooKeeper 和 Cassandra 其他 Zookeeper 和 Cassandra 節點
Edge UI SMTP (僅限外部 IDP)
Postgres 其他 Postgres、Zookeeper 和 Cassandra 節點

訊息加密/解密

Apigee mTLS 服務網格包含在叢集中每個 ZooKeeper 節點上執行的 Consul 伺服器,以及叢集中每個節點上的下列 Consul 服務:

  • 輸出 Proxy:攔截主機節點上送出的訊息。這項服務會先加密送出的訊息,再傳送至目的地。
  • 輸入 Proxy:攔截主機節點上的收到的訊息。這項服務會先解密收到的訊息,再傳送至最終目的地。

舉例來說,當管理伺服器傳送訊息至路由器時,輸出 Proxy 服務會攔截送出的訊息、加密,然後傳送至路由器。當路由器節點收到訊息時,輸入 Proxy 服務會將訊息解密,然後傳遞至路由器元件進行處理。

這一切對 Edge 元件來說都是透明的:它們不知道 Consul Proxy 服務執行的加密和解密程序。

此外,Apigee mTLS 會使用 iptables 公用程式,這是一項管理流量重新導向的 Linux 防火牆服務。

需求條件

Apigee mTLS 提供符合業界標準的方法,可設定及安裝服務網格。支援套件管理和設定自動化。

由於 Consul Proxy 服務與個別程序的通訊埠指派緊密結合,因此變更一個節點會影響所有其他節點。因此,如果拓撲變更,您必須重新設定及初始化叢集中每個節點的服務。

安裝 Apigee mTLS 前,您的環境必須符合本節所述的下列需求。

這些需求包括:

  • Edge for Private Cloud 版本
  • 一組已安裝並啟用的公用程式
  • 具備適當權限等級的使用者帳戶
  • 管理機器 (建議)

Edge for Private Cloud 需求

Apigee mTLS 支援下列 Edge for Private Cloud 版本 (但並非所有支援的平台,詳情請參閱作業系統需求):

  • 4.19.06
  • 4.19.01

Apigee mTLS 要求私有雲叢集使用的拓撲至少包含三個 Zookeeper 節點。因此,您只能在採用 5、9、12 (多資料中心) 或 13 個節點的拓撲上安裝 Apigee mTLS。詳情請參閱「安裝拓撲」。

OS 需求

Apigee mTLS 支援下列私有雲叢集平台 (mTLS 支援的 OS 取決於私有雲版本):

作業系統 支援的私有雲版本
v4.19.06 v4.50.00 v4.51.00
CentOS
RedHat Enterprise Linux (RHEL)
Oracle Linux
7.5、7.6、7.7 7.5、7.6、7.7、7.8、7.9 7.5、7.6、7.7、7.8、7.9、8.0

公用程式/套件

Apigee mTLS 要求您在叢集中的每部機器 (包括管理機器) 上安裝並啟用下列套件,才能開始安裝程序:

公用程式/套件 說明 安裝後可以移除嗎?
base64 驗證安裝指令碼中的資料。
gnu-bash
gnu-sed
gnu-grep
由安裝指令碼和其他常見工具使用。
iptables 取代預設防火牆 firewalld。
iptables-services 為 iptables 公用程式提供功能。
lsof 由安裝指令碼使用。
nc 驗證 iptables 路由。
openssl 在初始啟動程序期間,於本機簽署憑證。

在安裝期間,您也需要在管理機器上安裝 Consul 套件,以便產生憑證和加密金鑰。

apigee-mtls 套件會安裝及設定 Consul 伺服器,包括叢集中 ZooKeeper 節點上的輸入和輸出 Proxy。

使用者帳戶權限

在叢集中的每個節點上執行 Apigee mTLS 安裝作業的帳戶必須能夠:

  • 啟動、停止、重新啟動及初始化 Apigee 元件
  • 設定防火牆規則
  • 建立新的 OS/系統使用者帳戶
  • 使用 systemctl 啟用、停用、啟動、停止及遮蓋服務

管理機器 (建議)

Apigee 建議您在叢集中設定一個節點,用於執行本文件所述的各項工作,包括:

  1. 安裝 HashiCorp Consul 1.6.2。
  2. 產生並發布憑證/金鑰組和 gossip 加密金鑰。
  3. 更新並發布設定檔。

管理機器必須符合下列條件:

  • 您已按照「安裝 Edge apigee-setup 公用程式」一文所述,在該節點下載並安裝 apigee-service 和 apigee-setup 公用程式。
  • 具備叢集內所有節點的scp/ssh存取權。如要發布設定檔和憑證,您必須具備叢集內所有主機的 scp/ssh 存取權。
  • 您具備管理機器的根存取權。

通訊埠使用情形和指派

本節說明通訊埠的使用方式和指派作業,以支援 Consul 與 Apigee mTLS 之間的通訊。

通訊埠用量:所有執行 apigee-mtls 的節點

叢集中使用 apigee-mtls 服務的所有節點,都必須允許來自 localhost (127.0.0.1) 服務的連線。這樣一來,Consul Proxy 就能在處理傳入和送出的訊息時,與其他服務通訊。

通訊埠用途:Consul 伺服器節點 (執行 ZooKeeper 的節點)

您必須在 Consul 伺服器節點 (執行 ZooKeeper 的節點) 上開啟下列大部分通訊埠,才能接受叢集中所有節點的要求:

節點 Consul 伺服器通訊埠 說明 通訊協定 允許外部 mtls-agents
*
Consul 伺服器 (ZooKeeper 節點) 8300 連結叢集中的所有 Consul 伺服器。 單次點擊收益
8301 處理叢集內的成員資格和廣播訊息。 UDP/TCP
8302 在多個資料中心設定中,處理成員資格和廣播訊息的 WAN 連接埠。 UDP/TCP
8500 處理從相同節點上的程序連至 Consul 伺服器 API 的 HTTP 連線。

這個通訊埠不會用於遠端通訊或協調,只會監聽 localhost。

HTTP
8502 處理從叢集中其他節點連至 Consul 伺服器 API 的 gRPC+HTTPS 連線。 gRPC+HTTPS
8503 處理從叢集中其他節點連至 Consul 伺服器 API 的 HTTPS 連線。 HTTPS
8600 處理 Consul 伺服器的 DNS。 UDP/TCP
* Apigee 建議您將傳入要求限制為僅限叢集成員 (包括跨資料儲存庫)。方法是使用 iptables。

如這個表格所示,執行 consul-server 元件的節點 (ZooKeeper 節點) 必須向執行 apigee-mtls 服務的叢集「所有」成員開啟通訊埠 8301、8302、8502 和 8503,即使跨資料中心也一樣。未執行 ZooKeeper 的節點不需要開啟這些通訊埠。

所有 Consul 節點 (包括執行 ZooKeeper 的節點) 的通訊埠指派

為支援 Consul 通訊,執行下列 Apigee 元件的節點必須允許外部連線至下列範圍內的通訊埠:

Apigee 元件 範圍 每個節點所需的通訊埠數量
Apigee mTLS 10700 至 10799 1
Cassandra 10100 至 10199 2
訊息處理器 10500 至 10599 2
OpenLDAP 10200 至 10299 1
Postgres 10300 至 10399 3
Qpid 10400 至 10499 2
路由器 10600 至 10699 2
ZooKeeper 10001 至 10099 3

Consul 會以簡單的線性方式指派通訊埠。舉例來說,如果叢集有兩個 Postgres 節點,第一個節點會使用兩個通訊埠,因此 Consul 會指派通訊埠 10300 和 10301 給該節點。第二個節點也使用兩個通訊埠,因此 Consol 會將 10302 和 10303 指派給該節點。這項設定適用於所有元件類型。

如您所見,實際通訊埠數量取決於拓撲:如果叢集有兩個 Postgres 節點,則需要開啟四個通訊埠 (兩個節點乘以每個節點兩個通訊埠)。

注意事項:

  • Consul Proxy 無法監聽與 Apigee 服務相同的通訊埠。
  • Consul 只有一個通訊埠位址空間。Consul Proxy 通訊埠指派項目在整個叢集 (包括資料中心) 內不得重複。也就是說,如果主機 A 上的 Proxy A 監聽通訊埠 15000,主機 B 上的 Proxy B 就無法監聽通訊埠 15000。
  • 如前所述,使用的通訊埠數量會因拓撲而異。

在多資料中心設定中,所有執行 mTLS 的主機也必須開啟通訊埠 8302。

您可以自訂 Apigee mTLS 使用的預設通訊埠。如要瞭解如何執行這項操作,請參閱「自訂 Proxy 通訊埠範圍」。

限制

Apigee mTLS 有下列限制:

  • 不會加密節點間的 Cassandra 通訊 (通訊埠 7000)
  • 設定和設定不具冪等性。也就是說,如果您在某個節點上進行一項變更,就必須在所有節點上進行相同的變更;系統不會自動擷取該變更並套用至其他節點。詳情請參閱「變更現有的 apigee-mtls 設定」。

術語

本節會使用下列術語:

字詞 定義
cluster 構成 Edge for Private Cloud 安裝作業的一組機器。
Consul Apigee mTLS 使用的服務網格。如要瞭解 Consul 如何保護私有雲通訊,請參閱 Consul 的安全性模型。
mTLS 相互驗證的 TLS。
服務網格 疊加網路 (或網路中的網路)。
TLS 傳輸層安全標準 (TLS)。用於安全通訊的業界標準驗證通訊協定。