Apigee mTLS 功能可為 Private Cloud 叢集 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、Zookeeper 和 Cassandra 節點 |
訊息加密/解密
Apigee mTLS 服務網格包含在叢集中的每個 ZooKeeper 節點上執行的 Consul 伺服器,以及叢集每個節點上的下列 Consul 服務:
- 輸出 Proxy:攔截主機節點上的外寄郵件。這項服務會先加密外寄郵件,再傳送至目的地。
- 傳入 Proxy,可攔截主機節點上的傳入訊息。這項服務會先解密收到的郵件,再傳送至最終目的地。
舉例來說,當管理伺服器將訊息傳送至路由器時,輸出 Proxy 服務會攔截外寄訊息、加密,然後傳送至路由器。當 Router 的節點收到訊息時,入口代理服務會將訊息解密,然後傳遞至 Router 元件進行處理。
這一切都會以公開透明的方式進行,Edge 元件不會察覺 Consul 代理服務執行的加密和解密程序。
此外,Apigee mTLS 會使用 iptables
公用程式,這項 Linux 防火牆服務可管理流量重新導向。
需求條件
安裝 Apigee mTLS 前,環境必須符合下列需求:
以下各節將詳細說明這些規定。
拓撲需求
Apigee mTLS 要求環境拓撲至少要有三個 Zookeeper 節點。因此,您只能在採用 5、9、12 (多資料中心) 或 13 個節點的拓撲上安裝 Apigee mTLS。詳情請參閱「安裝拓撲」。
公用程式/套件
Apigee mTLS 要求您在叢集中的每部機器 (包括管理機器) 上安裝並啟用下列套件,才能開始安裝程序:
公用程式/套件 | 說明 | 安裝後可以移除嗎? |
---|---|---|
base64 |
驗證安裝指令碼中的資料。 | |
gnu-bash gnu-sed gnu-grep |
安裝指令碼和其他常見工具會使用這項設定。 | |
iptables |
取代預設防火牆 firewalld 。 |
|
iptables-services |
為 iptables 公用程式提供功能。 |
|
lsof |
安裝指令碼會使用這個檔案。 | |
nc |
驗證 iptables 路線。 |
|
openssl |
在初始啟動程序期間,於本機簽署憑證。 |
安裝期間,您也會在管理電腦上安裝 Consul 套件,以便產生憑證和加密金鑰。
apigee-mtls
套件會安裝及設定 Consul 伺服器,包括叢集內 ZooKeeper 節點上的 Ingress 和 Egress 代理程式。
使用者帳戶權限
安裝前,請建立新的使用者帳戶,或確認您有權存取具備提升權限的帳戶。
在叢集中的每個節點上執行 Apigee mTLS 安裝作業的帳戶,必須能夠:
- 啟動、停止、重新啟動及初始化 Apigee 元件
- 設定防火牆規則
- 建立新的 OS/系統使用者帳戶
- 使用
systemctl
啟用、停用、啟動、停止及遮蓋服務
管理機器 (建議)
Apigee 建議您在叢集內擁有節點,以便執行本文所述的各種管理工作,包括:
- 安裝 HashiCorp Consul 1.6.2。
- 產生及發布憑證/金鑰組和 Gossip 加密金鑰。
- 更新及發布設定檔。
設定管理電腦時:
- 確認您具備根存取權。
- 按照「安裝 Edge apigee-setup 公用程式」一文所述,在該電腦上下載並安裝
apigee-service
和apigee-setup
公用程式。 - 請確認您可以使用
scp/ssh
,從管理機器存取叢集中的所有節點。您必須這麼做,才能發布設定檔和憑證。
通訊埠用量和指派
本節說明如何使用及指派通訊埠,支援 Consul 與 Apigee mTLS 的通訊。
通訊埠用量:執行 apigee-mtls 的所有節點
使用 apigee-mtls
服務的叢集中的所有節點,都必須允許來自本機主機 (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 |
SymasLDAP | 10200 至 10299 | 1 |
Postgres | 10300 至 10399 | 3 |
Qpid | 10400 至 10499 | 2 |
路由器 | 10600 至 10699 | 2 |
ZooKeeper | 10000 至 10099 | 3 |
Consul 會以簡單的線性方式指派連接埠。舉例來說,如果叢集有兩個 Postgres 節點,第一個節點會使用兩個通訊埠,因此 Consul 會為該節點指派通訊埠 10300 和 10301。第二個節點也會使用兩個通訊埠,因此 Consol 會為該節點指派 10302 和 10303。這項限制適用於所有元件類型。
如您所見,實際的通訊埠數量取決於拓撲:如果叢集有兩個 Postgres 節點,則需要開啟四個通訊埠 (兩個節點,每個節點兩個通訊埠)。
注意事項:
- Consul Proxy 無法監聽與 Apigee 服務相同的通訊埠。
- Consul 只有一個連接埠位址空間。Consul 代理伺服器連接埠指派作業在叢集 (包括資料中心) 中不得重複。也就是說,如果主機 A 上的 Proxy A 監聽通訊埠 15000,主機 B 上的 Proxy B 就無法監聽通訊埠 15000。
- 如前所述,使用的通訊埠數量會因拓撲而異。
在多資料中心設定中,執行 mTLS 的所有主機也必須開啟通訊埠 8302。
您可以自訂 Apigee mTLS 使用的預設連接埠。如要瞭解如何執行這項操作,請參閱「自訂 Proxy 連接埠範圍」。
限制
Apigee mTLS 有下列限制:
- 未加密節點間的 Cassandra 通訊 (通訊埠 7000)
- 設定和設定程序並非等冪。也就是說,如果您在一個節點上進行變更,就必須在所有節點上進行相同變更;系統不會在任何其他節點上為您套用該變更。詳情請參閱「變更現有的 apigee-mtls 設定」。
術語
本節使用下列術語:
字詞 | 定義 |
---|---|
叢集 | 構成 Edge 的機器群組,用於 Private Cloud 安裝作業。 |
Consul | Apigee mTLS 使用的服務網格。如要瞭解 Consul 如何保護私有雲通訊安全,請參閱 Consul 的安全模型。 |
mTLS | 雙向驗證的 TLS。 |
服務網格 | 疊加網路 (或網路內的網路)。 |
TLS | 傳輸層安全協定。業界標準的驗證通訊協定,可確保通訊安全。 |