当DBA或开发人员等高权限角色在维护数据库时,可能接触到生产环境中的敏感数据(如用户身份信息、交易记录),存在数据泄露风险。PolarDB MySQL版的全密态PolarMySQL功能,能够在数据库代理(Proxy)层对查询结果进行实时加密,确保只有经过授权的应用(通过特定驱动)才能解密和访问敏感数据。此功能可在修改少量应用代码的情况下,实现对敏感数据的安全保护,满足合规性要求。
工作原理
全密态PolarMySQL功能在数据库代理(Proxy)层生效。当一个SQL查询命中已设定的加密策略时,代理层会在将查询结果返回给客户端前,对指定字段的数据进行加密。
适用范围
PolarDB MySQL版集群的数据库代理(Proxy)版本需为2.9.12及以上。
- 查看版本号:您可在集群的中查看当前集群的数据库代理(Proxy)版本。 
- 版本兼容性:数据库代理版本低于2.9.12但高于2.8.18,则加密规则的配置界面是与动态脱敏功能合并在一起的。为获得最佳体验和功能独立性,建议您升级至2.9.12或更高版本。 
配置动态加密
配置动态加密主要包括三个步骤:配置密钥、定义角色权限、创建加密策略。
操作流程
- 前往PolarDB控制台,在左侧导航栏单击集群列表,选择集群所在地域,并单击目标集群ID进入集群详情页。 
- 在左侧导航栏中,单击,并进入加密页签进行操作。 
步骤一:配置密钥
在加密页面,单击密钥管理开关。以配置用于应用程序加密和解密的密钥。
- 使用KMS密钥(推荐) 
 通过阿里云密钥管理服务(KMS)托管密钥,支持密钥轮转(自动更新密钥),提供了高安全性和可维护性。即使访问KMS的AK发生泄露,也可以通过禁用AK或收紧权限策略来控制风险,密钥本身不会泄露。
- 使用自持密钥 
 如未配置KMS,系统将默认采用自持密钥模式,您需自行生成、分发及保管密钥。重要- 自持密钥存在丢失和泄露风险。密钥一旦丢失,对应的加密数据将无法解密,需建立严格的安全流程来管理密钥。 

步骤二:定义角色权限
在加密页面的客户角色权限设置页签,配置不同数据库账号的角色,以决定其查询数据时看到的是明文还是密文。
- 单击新建角色权限策略。 
- 在角色权限设置弹窗中,设置权限策略名称和角色的数据库账号。 - 权限策略名称:指定策略名称。字符长度不能超过64个字符。 
- 超级管理员:单击复选框,选择数据库账号,支持多选。此列表中的数据库账号查询结果将始终为明文。 说明- 超级管理员角色拥有最高权限,仅将必要的管理账号或审计账号加入此列表,并严格控制其使用。 
- 普通用户:单击复选框,选择数据库账号,支持多选。此列表中的数据库账号查询结果为密文,但可以使用特定的加密驱动与密钥进行解密。 
 说明- 其他用户:未在以上两个角色列表中配置的任何数据库账号。查询结果为密文,且无法解密。 

步骤三:创建并启用加密策略
在加密页面的加密策略设置页签,配置加密策略。
- 单击新建加密策略。 
- 在弹出的对话框中,根据下表配置策略参数。 说明- 建议精确指定加密范围:创建策略时,应始终明确指定数据库名、表名与字段名,避免使用所有数据库或所有表的配置,以防影响无关业务。 - 参数 - 说明 - 规则名称 - 必填。策略的唯一标识,例如 - encrypt-user-email。长度不超过64个字符。- 规则描述 - 选填。策略的详细说明,例如 - 加密customer库user表中的email字段。长度不超过64个字符。- 启/禁规则 - 控制策略生效的开关。新建时默认启用,且不可修改。如需调整,可在新建后进行相应修改。 - 关联权限策略 - 必填。选择在步骤二中定义的角色权限。 - 数据库 - 选填。指定策略生效的数据库。支持如下选型: - (默认)所有数据库:对集群内所有数据库生效。 
- 填写指定数据库:仅对指定的数据库生效,多个库名用英文逗号 - ,分隔。
 - 表名 - 选填。指定策略生效的表。支持如下选型: - (默认)所有表:对指定数据库内的所有表生效。 
- 填写指定表:仅对指定的表生效,多个表名用英文逗号 - ,分隔。
 - 字段名 - 必填。需要加密的字段名称,多个字段名用英文逗号 - ,分隔。- 加密算法 - 必填。选择用于加密的算法。目前支持的算法有: - SM4系列: - SM4-128-CBC、- SM4-128-ECB、- SM4-128-GCM、- SM4-128-GTR。
- AES-128系列: - AES-128-CBC、- AES-128-ECB、- AES-128-GCM、- AES-128-GTR。
- AES-256系列: - AES-256-CBC、- AES-256-ECB、- AES-256-GCM、- AES-256-GTR。
 
- 单击确定完成创建。 
步骤四:管理加密策略
在加密页面的加密策略设置页签,您可以在策略列表中,可对已创建的策略进行管理。
- 修改策略:找到目标规则,在操作列单击修改。 
- 删除策略:找到目标规则,在操作列单击删除,并在弹出的对话框中单击确定。 
- 启/禁策略:找到目标规则,单击启/禁规则列的开关。 
权限收敛与安全加固
为防止拥有控制台权限的DBA或开发人员恶意篡改或删除加密策略,您可使用RAM(访问控制)进行权限加固。
核心思路
为相关人员创建独立的RAM用户,并授予其管理PolarDB的权限,但明确拒绝其修改或删除加密策略的权限。
操作说明
- 创建禁用修改策略 
- 配置RAM用户权限 - 登录RAM控制台,在左侧导航栏选择身份管理>用户,找到目标RAM用户,单击操作列的添加权限。 
- 在权限策略区域中,选择上述创建的禁用修改策略,并单击确认新增授权。 
 
效果展示
被限制的RAM用户在尝试修改或删除加密策略时,将收到权限不足的错误提示。
后续步骤
配置好加密规则后,应用程序需通过集成了加密功能的JDBC驱动(EncJDBC)或GoLang驱动才能正确读写加密数据。