工作空間存儲的客戶管理鍵

預覽

此功能已在公共預覽

若要為工作空間存儲使用客戶管理的鍵,工作空間必須位於Databricks平台的E2版本Beplay体育安卓版本.所有新的Databricks帳戶和大多數現有帳戶現在都是E2的,在這種情況下,您可以創建新的E2工作區。您帳戶中的一些舊工作區可能不是E2,因此您不能向這些工作區添加用於工作區存儲的客戶管理鍵。如果不確定您擁有的帳戶類型或工作空間處於哪個版本,請與Databricks代表聯係。該功能還需要企業定價層。

工作區數據平麵vpc可以位於AWS區域中ap-northeast-1ap-northeast-2ap-south-1ap-southeast-1ap-southeast-2ca-central-1一來就eu-west-2eu-central-1us-east-1us-east-2us-west-1,us-west-2.,不能使用VPCus-west-1如果你想用customer-managed鍵為加密。

簡介

要對數據進行額外的控製,可以添加自己的密鑰來保護和控製對某些類型數據的訪問。Databricks有兩個客戶管理的關鍵特性,涉及到不同類型的數據和位置。有關比較,請參見用於加密的客戶管理密鑰

雖然Databricks可以加密其他數據,但您可以為工作空間存儲添加客戶管理的密鑰,以保護和控製對以下加密數據類型的訪問:

  • 您的工作區的根S3桶:如果添加了工作空間存儲加密密鑰,Databricks將對AWS帳戶中的AWS S3桶中的數據進行加密您在設置工作區時指定的,它有時被稱為工作區的根S3桶。此桶包含您的工作區DBFS根(例如,工作區庫和FileStore區域)和工作區的係統數據(例如,作業結果、Databricks SQL結果和筆記本修訂)。

  • 您的集群的EBS卷(可選):僅針對Databricks Runtime集群節點和數據庫中的其他計算資源經典的數據平麵,您可以選擇使用密鑰加密虛擬機的遠程EBS卷。的計算資源不適用EBS卷加密Serverless數據平麵

請注意

該特性不影響控製飛機.參見客戶管理的鍵管理服務

在為工作空間添加客戶管理的密鑰加密後,Databricks將使用您的密鑰加密對根S3 bucket中工作空間存儲數據的未來寫操作。現有數據不會重新加密。如果您選擇讓您的密鑰用於EBS實例卷,則該密鑰僅適用於新的或重新啟動的集群。

此特性影響您的DBFS根數據,但它不用於加密數據額外DBFS坐騎例如額外的S3桶。DBFS根目錄包含工作區庫和FileStore區域。注意,對於S3 DBFS掛載,有使用密鑰寫入加密數據的其他方法

為了幫助診斷問題,如果您使用此功能,Databricks建議您在根S3桶上啟用CloudTrail S3對象級日誌

關於更新或共享密鑰的其他注意事項:

  • 在為存儲添加客戶管理的密鑰之後,您以後不能通過為工作區設置不同的密鑰ARN來旋轉密鑰。然而,AWS提供了自動CMK主鍵旋轉,它在不改變鍵ARN的情況下旋轉底層鍵正如AWS文檔中描述的那樣.自動CMK主密鑰旋轉與Databricks客戶管理的存儲密鑰兼容。

  • 你可以分享一個AWS公裏關鍵或者一個磚關鍵配置對於跨工作空間的工作空間存儲加密。

  • 您可以選擇在兩個不同的加密用例之間共享Databricks密鑰配置對象(它引用您的密鑰):此功能(工作空間存儲)和被管理服務的客戶管理鍵.在這兩種情況下,您都可以在期間將密鑰及其Databricks密鑰配置添加到Databricks工作空間工作區創建或者稍後添加它,但隻有托管服務支持稍後旋轉(更新)密鑰。

  • 如果已經為現有工作空間啟用了托管服務加密,則可以為工作空間存儲共享密鑰,但必須這樣做創建並注冊一個新的鍵配置它使用相同的鍵ARN用於工作區存儲。

