数据安全中心 DSC(Data Security Center)支持对RDS MySQL、RDS PostgreSQL、PolarDB MySQL及PolarDB PostgreSQL等数据库类型的数据列进行加密配置,确保数据库中敏感列数据加密后存储,并支持授权用户通过全密态客户端解密后访问加密列的明文数据。
列加密功能仅适用于数据安全中心的免费版、高级版、企业版、7天试用版以及仅采购增值服务版的用户。
使用客户端通过SQL查询加密字段时,不考虑原字段数据类型,返回的数据均会以字符串形式呈现,请谨慎配置列加密。
前提条件
数据库加密限制
支持的数据库类型 | 支持的版本 | 支持的加密算法 | 支持的加密方式 | 支持的权限 |
RDS MySQL版 | 大版本为MySQL 5.7或MySQL 8.0,且内核小版本大于或等于20240731。 |
|
|
|
RDS PostgreSQL版 | 大版本为PostgreSQL 16,且内核小版本必须大于或等于20241230。 | AES-256-GCM。 | 本地密钥。 |
|
PolarDB MySQL版 | 大版本为MySQL 5.7或MySQL 8.0,且数据库代理版本必须大于或等于2.8.36。 | AES-128-GCM。 | 本地密钥。 | |
PolarDB PostgreSQL版 | 大版本为PostgreSQL 14,且数据库版本大于等于2.0.14.15.31.0。 | AES-256-GCM。 | 本地密钥。 |
操作步骤
开通DSC实例后,首次登录控制台使用数据库列加密功能时,需依次完成以下步骤:授权DSC访问云资源、授权并连接数据库资产、执行敏感数据识别任务,开启列加密功能。
步骤一:授权DSC访问云资源
完成授权后,DSC实例才能访问OSS、RDS、MaxCompute等云服务的资源。
登录数据安全中心控制台。
在RAM授权对话框中,单击立即授权。
步骤二:授权数据库资产
在使用DSC检测云产品(包括RDS、PolarDB等)中存在的敏感数据或审计数据库活动前,您需要先完成资产实例授权。
在左侧导航栏,选择资产中心。
在授权管理页签中,单击资产授权管理。
在资产授权管理页面左侧产品名称导航栏中,选择需要授权的数据类型,并单击资产同步。
说明购买DSC实例后,首次登录控制台会立即执行云上资产列表同步任务,此时无需执行资产同步操作。后续新增的数据资产DSC会每天凌晨进行扫描并自动同步到对应资产的未授权列表中。存量用户则需要在 页签中的资产授权管理,手动执行资产同步操作。
单击目标资产操作列的授权。
需要批量授权时,选中目标资产,并单击批量授权。
步骤三:连接数据库
选择合适的方式连接您的数据库,才能实现列加密功能。支持一键连接和账密连接。
您可以根据下表中对应的数据库支持的连接方式和数据安全需要选择合适的连接方式。
如果您的数据库类型支持一键连接,且您没有将当前数据库作为脱敏任务目标数据库的需求,建议您使用一键连接方式。
如果需将数据库作为脱敏任务的目标库,您必须要选择账密连接方式,并使用具有读写权限的账号连接数据库。
连接类型 | 说明 | 支持的数据资产类型 |
一键连接 | 通过控制台按钮一键连接数据库。 在连接过程中,DSC会自动在目标数据资产中添加只读账号,通过该账号连接目标数据库进行数据识别任务;由于该账号仅具有只读权限,一键授权的数据库无法成为脱敏任务的目标数据库。 |
|
账密连接 | 通过手工输入数据库的账号、密码连接数据库。
|
|
一键连接
在左侧导航栏,选择资产中心。
在授权管理页签中,单击目标资产实例操作列的一键连接。
在对话框中勾选立即扫描数据资产并进行数据识别,并单击确定。
重要勾选立即扫描数据资产并进行数据识别,DSC会自动创建并立即执行系统默认识别任务。识别任务会读取数据库中的数据,消耗数据库读性能,建议您在业务低峰期执行一键连接操作。
未勾选立即扫描数据资产并进行数据识别,您可以前往导航栏中选择
,在识别任务页签中的系统默认任务列表中执行重扫,手动执行系统默认任务。
单击数据库实例左侧的
图标,查看数据库的连接状态和功能状态。
账密连接
选择账密连接时,请遵循权限最小化原则,使用独立的数据库账号和密码。
在左侧导航栏,选择资产中心。
在授权管理页签中,单击目标资产实例操作列的账密连接。
在账密连接面板,单击目标数据库操作列的添加凭据。
在添加凭据对话框,选择凭据,保持选中或取消选中立即扫描数据资产并进行数据识别,单击确定。
若您未创建凭据,需要在添加凭据对话框中单击新建凭据页签,配置数据库登录账号凭证的凭据名称、用户名、密码和凭据类型,并单击确定。
重要勾选立即扫描数据资产并进行数据识别,DSC会自动创建并立即执行系统默认识别任务。识别任务会读取数据库中的数据,消耗数据库读性能,建议您在业务低峰期执行一键连接操作。
未勾选立即扫描数据资产并进行数据识别,您可以前往导航栏中选择
,在识别任务页签中的系统默认任务列表中执行重扫,手动执行系统默认任务。
单击数据库实例左侧的
图标,查看数据库的连接状态和功能状态。
步骤四:查看待加密数据库信息
数据识别任务扫描完成后,查看已成功接入DSC的数据库实例信息,包括总列数、列加密情况、数据库账号信息等。
在左侧导航栏,选择 。
在列加密页面查看以下信息。您可通过数据库列表上方的搜索组件,例如资产类型、加密状态(已加密列、未加密列或加密失败)、敏感等级等搜索并查看目标数据库实例信息。
页面信息
说明
总列数
已成功接入DSC的数据库实例包含的数据库表中的总列数。
敏感数据(S3及以上)
数据识别结果中敏感等级为S3及以上的列。其中包含敏感列,已加密列,未加密列,加密失败等信息。
账号数据
总账号数:每个数据库的每个账号计为一个数据库账号,例如:A数据库和B数据库均有账号C,则数据库账号数计为两个。
未配置加密:数据库中所有列都未开启加密时,账号权限为未配置加密。
明文权限或密文权限数:开启数据库的列加密时,可设置数据库账号访问加密列数据的权限。
您可以单击以上统计项的任意数字或单击权限设置,在账号权限设置面板,搜索并查看目标数据库实例下的所有账号信息,以确认为不同数据库账号设置不同访问权限。
列表信息
展示DSC实例名称、资产类型、地域、加密算法、明文权限账号、加密检查等信息。
仅支持对加密检查通过的实例配置列加密。
加密检查结果为“未通过”。如果数据库版本不兼容,请先单击加密检查列的前往升级,跳转到RDS或PolarDB控制台对应的升级页面,升级数据库版本。具体操作请参见检查失败常见问题。
完成版本升级或状态更新后,您需要在DSC控制台完成资产同步操作,同步数据库最新信息。
在左侧导航栏,选择资产中心。,然后在授权管理页签,单击资产授权管理。
在资产授权管理面板左侧产品名称导航栏,单击目标实例类型(RDS或PolarDB),然后单击资产同步。
步骤五:配置列加密
确认目标数据库实例信息且加密检查显示通过后,完成列加密配置。
开启一键加密
未开启数据库的一键加密前,数据库的加密算法和加密方式未配置,此时不支持对数据库的单列开启加密。
单击数据库实例列表上方的一键加密,为所有未加密列配置列加密。
或着您也可以单击目标数据库实例对应操作列的一键加密,为目标数据库实例配置列加密。
在加密配置面板,选择待加密的资产类型、实例名称、加密算法、加密方式、明文权限账号以及选择需要配置列加密的目标库、表和列,然后单击确定。
您需注意以下参数配置:
其他操作
修改数据库账号权限
除了已设置为明文权限的账号,数据库实例的其他账号均为密文权限。您可以根据业务场景需要,修改账号权限为明文权限、密文权限(无解密权限)或密文权限(JDBC解密)。
在
页面,单击账号数据区域的权限设置。您也可以在实例列表的操作列,单击编辑,在编辑配置面板中,单击账号权限的配置。
在账号权限设置面板,搜索目标实例和账号,查看当前账号权限。
说明若新增数据库账号未在列表中显示,请先完成资产同步后再查看。
单击目标账号对应操作列的修改权限。
您也可以选中多个具备相同权限的目标账号,单击列表下方的批量修改权限。
在修改权限对话框,选中目标权限,单击确定。
修改加密列配置
完成加密配置后:
在实例列表展开目标实例,在数据库列表,找到目标库、表和列名称,单击开启加密或关闭加密,配置单列加密。
在实例列表的操作列,单击编辑,然后在编辑配置面板,修改加密算法、加密方式和加密列范围。
单击加密算法或加密方式的修改,更新加密算法或加密方式。
重要修改加密方式会重启加密任务,重启过程中原加密列数据将以明文形式存储,存在数据暴露的安全风险。请谨慎操作。
在配置加密列的数据库列表,找到目标库、表和列名称,单击开启加密或关闭加密,更新加密列范围。
MySQL列加密示例
您可以根据已配置数据库列加密和数据库账号权限,验证访问加密列的数据。使用密文权限账号访问加密列数据返回是密文,表示数据库列加密配置生效。
RDS PostgreSQL数据库账号仅支持明文权限和密文权限(JDBC解密),列加密数据验证方法与RDS MySQL相同,下文以RDS MySQL为例介绍如何验证访问RDS数据库的加密列数据。
RDS MySQL数据库列加密示例
前提条件
RDS MySQL 8.0版本的一个数据库实例已接入DSC并完成敏感数据分类分级,扫描结果如下图所示。
配置列加密
参考上文开启一键加密的操作步骤,对该数据库实例进行列加密配置:
对数据表users中的手机号码列(phone)开启加密。
对绑定的数据库账号,分别设置以下访问权限。
使用数据库账号访问加密列数据
使用明文权限账号登录数据库。具体操作,请参见通过DMS登录RDS数据库。
执行SELECT语句查看数据表,加密列会返回明文数据。
切换密文权限(无解密权限)账号登录数据库,执行SELECT语句查看数据表,加密列会返回密文数据。
切换密文权限(JDBC解密)账号登录数据库,执行SELECT语句查看数据表,加密列会返回密文数据。
PolarDB MySQL数据库列加密示例
前提条件
PolarDB MySQL 5.7版本的一个数据库集群已接入DSC进行敏感数据分类分级,扫描结果如下图所示。
配置列加密
参考上文开启一键加密的操作步骤,对该数据库实例进行列加密配置:
对数据表user3中的密码列(password)开启加密。
对绑定的数据库账号,分别设置以下访问权限。
使用数据库账号访问加密列数据
因为使用DMS是通过主地址连接PolarDB MySQL版数据库集群,列加密策略不生效,所以本示例使用命令行通过数据库代理地址连接PolarDB MySQL版数据库集群,来验证列加密结果。
在服务器上安装与操作系统及版本适配的MySQL。
通过以下命令行连接数据库集群。
mysql -h<连接地址> -P<端口> -u<用户名> -p<密码>
连接地址和端口:使用集群地址,且确保您的服务器能访问该地址。配置和查看连接地址的详细内容,请参见配置数据库代理和管理连接地址。
用户名和密码:本示例分别使用数据库绑定的具备明文权限和密文权限(JDBC解密)的数据库账号和密码。
连接命令行示例:
使用明文权限账号:
mysql -hpc-bp1fd7********v6f.rwlb.rds.aliyuncs.com -P3306 -usddp_polardb -pH********4
。使用密文权限(JDBC解密)账号:
mysql -hpc-bp1fd7********v6f.rwlb.rds.aliyuncs.com -P3306 -usddp_03 -pP********3
。
执行以下命令查看数据表。
通过命令行
use <数据库名>;
,进入目标数据库。本示例选择数据库sddp_test。use sddp_test;
执行SELECT语句查看数据表。
SELECT * FROM user3 LIMIT 0, 3;
返回结果示例:
明文权限账号,加密列返回明文数据。
密文权限(JDBC解密)账号,加密列返回密文数据。
通过客户端解密后访问加密列明文
如果需要使用客户端访问数据库加密列的明文数据,您可以使用具备密文权限(JDBC解密)的账号,通过Java或Go语言的全密态客户端解密并访问。
编程语言 | 支持的数据库类型 | 相关文档 |
Java |
| 集成EncJDBC(支持使用本地密钥和KMS密钥解密) |
Go |
| 集成GoLang驱动(仅支持使用本地密钥解密) |
检查失败常见问题
RDS或PolarDB数据库版本不支持
单击加密检查列的前往升级,跳转到RDS或PolarDB控制台对应的升级页面,升级数据库版本。
RDS内核版本或PolarDB数据库代理版本不支持
RDS数据库实例为只读实例
由于创建只读实例时会从备实例复制数据,数据与主实例一致,主实例的数据更新也会在主实例完成操作后立即自动同步到所有只读实例,因此您可以在主实例进行列加密配置。
数据库实例状态不是“运行中”
例如暂停中或维护中的数据库实例,不支持配置列加密。您可以启动实例或等待实例维护完成,确认数据库实例状态为运行中后再进行列加密配置。
相关文档
数据库列加密的功能和原理,请参见列加密概述。
数据库授权与连接的详细操作,请参见通用数据库授权。
您可以查看和订正敏感数据识别结果的具体操作,请参见通过识别任务扫描敏感数据。
如果授权后数据库敏感列数据发生变化,需重新扫描。具体操作,请参见通过识别任务扫描敏感数据。