用於托管服務的客戶管理密鑰
要為托管服務使用客戶管理密鑰(CMK),工作區必須位於Databricks平台E2版本Beplay体育安卓版本或使用Databricks已為此特性啟用的自定義計劃。所有新的Databricks帳戶和大多數現有帳戶現在都是E2。如果您不確定您擁有哪種帳戶類型,請與Databricks代表聯係。
有關支持客戶管理密鑰的區域列表,請參見數據雲和區域.
有關無服務器計算資源的支持,請參見無服務器計算和客戶管理密鑰.
客戶管理的密鑰用例
為了進一步控製數據,您可以添加自己的密鑰來保護和控製對某些類型數據的訪問。Databricks有兩個由客戶管理的關鍵特性。要比較它們,請參見客戶管理的加密密鑰.
管理數據庫中的業務數據控製飛機靜止時加密。您可以為托管服務添加客戶管理密鑰,以幫助保護和控製對以下類型的加密數據的訪問:
筆記本源代碼在數據庫裏控製飛機.
存儲在控製平麵中的Notebook結果以交互方式運行(而不是作為作業)。默認情況下,較大的結果也存儲在工作區根桶中。可以將數據庫配置為將所有交互式筆記本結果存儲在您的雲帳戶中.
儲存的秘密秘密管理器api.
磚的SQL查詢和查詢曆史.
個人訪問令牌(PAT)或用於設置Git與Databricks Repos的集成.
為工作空間添加客戶管理的密鑰加密後,Databricks將使用您的密鑰來控製對該密鑰的訪問,該密鑰將加密未來對工作空間的托管服務數據的寫入操作。現有數據不會重新加密。數據加密密鑰緩存在內存中用於多次讀寫操作,並定期從內存中取出。對該數據的新請求需要向雲服務的密鑰管理係統再次請求。如果刪除或撤銷密鑰,在緩存時間間隔結束時,對受保護數據的讀寫將失敗。
您可以稍後旋轉(更新)客戶管理的密鑰。看到在運行中的工作空間上添加或更新客戶管理的密鑰.
您可以選擇在兩個不同的加密用例之間共享Databricks密鑰配置對象(引用您的密鑰):此特性(托管服務)和用於工作空間存儲的客戶管理密鑰.注意,在這兩種情況下,您都可以將密鑰及其Databricks密鑰配置添加到Databricks工作空間工作區創建或者稍後添加,但隻支持托管服務稍後旋轉(更新)鍵.
請注意
的外部存儲的數據不加密控製飛機.單獨地,你可以加密根S3桶中的數據,並在經典數據平麵中集群EBS卷.
向新工作區添加客戶管理的密鑰
方法創建工作空間時,若要為托管服務添加客戶管理密鑰,則必須添加該密鑰賬戶API.你也可以使用Databricks Terraform提供商而且databricks_mws_customer_managed_keys.
創建密鑰
要配置您的客戶管理密鑰:
複製這些值。當你創建工作區:
在關鍵政策頁簽,切換到策略視圖。編輯密鑰策略,使Databricks可以使用該密鑰執行加密和解密操作。將以下內容添加到密鑰策略中
“聲明”
:{“席德”:允許Databricks對控製平麵的托管服務使用KMS密鑰,“效應”:“允許”,“校長”:{“AWS”:“攻擊:aws:我::414351767826:根”},“行動”:[“公裏:加密”,“公裏:解密”],“資源”:“*”,“條件”:{“StringEquals”:{“aws: PrincipalTag / DatabricksAccountId”:[“< databricks-account-id > (s)”]}}}
請注意
要檢索Databricks帳戶ID,請轉到賬戶控製台然後單擊側邊欄底部的用戶圖標。在這裏您可以看到並複製ID。
有關更多信息,請參閱AWS文章編輯鍵.
為新的工作空間注冊一個鍵
要為新工作空間注冊密鑰,請遵循中的說明使用Account API創建一個新的工作空間,特別是步驟5:配置客戶管理的密鑰(可選).
這些說明說明了如何有選擇地共享此密鑰加密工作區存儲.
在運行中的工作空間上添加或更新客戶管理的密鑰
的方法,可以為正在運行的工作空間上的托管服務添加客戶管理密鑰或旋轉(更新)現有的客戶管理密鑰補丁
請求使用新的密鑰配置ID更新工作區。
如果將托管服務的客戶管理密鑰添加到正在運行的工作空間中,Databricks將使用它進行對托管服務數據的將來寫入操作。導出並重新導入筆記本以更新其存儲。現有數據不會重新加密。
客戶管理的加密密鑰有兩個用例:
您可以選擇兩者都配置,也可以選擇其中之一或兩者都配置。如果您選擇為這兩個用例實現加密,那麼您可以為這些用例共享密鑰,甚至共享相同的配置對象。
這兩個用例在添加鍵的時候有重要的區別:
對於托管服務的客戶管理密鑰,您可以在工作空間創建期間配置它,將密鑰添加到正在運行的工作空間,或者稍後旋轉(更新)密鑰。
對於用於存儲的客戶管理密鑰,您可以在工作空間創建期間或在工作空間創建期間對其進行配置將鍵添加到正在運行的工作區,但是你不能稍後旋轉(更新)鍵。
您可以跨工作空間共享客戶管理的密鑰或其密鑰配置對象。在創建新工作空間時,密鑰配置可以通過設置其use_cases
字段以包括兩個枚舉值。
要使用相同的密鑰實現一個加密用例或兩個加密用例,請隻執行一次以下過程。要為使用不同密鑰的兩個加密用例添加加密,請執行兩次該過程,每個用例一次。
創建AWS KMS密鑰。遵循以下部分中的指示,這些部分僅在人類可讀的描述字段(
sid
),以識別用例。為創建密鑰管理服務或工作區存儲.要共享兩個用例的密鑰和配置,請更新sid
相應的字段。要向Databricks注冊KMS密鑰,請調用創建客戶管理的密鑰配置API(
帖子/賬戶/ <帳戶id > / customer-managed-keys
).傳遞以下參數:
use_cases
—指定使用該鍵的用例的數組,指定以下一個或兩個:MANAGED_SERVICES
:用於管理平麵的筆記本、secret、Databricks SQL查詢等數據的加密。存儲
:該密鑰用於加密工作區存儲,其中包括工作區的DBFS根卷和集群EBS卷。
aws_key_info
:具有以下屬性的JSON對象:key_arn
: AWS KMS密鑰ARN。請注意,Databricks從關鍵ARN推斷AWS區域。key_alias
:(可選AWS KMS密鑰別名。reuse_key_for_cluster_volumes
:(可選)僅在use_cases
數組中包含了存儲
,這指定是否也使用密鑰加密集群EBS卷。默認值為真正的
,這意味著Databricks也將該密鑰用於集群卷。如果你把這個設為假
, Databricks不會使用指定的密鑰加密EBS卷。在這種情況下,您的Databricks EBS卷將使用默認的AWS SSE加密或啟用加密默認情況下,AWS帳戶級EBS加密, AWS使用您提供給它們的單獨密鑰強製執行帳戶級EBS加密。注意,如果reuse_key_for_cluster_volumes
是真正的
當您撤銷該密鑰的權限時,它不會影響正在運行的集群,但會影響新的和重新啟動的集群。
示例請求:
curl -X POST -n\“https://accounts.cloud.m.eheci.com/api/2.0/accounts/ < databricks-account-id > / customer-managed-keys '\- d”{"use_cases": ["MANAGED_SERVICES", "STORAGE"]," aws_key_info ": {:“key_arn攻擊:aws:公裏:<地區>:< aws-account-id >:鍵/ <鍵id >”,:“key_alias my-example-key”,“reuse_key_for_cluster_volumes”:真的}} '
示例響應:
{“use_cases”:[“MANAGED_SERVICES”,“存儲”],“customer_managed_key_id”:“< databricks-key-config-id >”,“creation_time”:1586447506984,“account_id”:“< databricks-account-id >”,“aws_key_info”:{“key_arn”:“攻擊:aws:公裏:<地區>:< aws-account-id >:鍵/ <鍵id >”,“key_alias”:“my-example-key”,“reuse_key_for_cluster_volumes”:真正的,“key_region”:地區“< >”}}
從響應JSON中複製
customer_managed_key_id
.在下一步中使用該ID來設置工作區配置對象的屬性managed_services_customer_managed_key_id
,storage_customer_managed_key_id
,或者兩者都有,具體取決於該對象表示的加密用例。請注意
如果您計劃為兩個CMK用例添加密鑰,請注意,在您已經設置了密鑰之後,工作空間存儲加密不能旋轉(更新)。不要嚐試旋轉工作空間存儲的現有鍵。
終止所有正在運行的集群、池和SQL倉庫。
使用Account API使用密鑰配置更新工作空間。使用數據庫帳戶API 2.0更新您的工作空間。
重要的
執行該命令後,必須將舊的KMS密鑰保留24小時。
調用Account API操作更新工作區(
補丁/賬戶/ {account_id} /工作區/ {workspace_id}
).要為托管服務添加鍵,惟一必需的參數是
managed_services_customer_managed_key_id
.將其設置為JSON響應時注冊密鑰配置.例如:
curl -X PATCH -n\“https://accounts.cloud.m.eheci.com/api/2.0/accounts/ < databricks-account-id > /工作區/ < workspace-id >”\- d”{:“managed_services_customer_managed_key_id < databricks-key-config-id >”,} '
請注意
如果計劃為這兩個用例添加鍵,還可以設置
storage_customer_managed_key_id
變量的相同值。如果同時為托管服務和存儲用例添加密鑰,請在API更新後至少等待20分鍾後再繼續。在此期間,您不能啟動任何集群或使用DBFS API。如果僅為托管服務用例添加密鑰,則可以省略20分鍾的等待。
重新啟動在上一步中終止的所有集群、池和SQL倉庫。