開始
用戶指南
管理指南
參考指南
資源
2022年7月29日更新
給我們反饋
預覽
此功能已在公共預覽.
重要的
的init腳本示例從存儲在DBFS中的密鑰存儲庫的散列派生其共享加密秘密。如果您通過更新DBFS中的keystore文件來旋轉密鑰,則必須重新啟動所有正在運行的集群。否則,由於共享秘密不一致,可能導致Spark員工無法通過Spark驅動進行身份驗證,導致作業變慢。此外,由於共享秘密存儲在DBFS中,任何具有DBFS訪問權限的用戶都可以使用筆記本檢索秘密。如需進一步指導,請與您的代表聯係。
作為替代方案,您可以使用以下AWS實例類型之一,它們自動加密工作節點之間的數據,而不需要額外的配置:
ca5
c5ad
c5n
c6gn
d3
d3en
g4ad
g4dn
i3en
m5dn
m5n
m5zn
p3dn
p4d
5 dn
5 n
此特性需要企業計劃.有關更多信息,請與您的Databricks帳戶代表聯係。
用戶查詢和轉換通常通過加密通道發送到集群。但是,默認情況下,集群中工作節點之間交換的數據不加密。如果您的環境要求在任何時候都對數據進行加密(無論是在休息時還是在傳輸過程中),那麼您可以創建一個初始化腳本,該腳本配置集群來加密工作節點之間的流量,使用TLS 1.2連接上的AES 128位加密。
請注意
盡管AES使加密例程能夠利用硬件加速,但與未加密的流量相比,它的性能有所下降。這種懲罰會導致查詢在加密集群上花費更長的時間,這取決於節點之間移動的數據量。
啟用工作節點之間的流量加密需要通過init腳本設置Spark配置參數。你可以使用集群級init腳本對於單個集群或全球init腳本如果您希望工作空間中的所有集群都使用工作者對工作者加密。
一次,將keystore文件複製到DBFS中的一個目錄。然後創建應用加密設置的初始化腳本。
初始化腳本必須執行以下任務:
獲取JKS密鑰庫文件和密碼。
設置Spark執行器配置。
設置Spark驅動配置。
用於啟用SSL/HTTPS的JKS keystore文件是為每個工作區動態生成的。JKS密鑰庫文件的密碼是硬編碼的,不打算保護密鑰庫的機密性。
下麵是實現這三個任務以生成集群加密配置的初始化腳本示例。
# !/bin/bash集-euo pipefailkeystore_dbfs_file=“dbfs / < keystore_directory > / jetty_ssl_driver_keystore.jks”##等待直到keystore文件通過Fuse可用max_attempts=30.而[!- f$ {keystore_dbfs_file}];做如果["max_attempts美元"= =0];然後回聲"錯誤:無法找到文件:keystore_dbfs_file美元fail腳本。”退出1fi睡眠2 s((max_attempts——))完成從密鑰庫文件的散列派生共享節點間加密秘密sasl_secret=$ (sha256sumkeystore_dbfs_file美元|切- d' 'f1)如果[- z"$ {sasl_secret}"];然後回聲"錯誤:無法導出秘密。腳本失敗。”退出1fi#啟用SSL/HTTPS使用的JKS密鑰庫文件local_keystore_file="DB_HOME美元/鍵/ jetty_ssl_driver_keystore.jks”# JKS的keystore文件密碼。這個jks密碼是硬編碼的,不打算保護機密性密鑰庫的#。不要假定keystore文件本身是受保護的。local_keystore_password=“gb1gQqZ9ZIHS”隻有驅動程序需要更新spark-branch.conf如果[[DB_IS_DRIVER美元=“真正的”]];然後driver_conf=$ {DB_HOME}/ conf / spark-branch.conf /驅動程序回聲“配置驅動程序conf at。driver_conf美元"如果[!- edriver_conf美元];然後觸摸driver_conf美元fi貓<< EOF >> $driver_conf(司機){//配置節點間認證“火花。驗證”= true“spark.authenticate。秘密”=“sasl_secret美元”//配置AES加密“spark.network.crypto.enabled”= true“spark.network.crypto.saslFallback”= false/ /配置SSL“spark.ssl。啟用“= true“spark.ssl。keyPassword " = " $ local_keystore_password "“spark.ssl。密鑰存儲庫”=“local_keystore_file美元”“spark.ssl。keyStorePassword " = " $ local_keystore_password "“spark.ssl。協議”=“TLSv1.3”“spark.ssl.standalone。啟用“= true“spark.ssl.ui。啟用“= true}EOF回聲"成功配置驅動程序conf at .driver_conf美元"fi#設置spark master和worker的spark-defaults.conf中的配置spark_defaults_conf="DB_HOME美元/ / conf / spark-defaults.conf火花”回聲“配置spark默認conf at。spark_defaults_conf美元"如果[!- espark_defaults_conf美元];然後觸摸spark_defaults_conf美元fi貓<< EOF >> $spark_defaults_conf火花。驗證正確spark.authenticate.secret sasl_secret美元spark.network.crypto.enabled真實spark.network.crypto.saslFallback假spark.ssl.enabled真實spark.ssl.keyPassword local_keystore_password美元spark.ssl.keyStore local_keystore_file美元spark.ssl.keyStorePassword local_keystore_password美元spark.ssl.protocol TLSv1.3spark.ssl.standalone.enabled真實spark.ssl.ui.enabled真實EOF回聲"成功配置spark defaults conf at .spark_defaults_conf美元"
一旦驅動程序和工作節點的初始化完成,這些節點之間的所有通信都將使用keystore文件加密。
下麵的筆記本將複製keystore文件並在DBFS中生成初始化腳本。您可以使用初始化腳本創建啟用加密的新集群。
在新選項卡中打開筆記本
要禁用工作節點之間的加密,請從集群配置中刪除init腳本,然後重新啟動集群。