【Spark學習】Apache Spark安全機制

來源:互聯網
上載者:User

標籤:style   blog   http   io   ar   color   使用   sp   java   

Spark版本:1.1.1

本文系從官方文檔翻譯而來,轉載請尊重譯者的工作,註明以下連結:

http://www.cnblogs.com/zhangningbo/p/4135808.html

 

目錄
  • Web UI
  • 事件記錄
  • 網路安全(配置連接埠)
  1. 僅適用於Standalone模式的連接埠
  2. 適用於所有叢集管理器的通用連接埠

 

 

  現在,Spark支援通過共用秘鑰進行認證。啟用認證功能可以通過參數spark.authenticate來配置。此參數控制spark通訊協定是否使用共用秘鑰進行認證。這種認證方式基於握手機制,以確保通訊雙方都有相同的共用秘鑰時才能通訊。如果共用秘鑰不一致,則雙方將無法通訊。可以通過以下過程來建立共用秘鑰:

  • 在spark on YARN部署模式下,配置spark.authenticate為true,就可以自動產生並分發共用秘鑰。每個應用程式都使用唯一的共用秘鑰。
  • 其他部署方式下,應當在每個節點上都配置參數spark.authenticate.secret。此秘鑰將由所有Master、worker及應用程式來使用。
  • 注意:實驗性的Netty shuffle路徑(spark.shuffle.use.netty)是不安全的,因此,如果啟用認證功能就不要使用Netty for shuffle了。

 

Web UI

      通過設定參數spark.ui.filters來使用javax servlet filters就可以實現安全的spark UI。如果使用者有某些不該讓其他人看到的資料,那麼該使用者就會要求UI也能有安全性。使用者指定了Java servlet filter就可以進行認證了。接下來,一旦使用者登入,spark就可以在ACL列表中查詢該使用者是否有權查看UI。配置參數spark.acls.enable和spark.ui.view.acls控制著ACL的行為。注意:啟動應用程式的使用者總是有權訪問UI。在YARN上,spark UI使用標準的YARN web代理機制並通過已安裝的Hadoop filters進行認證。

      spark還支援通過修改ACL表來控制哪個使用者有權修改正在運行著的spark應用程式。比如,kill一個應用程式或任務。這類操作是通過配置spark.acls.enable和spark.modify.acls來控制的。注意:如果你正在認證Web UI,那麼,為了使用Web UI上的kill按鈕,你就必須把使用者添加到view acls表中。在YARN上,修改後的acls被傳入並控制著哪個使用者可以通過YARN介面來訪問web UI。

      如果有多個管理員存在,那麼spark允許在acls中指定多個管理員,讓他們總可以查看所有應用程式,以及修改應用的許可權。這一功能是由配置參數spark.admin.acls來控制的。這在共用叢集上是很有用的,因為這類叢集中往往有多個管理員或者協助使用者偵錯工具的技術支援人員。

 

事件記錄

      如果應用程式正在使用事件記錄記錄功能,那麼,應當手動建立用來存放事件記錄的路徑(spark.eventLog.dir),並賦予其合適的許可權。如果你想讓這些記錄檔也是安全的,那麼,該路徑的許可權應當設為drwxrwxrwxt。該路徑的所有者應該是正在運行history server進程的那個超級使用者,而且使用者組許可權應限制為超級使用者組。這樣做可以讓所有使用者都能對該路徑執行寫操作,但會阻止那些未經授權的使用者刪除或重新命名檔案,除非他們是該檔案或者路徑的所有者。事件記錄檔案由spark建立並賦予許可權,比如只有所有者及其所在使用者組有讀寫權限。

 

網路安全(配置連接埠)

      spark大量使用網路,而且有些環境嚴格要求使用嚴密的防火牆設定。下面是spark用於通訊的主要連接埠,以及如何配置這些連接埠。

僅適用於Standalone模式的連接埠
From To 預設連接埠 用途 配置 備忘
Browser Standalone Master 8080 Web UI spark.master.ui.port / SPARK_MASTER_WEBUI_PORT Jetty-based,僅用於Standalone模式
Browser Standalone Worker 8081 Web UI spark.worker.ui.port / SPARK_WORKER_WEBUI_PORT Jetty-based,僅用於Standalone模式
Driver / Standalone Worker Standalone Master 7077 向叢集提交作業(Submit) SPARK_MASTER_PORT Akka-based。設為0意思是隨機播放連接埠,僅用於Standalone模式
Standalone Master Standalone Worker random 調度executors SPARK_WORKER_PORT Akka-based。設為0意思是隨機播放連接埠,僅用於Standalone模式

 

適用於所有叢集管理器的通用連接埠
From To 預設連接埠 用途 配置 備忘
Browser Application 4040 Web UI spark.ui.port Jetty-based
Browser History Server 18080 Web UI spark.history.ui.port Jetty-based
Executor / Standalone Master Driver random 串連到Application,或通知executor狀態變化 spark.driver.port Akka-based。設為0意思是隨機播放連接埠
Driver Executor random 調度任務task spark.executor.port Akka-based。設為0意思是隨機播放連接埠
Executor Driver random files和jars檔案伺服器 spark.fileserver.port Jetty-based
Executor Driver random HTTP廣播 spark.broadcast.port Jetty-based,TorrentBroadcast不使用該連接埠,它通過block manager發送資料
Executor Driver random 類(class)檔案伺服器 spark.replClassServer.port Jetty-based,僅用於spark shell
Executor / Driver Executor / Driver random Block Manager連接埠 spark.blockManager.port Raw socket via ServerSocketChannel

       有關安全的配置參數詳見配置頁面,安全機制的實現參考 org.apache.spark.SecurityManager。

 

【Spark學習】Apache Spark安全機制

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.