本文描述如何將用於工作空間存儲的加密密鑰添加到正在運行的工作空間。要創建帶有工作空間存儲加密的新工作空間,請參見使用Account API創建一個新的工作空間.那篇文章描述了如何有選擇地跨兩個加密用例共享密鑰配置:工作區存儲和被管理服務的客戶管理鍵

方法還可以添加加密密鑰磚起程拓殖的提供者而且databricks_mws_customer_managed_keys

步驟1:創建或選擇密鑰

  1. 中的說明在AWS KMS中創建或選擇對稱密鑰創建對稱cmk查看鍵

    重要的

    KMS密鑰必須與您的工作空間在同一個AWS區域中。

  2. 複製這些值,你需要在後麵的步驟:

    • 關鍵是:從控製台或API獲取ARN在攻擊字段)。

    • 關鍵的別名:別名為AWS KMS中的CMK指定顯示名稱。在加密操作中使用別名來標識CMK。有關更多信息,請參閱AWS文檔:AWS:公裏:別名而且使用別名

  3. 關鍵政策頁簽,切換至策略視圖。編輯密鑰策略,以便Databricks可以使用該密鑰執行加密和解密操作。

    選擇下麵的選項卡並單擊複製.隻有在不希望使用此密鑰加密集群EBS卷時,才選擇第二個選項卡。

    將JSON添加到您的鍵策略“聲明”部分。

    “席德”“允許Databricks為DBFS使用KMS密鑰”“效應”“允許”“校長”: {“AWS”“攻擊:aws:我::414351767826:根”},“行動”“公裏:加密”“公裏:解密”公裏:ReEncrypt *”公裏:GenerateDataKey *”“公裏:DescribeKey”],“資源”“*”},“席德”允許Databricks對DBFS使用KMS密鑰(授予)“效應”“允許”“校長”: {“AWS”“攻擊:aws:我::414351767826:根”},“行動”“公裏:CreateGrant”“公裏:ListGrants”“公裏:RevokeGrant”],“資源”“*”“條件”“Bool”“公裏:GrantIsForAWSResource”“真正的”},“席德”“允許Databricks使用EBS KMS密鑰”“效應”“允許”“校長”“AWS”“< aws-arn-for-your-credentials >”},“行動”“公裏:解密”公裏:GenerateDataKey *”“公裏:CreateGrant”“公裏:DescribeKey”],“資源”“*”“條件”“ForAnyValue: StringLike”“公裏:ViaService”“ec2 * .amazonaws.com”。
    “席德”“允許Databricks為DBFS使用KMS密鑰”“效應”“允許”“校長”: {“AWS”“攻擊:aws:我::414351767826:根”},“行動”“公裏:加密”“公裏:解密”公裏:ReEncrypt *”公裏:GenerateDataKey *”“公裏:DescribeKey”],“資源”“*”},“席德”允許Databricks對DBFS使用KMS密鑰(授予)“效應”“允許”“校長”: {“AWS”“攻擊:aws:我::414351767826:根”},“行動”“公裏:CreateGrant”“公裏:ListGrants”“公裏:RevokeGrant”],“資源”“*”“條件”“Bool”“公裏:GrantIsForAWSResource”“真正的”

    有關更多信息,請參閱AWS文章編輯鍵

