Apigee mTLS 功能可為私有雲叢集的 Edge 中的元件之間提供安全通訊。
架構總覽
為了在元件之間提供安全通訊,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、動物守門員和 Cassandra 節點 |
郵件加密/解密
Apigee mTLS 服務網格是由在叢集中的每個 ZooKeeper 節點上執行的 Consul 伺服器,以及叢集中的每個節點上的下列 Consul 服務組成:
- 輸出 Proxy,用於攔截主機節點上的外寄郵件。這項服務會先加密外寄郵件,再傳送至目的地。
- 這個輸入 Proxy 會攔截主機節點上的傳入訊息。這項服務會先解密收到的訊息,再傳送至最終目的地。
舉例來說,管理伺服器傳送訊息至路由器時,輸出 Proxy 服務會攔截傳出訊息並進行加密,然後再傳送至路由器。當路由器的節點收到訊息時,Ingress Proxy 服務會解密訊息,然後將其傳送至路由器元件進行處理。
這一切都是對 Edge 元件公開進行,他們不知道 Consul Proxy 服務執行的加密與解密程序。
此外,Apigee mTLS 使用 iptables
公用程式,這是管理流量重新導向的 Linux 防火牆服務。
需求條件
Apigee mTLS 提供業界標準的設定及安裝服務網格。支援套件管理和設定自動化。
由於 Consul Proxy 服務與個別程序的通訊埠指派作業緊密耦合,因此對一個節點所做的變更會影響所有其他節點。因此,如果您的拓撲有所變更,您必須在叢集中的每個節點上重新設定服務並重新初始化服務。
您的環境必須符合本節所述的下列需求,才能安裝 Apigee mTLS。
這些需求包括:
- 私有雲版本的邊緣
- 一組已安裝並啟用的公用程式
- 具備適當權限的使用者帳戶
- 管理機器 (建議)
適用於私有雲需求的邊緣
Apigee mTLS 支援下列私有雲的 Edge 版本 (但不適用於所有支援的平台,如 OS 需求所述):
- 4.19.06
- 4.19.01
Apigee mTLS 要求您的私人 Cloud 叢集使用包含至少三個 Zookeeper 節點的拓撲。因此,您只能在使用 5、9、12 (多資料中心) 或 13 個節點的拓撲中安裝 Apigee mTLS。詳情請參閱安裝拓撲。
OS 需求
Apigee mTLS 支援您的私人 Cloud 叢集下列平台 (mTLS 支援的 OS 視 Private Cloud 版本而定):
作業系統 | 支援的私有雲版本 | ||
---|---|---|---|
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
套件會在叢集中的 ZooKeeper 節點中安裝及設定 Consul 伺服器,包括輸入和輸出 Proxy。
使用者帳戶權限
在叢集中的每個節點上執行 Apigee mTLS 安裝程序的帳戶必須能夠:
- 啟動、停止、重新啟動及初始化 Apigee 元件
- 設定防火牆規則
- 建立新的 OS/系統使用者帳戶
- 透過
systemctl
啟用、停用、啟動、停止及遮蓋服務
管理機器 (建議使用)
Apigee 建議在叢集中準備一個節點,可用來執行本文所述的各種工作,包括:
- 安裝 HashiCorp Consul 1.6.2。
- 產生並發布憑證/金鑰組和 gossip 加密金鑰。
- 更新及發布設定檔。
管理機器規定:
- 您已下載並安裝
apigee-service
和apigee-setup
公用程式,如「安裝 Edge apigee-setup 公用程式」所述。 - 具備叢集內所有節點的
scp/ssh
存取權。如要發布設定檔和憑證,您必須擁有叢集內所有主機的scp/ssh
存取權。 - 您具備管理機器的根存取權。
通訊埠用量與指派設定
本節說明通訊埠用量和通訊埠指派作業,以支援與 Apigee mTLS 的 Consul 通訊。
通訊埠用量:所有執行 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 連線。 | HTTPS | ||
8600 |
處理 Consul 伺服器的 DNS。 | UDP/TCP | ||
* Apigee 建議您將傳入要求限制為僅限叢集成員 (包含跨資料儲存庫) 的要求。您可以使用 iptables 執行這項操作。 |
如下表所示,執行 consul-server
元件 (ZooKeeper 節點) 的節點必須開啟通訊埠 8301、8302、8502 和 8503,給執行 apigee-mtls
服務的叢集「所有」成員,甚至是跨資料中心。非執行 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 Proxy 通訊埠指派作業不得重複。這表示如果主機 A 上的 Proxy A 監聽通訊埠 15000,那麼主機 B 上的 Proxy B 就無法監聽通訊埠 15000。
- 如前所述,使用的通訊埠數量會因拓撲而異。
在多資料中心設定中,所有執行 mTLS 的主機也都必須開啟通訊埠 8302。
您可以自訂 Apigee mTLS 使用的預設通訊埠。如需瞭解如何自訂 Proxy 通訊埠範圍,請參閱「自訂 Proxy 通訊埠範圍」。
限制
Apigee mTLS 具有下列限制:
- 不會加密節點間 Cassandra 通訊 (通訊埠 7000)
- 配置和設定不是冪等的。這意味著,如果您在某個節點上進行一項變更,就必須對所有節點進行相同的變更;系統不會捕捉到變更,並為您套用到其他節點。詳情請參閱變更現有的 apigee-mtls 設定。
術語
本節使用下列術語:
字詞 | 定義 |
---|---|
叢集 | 構成 Edge 以進行私有雲安裝的一組機器。 |
阿蘇 | Apigee mTLS 使用的服務網格。如要瞭解 Consul 如何保護私人雲端通訊,請參閱 Consul 的安全性模型。 |
mTLS | 多重驗證傳輸層安全標準 (TLS)。 |
服務網格 | 重疊網路 (或聯播網中的聯播網)。 |
TLS | 交易層安全性符合業界標準的驗證通訊協定,可確保通訊安全。 |