Apigee mTLS 簡介

Apigee mTLS 功能可為私有雲叢集中的元件之間的通訊增添安全性。提供業界標準的設定和安裝服務網格。支援套件管理和設定自動化作業。

架構總覽

為了在元件之間提供安全的通訊,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 服務網格由 Consul 伺服器在叢集內的每個 ZooKeeper 節點上執行,並包含下列叢集中每個節點的 Consul 服務:

  • 輸出 Proxy,會在主機節點上攔截外寄郵件。這項服務會先將外寄郵件加密,再傳送至目的地。
  • 輸入 Proxy,會攔截主機節點上的傳入訊息。這項服務會先將傳入訊息解密,再將其傳送至最終目的地。

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

系統會對 Edge 元件以公開透明的方式進行這些作業:他們不知道 Consul Proxy 服務執行的加密與解密程序。

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

需求條件

您的環境必須符合下列需求,才能安裝 Apigee mTLS:

以下各節將詳細說明這些要求。

版本、平台和拓撲

下表列出 mTLS 需求:

必要性 說明
版本
  • 4.51.00
  • 4.50.00
  • 4 月 19 日
拓撲學 至少須包含三個 Zookeeper 節點。因此,您只能在使用 5、9、12 (多資料中心) 或 13 個節點的拓撲中安裝 Apigee mTLS。詳情請參閱安裝拓撲一文。
平台/作業系統

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

作業系統 支援的私有雲版本
4.19.06 版 4.50.00 版 4.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 私有雲對應版本的對應 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. 產生並發布憑證/金鑰組,以及取得加密金鑰。
  3. 更新並發布設定檔。

設定管理機器時:

  • 請確認您具備 Root 存取權。
  • 按照 安裝 Edge Apigee 設定公用程式的說明,下載並安裝 apigee-serviceapigee-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 伺服器。 RPC
8301 處理叢集內的成員和廣播訊息。 UDP/TCP
8302 多資料中心設定中處理成員資格和廣播訊息的 WAN 通訊埠。 UDP/TCP
8500 處理同一個節點上的程序對 Consul Server API 的 HTTP 連線。

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

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

如上表所示,執行 consul-server 元件 (ZooKeeper 節點) 的節點,必須對執行 apigee-mtls 服務的叢集「所有」成員開啟通訊埠 8301、8302、8502 和 8503。沒有執行 ZooKeeper 的節點,不需要開啟這些通訊埠。

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

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

Apigee 元件 範圍 每個節點所需的通訊埠數量
Apigee mTLS 10700 至 10799 點 1
Cassandra 1,0100 至 10199 點 2
訊息處理器 1,0500 至 10599 人 2
開啟 LDAP 1,0200 至 10299 點 1
Postgres 1,0300 至 10399 點 3
Qpid 值 1,0400 至 10499 點 2
路由器 10600 至 10699 點 2
ZooKeeper 1,0001 至 1,0099 點 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 設定
apigee-mtls

術語

本節使用以下術語:

字詞 定義
叢集 組成 Edge 以用於私有雲的機器群組。
Consul Apigee mTLS 所用的服務網格。想瞭解 Consul 如何保護私有雲通訊安全,請參閱 Consul 的安全性模型
mTLS 已完成經過驗證的傳輸層安全標準 (TLS)。
服務網格 重疊聯播網 (或聯播網內的聯播網)。
TLS 交易層安全性。符合業界標準的通訊通訊協定,可確保通訊安全。