当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驱动才能正确读写加密数据。