文档

概述

更新时间:
重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

AnalyticDB for MySQL Spark全密态计算引擎是首批通过信通院隐私计算可信执行环境《产品性能》和《安全功能》两项认证的产品,它可以加密敏感数据,避免数据泄露。您可以通过本文,了解Spark全密态计算引擎在安全合规等领域的应用场景、功能优势、以及基础版和高性能版的功能对比。

应用场景

AnalyticDB for MySQL企业版、基础版及湖仓版的Spark全密态计算引擎,可以加密敏感数据,避免数据泄露,并满足敏感数据的合规需求。Spark全密态数据计算引擎常用于解决数据存储与计算安全、敏感数据合规和数据安全共享场景中的数据安全问题。以下是常见的应用场景:

  • 数据存储与计算安全场景:在不可信环境中(如第三方平台),Spark全密态计算引擎可以为关键的数据分析应用(如投资和财务分析)提供数据保护,保证用户数据在存储与计算过程中的安全,降低明文数据泄露风险。例如:投资分析、财务分析等。

  • 敏感数据合规场景:在不可信环境中(如第三方平台),Spark全密态计算引擎可以为应用服务提供安全防护,保证终端用户敏感数据的安全。例如:个人识别数据(PII)、基因等隐私数据在被第三方管理过程中,要满足全程加密的合规要求。

  • 数据安全共享场景:您可以通过控制密钥的所有权,管理数据使用权和数据访问的频次,实现数据安全共享,避免数据泄露。场景如下图所示:

    image

版本介绍

Spark全密态计算引擎分为基础版和高性能版两个版本,区别如下:

  • 基础版:基础版的Spark全密态计算引擎可以将敏感数据以密文形式进行传输和存储,只有密钥拥有者能够解密数据,从而避免了数据泄露。您需要使用客户端工具加密和解密数据,实现明文与密文数据之间的转换,保证数据的可用性。

  • 高性能版(推荐使用):基于基础版Spark全密态引擎提供的数据加密能力,高性能版的Spark全密态计算引擎结合Gluten和Velox,提供了向量化计算的能力,在保证数据传输与存储过程安全的同时,提升了数据处理效率。

基础版和高性能版Spark全密态计算引擎的对比如下:

版本

密态数据的格式

性能(对比开源社区Spark)

兼容性(对比开源社区Spark)

工具依赖

密钥机制

基础版

EncBlocksSource格式

0.5倍

  • SQL语法兼容

  • 数据格式不兼容

依赖Spark提供的客户端工具加解密数据。

支持用户主密钥(MEK)和数据密钥(DEK)两种密钥。详情请参见密钥介绍及处理机制

高性能版

Parquet模块化加密格式

1.9倍

  • SQL语法兼容

  • 数据格式兼容

无依赖。可使用任何支持Parquet模块化加密的工具加解密数据。

支持用户主密钥(MEK)、密钥加密密钥(KEK)和数据密钥(DEK)三种密钥。详情请参见密钥介绍及处理机制

功能优势

功能丰富简单易用

  • 支持所有标准SQL的算子,密态计算应用无需对SQL进行改动,仅需简单配置即可轻松使用。

  • 使用方式与开源社区Spark保持一致。

  • 高性能版支持不同隐私级别数据的混合处理,包括明文表与明文表、明文表与密文表、密文表与密文表的数据集混合联表计算。

  • 计算结果可加密输出,进一步确保数据安全。

数据控制权

  • 密钥管理支持使用自有密钥(BYOK),让用户拥有密钥的完全控制权。高性能版引入Parquet模块化加密格式,用户可以使用自有密钥加解密数据,从而完全掌控数据控制权。关于密钥的详细信息,请参见密钥介绍

  • 高性能版的加密密钥由应用程序管理,密钥在计算过程中由默认应用程序中的InMemoryKMS类保管,并在计算结束后销毁。

高性能

  • 性能提升,高性能版的全密态Spark计算引擎的性能是基础版的4倍,是开源社区Spark 3.2.0版本的1.9倍。

  • 加密方式灵活,支持加密数据文件中的单个数据列,从而减少了不必要的数据I/O开销。

密钥介绍及处理机制

密钥介绍

用户主密钥(MEK)

用户主密钥(Master Enryption Key,简称MEK)是一种高级别的加密密钥,用于加密和保护某个系统或某组数据中的其他密钥。在多层次的密钥管理结构中,用户主密钥位于顶层,不直接用于日常的加密操作,而是用于加密和解密其他下级密钥(即密钥加密密钥和数据密钥),这种分层的方法可以简化密钥管理,提高密钥存储的安全性。

用户主密钥由通用工具(例如:OpenSSL)随机生成,基础版的Spark全密态计算引擎仅支持使用16字节的字符串(Hex编码)作为主密钥,而高性能版的Spark全密态计算引擎支持使用16、24或32字节的字符串(Base64编码)作为主密钥。使用OpenSSL工具随机生成主密钥的命令如下:

# 随机生成一个16个字节长,并用hex编码的密钥
$openssl rand -hex 16
# 随机生成一个24个字节长,并用base64编码的密钥
$openssl rand -base64 24
警告

用户主密钥是访问加密数据的根凭据,一旦丢失密钥,将无法再访问已有的数据。请妥善保管用户主密钥。

密钥加密密钥(KEK

密钥加密密钥(Key Encryption Key,简称KEK)由系统随机生成或用户主密钥派生,并由上级密钥保护。密钥加密密钥(KEK)可以加密或解密数据密钥(DEK),提高密钥安全性。

数据密钥(DEK

数据密钥(Data Encryption Key,简称DEK)通常由系统随机生成或用户主密钥派生,并由上级密钥保护。数据密钥(DEK)用于加密或解密文件中的数据。

加解密过程

基础版Spark全密态计算引擎密钥处理机制

数据加密

在数据加密过程中,基础版Spark全密态计算引擎会从应用配置中获取用户主密钥(MEK),并自动为数据集生成随机的数据密钥(DEK)。其中,数据密钥(DEK)会用于加密文件中的数据,用户主密钥(MEK)用于加密数据密钥(DEK)。

数据解密

在数据解密过程中,基础版Spark全密态计算引擎会从应用配置中获取用户主密钥(MEK),再从文件的元数据中提取数据密钥(DEK)。数据密钥(DEK)会使用用户主密钥(MEK)解密,若用户主密钥(MEK)由应用程序管理,则在本地解密。

高性能版Spark全密态计算引擎密钥处理机制

数据加密

在数据加密过程中,高性能版Spark全密态计算引擎会从应用配置中获取用户主密钥(MEK),并为每个列或文件随机生成密钥加密密钥(KEK)和数据密钥(DEK)。其中,密钥加密密钥(KEK)用于加密数据密钥(DEK),数据密钥(DEK)用于加密文件中的数据。每一个密钥加密密钥(KEK)都有唯一的标识符(16字节),密钥加密密钥(KEK)和数据密钥(DEK)在加密后都会存储在文件的元数据中。

数据解密

在数据解密过程中,高性能版Spark全密态计算引擎会从应用配置中提取用户主密钥(MEK),再从文件的元数据中提取密钥加密密钥(KEK)以及数据密钥(DEK)。密钥加密密钥(KEK)会使用户主密钥(MEK)进行解密,若用户主密钥(MEK)由应用程序管理,则在本地解密。

注意事项

  • 您使用BYOK密钥管理方式时,需要妥善保管自己的密钥。若密钥丢失,数据无法解密。

  • 不同的计算引擎对数据处理的精度会有差别,如果您在使用Spark密态计算引擎时遇到问题,请提交工单联系技术支持。

相关文档