Apigee mTLS 簡介

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 前,環境必須符合下列需求:

以下各節將詳細說明這些規定。

版本、平台和拓撲

下表列出 mTLS 相關規定:

規定 說明
版本
  • 4.51.00
  • 4.50.00
  • 4.19.06
拓撲 至少須包含三個 Zookeeper 節點。因此,您只能在採用 5、9、12 (多資料中心) 或 13 個節點的拓撲上安裝 Apigee mTLS。詳情請參閱「安裝拓撲」。
平台/作業系統

請使用下列值,判斷特定 OS 是否支援 Apigee mTLS:

作業系統 支援的私有雲版本
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 不一定支援執行 Apigee mTLS 的對應 Apigee Edge for Private Cloud 版本支援的所有 OS。

舉例來說,如果 v4.19.06 支援 CentOS x 和 y,不一定代表 Apigee mTLS 在 CentOS x 和 y 上支援 v4.19.06。

公用程式/套件

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 存取叢集中的所有節點。您必須這麼做,才能發布設定檔和憑證。

通訊埠使用情形和指派

本節說明通訊埠的使用方式和指派作業,以支援 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)。用於安全通訊的業界標準驗證通訊協定。