Leo Yeh's Blog

SAS Viya (96)

教學目標

初步了解 SAS Event Stream Processing 安全加密連線的基本概念。

重點概念

首先我們主要會透過設定在「/opt/sas/viya/config/etc/SASEventStreamProcessingEngine/default」目錄中的「esp-properties.yml」設定檔進行安全性部分的相關參數以利啟用加密連線的功能,此外請注意任何安全機制會影響效能,以及後續憑證維護問題,若非企業資訊政所要求,則不建議進行相關設定,儘可能讓日後維運工作越簡單越好,因為對於企業來說關鍵系統的維運非常重要,尤其是即時串流處理分析的實務應用情境之關鍵系統。

接著我們能夠在事件串流處理引擎中的 TCP / IP 連線時啟用加密,主要會使用 C 、 Java 或 Python 發布/訂閱 API 連接至事件流處理伺服器的客戶端建立連線,以及由連接到事件流處理伺服器的適配器建立連線。然而若要啟用加密,我們則必須在執行 ESP 伺服器和客戶端的所有作業系統上安裝 OpenSSL 函式庫,必需要升級至 1.0.2 或更高版本的傳輸層安全性 (TLS) 協議才能支援更進階的加密連線,請注意我們必須在 ESP 伺服器和客戶端上安裝正確的 TLS 憑證,並且客戶端和伺服器強制協商的加密協議和密碼套件符合皆 TLSv1.2。此外正式環境的流量必須僅使用由 CA 簽署的憑證檔,並且當客戶端需要特定的 CA 憑證檔來驗證伺服器時,ESP 伺服器也需要 CA 憑證檔,如果未指定CA 憑證檔,則 SAS Event Stream Processing 將會嘗試使用系統安裝的「/etc/pki/tls/certs/ca-bundle.crt」憑證檔,以及當 ESP 伺服器需要透過 RESTful API 採用與使用者帳戶和認證服務的伺服器器通訊時,伺服器會當成使用者帳戶和認證服務的 HTTPS 客戶端,此時伺服器期望使用者帳戶和認證服務的由 CA 憑證進行簽署,因此除了系統上安裝的 CA 憑證之外,不需要建立連接的特定 CA 憑證。

再來我們如何啟用 ESP 伺服器的安全連線,主要有五個步驟,分別為:

  1. 我們需要將 pubsub_ssl_enabled 和 http_ssl_enabled 設定為 true,以利啟用 TLS 安全連線,預設情況下,這些設定為 false。
  2. 如果我們需要信任自簽憑證,請將 trust_selfsigned 設定為 true,請注意不要在 Windows系統或 Java 客戶端上設定 trust_selfsigned,在Windows系統上,需要將 CA 憑證匯入受信任的根憑證儲存區,在 Java 客戶端上,需要將 CA 憑證匯入受信任的密鑰庫 (Keystore)。
  3. 我們需要指定 server_cert_file 伺服器憑證檔,其中必須包含憑證密鑰和私鑰的串聯,其必須位於設定目錄中,預設悄況下,該檔名為 server.pem。
  4. 我們需要指定 passphrase 密碼以保護伺服器憑證檔,當然我們能夠留空白。
  5. 我們需要指定 ca_cert_file 客戶端憑證檔,其中必須包含客戶端用於在 TLS 握手期間驗證伺服器憑證的憑證頒發機構所簽署的 CA 憑證,其必須位於設定目錄中,預設情況下,該檔名為 ca.pem,如果未找到 ca.pem,則客戶端會嘗試使用系統的預設的 CA 憑證,這些憑證檔必須位於配置目錄中。

ESP 伺服器和客戶端上的安全設定屬性

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
security:   
pubsub_ssl_enabled: true
http_ssl_enabled: true
2_way_authentication: false
trust_selfsigned: true
server:
auth: null
server_cert_file: server.pem
ca_cert_file:
passphrase: passphrase
client:
auth: null
ca_cert_file: ca.pem
client_cert_file:
passphrase:

最後當我們啟用安全連線之後,更需要啟動 SAS Event Stream Processing Studio 啟用傳輸層安全性協議,此時我們必須在 ESP 伺服器上啟用 TLS 傳輸層安全性協議,並且獲取要匯入瀏覽器和 Java 密鑰庫的憑證頒發機構 CA 憑證檔,此時我們主要會執行以下操作,分別為:

  1. 獲取安裝在 SAS Event Stream Processing Studio 系統的 CA 憑證檔,以及存取使者界面的客戶端的 CA 憑證檔。
  2. 在使用者存取 SAS Event Stream Processing Studio 系統上,將客戶端憑證匯入主要的網站瀏覽器之憑證儲存區。
  3. 在執行 SAS Event Stream Processing Studio 系統上,透過執行以下命令將客戶端憑證匯入 Java 密鑰庫。

將客戶端憑證匯入 Java 密鑰庫

1
$ $JAVA_HOME/jre/bin/keytool -importcert -keystore /opt/sas/viya/config/etc/SASSecurityCertificateFramework/cacerts/trustedcerts.jks -file ca.pem -storepass changeit -noprompt -alias myalias

當設定完成之後,我們必須重新啟動 SAS Event Stream Processing Studio 服務,否則會發生 RESTful HTTP API 的錯誤訊息,但是還是建議重新啟動 ESP 伺服器的所有服務。

重新啟動 SAS Event Stream Processing Studio 服務

1
2
$ sudo service sas-viya-espvm-default stop
$ sudo service sas-viya-espvm-default start

相關資源

⬅️ Go back