步驟2:使用Account API創建一個新的密鑰配置

  1. 若要在Databricks注冊您的KMS密鑰,請致電創建客戶管理的密鑰配置API帖子/賬戶/ <帳戶id > / customer-managed-keys),它將創建Databricks密鑰配置。

    傳遞以下參數:

    • use_cases:設置為以下帶有一個元素的JSON數組["存儲"].注意,如果您正在創建新的工作空間,您可以為兩個用例創建一個單一的鍵配置(參見使用Account API創建一個新的工作空間).

    • aws_key_info:具有以下屬性的JSON對象:

      • key_arn: AWS KMS密鑰ARN。注意,Databricks從密鑰ARN推斷AWS區域。

      • key_alias: (可選AWS KMS密鑰別名。

      • reuse_key_for_cluster_volumes: (可選)如果use_case數組中包含了存儲,這指定是否也使用密鑰加密集群EBS卷。默認值為真正的,這意味著Databricks也對集群卷使用該密鑰。如果你把它設為, Databricks不使用指定的密鑰加密EBS卷。在這種情況下,您的Databricks EBS卷使用默認的AWS SSE加密或啟用了加密默認情況下AWS帳戶級別的EBS加密, AWS使用您提供給它們的單獨密鑰強製執行帳戶級別的EBS加密。注意,如果reuse_key_for_cluster_volumes真正的如果您撤銷該密鑰的權限,則不會影響正在運行的集群,但會影響新的和重新啟動的集群。

      示例請求:

      curl -X POST -n“https://accounts.cloud.www.eheci.com/api/2.0/accounts/ < databricks-account-id > / customer-managed-keys '- d”{“use_cases”:“存儲”," aws_key_info ": {:“key_arn攻擊:aws:公裏:us-west-2: < aws-account-id >:鍵/ <鍵id >”,:“key_alias my-example-key”,“reuse_key_for_cluster_volumes”:真的} '

      示例響應:

      “use_cases”“存儲”],“customer_managed_key_id”“< aws-kms-key-id >”“creation_time”1586447506984“account_id”“< databricks-account-id >”“aws_key_info”“key_arn”“攻擊:aws:公裏:us-west-2: < aws-account-id >:鍵/ <鍵id >”“key_alias”“my-example-key”“reuse_key_for_cluster_volumes”真正的“key_region”“us-west-2”
  2. 從響應中複製customer_managed_key_id在步驟4中使用。

步驟3:為跨帳戶IAM角色添加訪問策略(可選)

如果您的KMS密鑰位於不同的AWS帳戶中cross-account我角色用於部署您的工作空間,那麼您必須添加一個策略到跨帳戶IAM角色。此策略允許Databricks訪問您的密鑰。如果您的KMS密鑰與用於部署您的工作空間的跨帳戶IAM角色在同一個AWS帳戶中,那麼您不需要執行此步驟。

  1. 以具有管理員權限的用戶登錄到AWS管理控製台,然後轉到控製台。

  2. 2 .在左側導航區中,單擊角色

  3. 在角色列表中,單擊cross-account我角色你為數據庫創建的。

  4. 添加內聯策略。

    1. 權限選項卡上,單擊添加內嵌策略

      內聯政策
    2. 在策略編輯器中,單擊JSON選項卡。

      JSON編輯器
    3. 複製下麵的訪問策略

      “席德”“AllowUseOfCMKInAccount < AccountIdOfCrossAccountIAMRole >”“效應”“允許”“行動”“公裏:解密”公裏:GenerateDataKey *”“公裏:CreateGrant”“公裏:DescribeKey”],“資源”“攻擊:aws:公裏:<地區>:< AccountIdOfKMSKey >:鍵/ < KMSKeyId >”“條件”“ForAnyValue: StringLike”“公裏:ViaService”“ec2 * .amazonaws.com”。
    4. 點擊審查政策

    5. 的名字字段,輸入策略名稱。

    6. 點擊創建政策

步驟4:關閉所有集群

終止所有正在運行的集群、池和SQL倉庫。

步驟5:使用Account API用您的關鍵配置更新工作區

使用磚賬戶API 2.0更新您的工作空間。

調用Account API操作更新一個工作區補丁/賬戶/ {account_id} /工作區/ {workspace_id}).您需要傳遞的惟一請求參數是storage_customer_managed_key_id財產。將其設置為customer_managed_key_id從JSON響應注冊關鍵配置

例如:

curl -X PATCH -n“https://accounts.cloud.www.eheci.com/api/2.0/accounts/ < databricks-account-id > /工作區/ < workspace-id >”- d”{:“storage_customer_managed_key_id < databricks-key-config-id >”,} '

步驟6:等待關鍵信息傳播

在進行API更新後至少等待20分鍾。

重要的

在此期間,您不能啟動任何集群。

步驟7:重新啟動集群

重新啟動在上一步中終止的所有集群、池和SQL倉庫。