数据存储加密
概述
Lakehouse 支持对存储在对象存储中的表数据进行服务端加密(Server-Side Encryption),采用 AES-256 加密算法,确保您的数据在存储层面得到安全保护。
您可以根据安全合规需求,选择使用云厂商提供的托管密钥,或使用您自有的 KMS 密钥进行加密。
加密模式
Lakehouse 提供两种加密模式:
| 模式 | 说明 |
|---|---|
| 托管加密(推荐) | 使用云厂商对象存储服务提供的托管密钥进行加密,无需额外配置 |
| 自定义 KMS 加密 | 使用您自有的 KMS 密钥进行加密,需提供 KMS ARN(ID) 和 KMS Region |
加密范围
- 您可以在工作空间级别统一开启加密,开启后该工作空间内新建的数据对象将默认加密存储。
- 可以在任意时刻对工作空间设置开启加密,开启后不会影响工作空间中已有的表,只会对新建表应用加密。
使用方式
在创建工作空间时开启加密
-
在创建工作空间页面,开启「存储加密」开关。
-
如果您希望使用托管加密,KMS ARN 留空即可。
-
如果您希望使用自定义 KMS 密钥:
- 填写您的 KMS 密钥 ARN。
- 填写 KMS Region。
在修改工作空间时调整加密设置
- 如果工作空间未使用自定义 KMS 密钥,您可以自由开启或关闭加密开关。
- 如果工作空间已使用自定义 KMS 密钥,加密设置将被锁定,无法关闭加密或修改密钥配置。
密钥管理
- 每个数据对象在其生命周期内只能使用一个密钥,密钥不可变更。
- 您可以创建多个密钥,在加密不同工作空间的数据对象时选用不同的密钥。
- 使用自定义 KMS 密钥后,KMS ARN 和 KMS Region 将变为只读,不可修改。
KMS 请求费用与缓存机制
由于数仓场景下会频繁读写数据,使用自定义 KMS 密钥容易达到云厂商 KMS 服务的 QPS 请求上限,并产生大量的 KMS API 请求费用。为此,Lakehouse 采用了密钥缓存机制来减少对 KMS 的 API 调用,缓存有效期为 5 分钟。这意味着当 KMS 密钥被撤销或失效后,最多仍有 5 分钟的窗口期可以对加密数据进行读写。
常见问题
Q:开启工作空间加密后,历史数据会被加密吗?
不会。开启加密仅对之后新建的数据对象生效,已有数据不受影响。
Q:可以对已加密的表取消加密吗?
不可以。表的加密操作不可逆。
Q:自定义 KMS 密钥配置后可以修改吗?
不可以。一旦配置了自定义 KMS 密钥,密钥信息和加密开关均不可修改。
Q:自定义 KMS 密钥丢失了怎么办?
请务必妥善保管您的自定义 KMS 加密密钥。一旦密钥遗失,Lakehouse 中使用该密钥加密的数据将永久不可读取,且无法恢复。
Q:使用自定义 KMS 加密会产生额外费用吗?
会。每次数据读写都需要调用 KMS API 进行加解密,虽然 Lakehouse 通过 5 分钟的密钥缓存机制减少了请求次数,但在高频读写场景下仍可能产生可观的 KMS 请求费用。该费用产生在您的 KMS 密钥所在的云账户中。建议优先使用托管加密模式以避免此类费用。
