用于托管服务的客户管理密钥
要为托管服务使用客户管理密钥(CMK),工作区必须位于Databricks平台E2版本bob体育客户端下载或使用Databricks已为此特性启用的自定义计划。所有新的Databricks帐户和大多数现有帐户现在都是E2。如果您不确定您拥有哪种帐户类型,请与Databricks代表联系。
工作区数据平面vpc可以位于AWS区域ap-northeast-1
,ap-northeast-2
,ap-south-1
,ap-southeast-1
,ap-southeast-2
,ca-central-1
,一来就
,eu-west-2
,eu-central-1
,us-east-1
,us-east-2
,us-west-1
,us-west-2
.
重要的
不能使用VPCus-west-1
如果你想用的话customer-managed键为加密。
有关无服务器计算资源的支持,请参见无服务器计算和客户管理密钥.
客户管理的密钥用例
为了进一步控制数据,您可以添加自己的密钥来保护和控制对某些类型数据的访问。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.www.neidfyre.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.www.neidfyre.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仓库。