Samza 安全

2018-08-22 18:22 更新

Samza 沒(méi)有提供安全保障,所有安全性都在流系統(tǒng)中實(shí)現(xiàn),或者在 Samza 容器運(yùn)行的環(huán)境中實(shí)現(xiàn)。

保證流系統(tǒng)的安全    

Samza 在流系統(tǒng)級(jí)不提供任何安全性。獨(dú)立的流媒體系統(tǒng)可以加強(qiáng)自己的安全。如果流系統(tǒng)需要用戶(hù)名和密碼才能從特定流中使用,則這些值必須通過(guò)配置提供,并在 StreamConsumer / StreamConsumerFactory 實(shí)現(xiàn)中使用。如果流式傳輸系統(tǒng)使用 SSL 證書(shū)或 Kerberos,也是如此。Samza 運(yùn)行的環(huán)境必須提供相應(yīng)的證書(shū)或 Kerberos 票證,并且必須實(shí)施 StreamConsumer 才能使用這些證書(shū)或票證。

保護(hù) Kafka

Kafka 不提供其主題的安全性,因此 Samza 在使用 Kafka 主題時(shí)不提供任何安全性。

保護(hù) Samza 的環(huán)境

在保護(hù) Samza 容器運(yùn)行的環(huán)境時(shí)要牢記的最重要的事情是 Samza 容器執(zhí)行任意用戶(hù)代碼。他們必須考慮對(duì)抗性的應(yīng)用,并且環(huán)境必須相應(yīng)地鎖定。

配置

Samza 在使用 run-job.sh 腳本啟動(dòng) Samza 作業(yè)時(shí)讀取所有配置。如果配置包含敏感信息,則必須小心為 JobRunner 提供配置。這意味著實(shí)現(xiàn)一個(gè)了解配置安全模型的 ConfigFactory,并以安全的方式將配置解析為 Samza 的 Config 對(duì)象。

在 Samza 作業(yè)執(zhí)行期間,配置將保存在內(nèi)存中。唯一的時(shí)間配置是可見(jiàn)的:

  1. 當(dāng)使用 ConfigFactory 解決配置時(shí)。
  2. run-job.sh 運(yùn)行時(shí),配置將打印到 STDOUT。
  3. 當(dāng) Samza 容器啟動(dòng)時(shí),配置將寫(xiě)入日志。

如果配置包含敏感數(shù)據(jù),則必須確保這三個(gè)點(diǎn)。

端口

默認(rèn)情況下,Samza 容器打開(kāi)的唯一端口是在開(kāi)始時(shí)隨機(jī)選擇的未安全的 JMX 端口。如果不需要,可通過(guò)配置禁用 JMX。有關(guān)詳細(xì)信息,請(qǐng)參閱配置頁(yè)。

用戶(hù)可能會(huì)從 Samza 容器內(nèi)部打開(kāi)端口。如果不希望這樣做,那么執(zhí)行 Samza 容器的用戶(hù)必須具有撤消的適當(dāng)權(quán)限,通常使用 iptables。

日志

Samza 容器日志包含配置,并且可能包含用戶(hù)記錄的任意敏感數(shù)據(jù)。必須向 Samza 容器提供安全的日志目錄。

開(kāi)始 Samza 工作

如果操作員不希望允許 Samza 容器由任意用戶(hù)執(zhí)行,那么 Samza 容器的部署機(jī)制必須保證。通常這意味著控制 run-job.sh 腳本的執(zhí)行。推薦的模式是鎖定 Samza 容器運(yùn)行的機(jī)器,并從保佑的 Web 服務(wù)或特殊機(jī)器執(zhí)行 run-job.sh,并且只允許特定用戶(hù)訪問(wèn)服務(wù)或機(jī)器。

Shell 腳本

有關(guān) Samza 使用的 shell 腳本的詳細(xì)信息,請(qǐng)參閱包裝部分。Samza 容器允許用戶(hù)執(zhí)行任意 shell 命令,因此必須鎖定用戶(hù)權(quán)限,以防止用戶(hù)損壞環(huán)境或讀取敏感數(shù)據(jù)。

Yarn

Samza 提供了即時(shí) YARN 集成。有關(guān)詳細(xì)信息,請(qǐng)查看 Samza 的 YARN 安全頁(yè)面。

Kafka ?

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)