如果需要对RDS PostgreSQL敏感列数据进行访问加密,以防止非授权人员通过云平台软件或数据库连接工具直接访问敏感数据明文,可以利用数据安全中心DSC(Data Security Center)提供的列加密功能。该功能能够确保列数据在数据库内可用但不可见,有效防御来自云平台外部及内部的安全威胁,从而使云上数据真正成为用户的私有资产。
前提条件
实例大版本为RDS PostgreSQL 16。
实例内核小版本为20241230及以上。
如需升级内核小版本,请参见升级内核小版本。
已完成目标RDS PostgreSQL数据资产的授权和连接。具体操作,请参见通用数据库授权。
已授权的RDS PostgreSQL实例已执行敏感数据识别任务,完成敏感数据列识别。具体操作,请参见通过识别任务扫描敏感数据。
功能说明
数据安全中心的列加密功能包含加密设置和账号权限管理两部分。加密设置定义加密算法和加密的RDS PostgreSQL数据库实例、库、表以及列范围,账号权限管理用于管控访问所有已加密列数据的数据库账号及其权限。
访问加密列数据原理
开启数据库列加密后,使用对应权限的数据库账号查询数据库表中加密列数据时,数据库会返回加密后数据,在客户端应用时才解密为明文数据,使得数据在除了应用客户端以及数据库内的外部流动中全程以密文形式存在。
数据库账号是指已获得授权接入DSC的RDS PostgreSQL数据库所下拉取的数据库账号。
账号权限说明如下:
权限
说明
权限
说明
密文权限(JDBC解密)
默认访问已加密列数据的密文,支持该账号以SDK方式使用密钥进行解密后查看明文。
开启RDS PostgreSQL数据库的列加密后,对应数据库下所有账号的权限默认设置为此权限。
明文权限
开启数据库列加密后,设置为明文权限的账号,不受列加密设置影响,可直接明文访问加密列信息。
计费说明
DSC为列加密服务免费提供1个字段的加密额度。后续使用该服务,您需要开启列加密服务并购买足够的列加密数,按照包年包月模式计费。计费详情,请参见计费概述。
注意事项
列加密功能对低版本第三方客户端未完全兼容(例如:已加密数据通过数据管理 DMS(Data Management)查看可能会报错),若有需要兼容的,请联系我们进行数据库内核镜像升级。
升级影响:
对于基础版实例,内核镜像更换需要重启实例。
对于高可用或集群版实例,需要进行HA切换,会有分钟级别的闪断。
由于内核镜像的更新,原有加密策略可能需要重新导入生效。
总览列加密统计信息
数据库实例接入DSC后,会在DSC控制台的
页面展示已连接的RDS PostgreSQL数据库实例列表,并根据敏感数据扫描和识别结果展示数据库、表、列以及敏感数据统计等信息。登录数据安全中心控制台。
在左侧导航栏,选择
。在数据库实例列表,您可查看RDS PostgreSQL实例名称、地域和加密检查等信息。您可以通过列表上方的搜索组件,例如资产类型、加密状态、识别模板、识别模型、敏感等级等,搜索并查看目标数据库实例。
展开目标数据库实例,可以查看该实例下的数据库、表、列以及敏感识别结果信息。
在实例列表左上方,可以查看统计的列总数、敏感列(识别到敏感等级为S3及以上的列数)、已加密列(已开启加密且生效成功的列数)、未加密列以及加密失败(已开启加密但生效失败的列数)。
以上统计数据的列均为数据识别结果中敏感等级为S3及以上的列。
在实例列表右上方,可以查看数据库相关的账号统计以及权限设置。
账号总数:每个数据库的每个账号计为一个数据库账号,例如:A数据库和B数据库均有账号C,则数据库账号数计为两个。
未配置加密:数据库中所有列都未开启加密时,账号权限为未配置加密,该数据库下所有账号正常访问所有列数据。
明文权限或密文权限:开启数据库中列加密后,可设置数据库账号访问加密列数据的权限。
配置列加密
对于
页面显示的数据库实例,加密检查列显示通过,才能配置对应数据库的列加密。如果加密检查列显示未通过,可能是数据库版本或内核版本不支持使用列加密服务,需要您手动升级数据库版本或内核版本。具体内容,请参见本文常见问题。
开启列加密
在左侧导航栏,选择
。您可以选择以下方式,批量加密列或开启单列加密。
一键加密(批量列加密)开启加密(单列加密)单击目标数据库实例对应操作列的一键加密。
在右侧面板,选择加密参数,然后单击确定。
参数
说明
资产类型
选择RDS。
实例名称
选择需要设置列加密的RDS实例。
加密算法
目前仅支持默认加密算法:AES-128-GCM。
明文权限账号
完成加密配置后,对应数据库下所有账号都默认设置为密文权限。您可以选择加白的账号,使用明文权限访问加密列数据。
配置加密列
选择需要加密的数据库、表和列。
您可以根据搜索组件,例如识别模板、识别模型、敏感等级、库名称、表名称等,搜索待加密列信息。
在数据库实例列表,展开目标实例,找到目标列,单击操作列的开启加密。该列使用默认加密算法:AES-128-GCM进行加密。
修改数据库账号权限
除了已设置为明文权限的账号,RDS PostgreSQL数据库的其他账号默认为密文权限(JDBC解密)(支持解密后访问明文数据)。
对于已配置且成功生效的加密列数据,您可以根据业务场景,修改账号权限为明文访问或密文权限(JDBC解密)。
在
页面,单击账号数据区域的权限设置。您可以在实例列表的操作列,单击编辑,在右侧面板,单击账号权限的配置。
在账号权限设置面板,搜索目标实例和账号,查看当前账号权限。
单击目标账号对应操作列的修改权限。
您也可以选中多个具备相同权限的目标账号,单击列表下方的批量修改权限。
在修改权限对话框,选中目标权限,单击确定。
修改加密列范围
完成加密配置后:
您可以在实例列表的操作列,单击编辑,修改加密列范围。
您也可以在实例列表展开目标实例,在数据库列表,找到目标列名称,单击开启加密或关闭加密,修改加密列。
验证列加密结果
您可以根据已配置数据库列加密和数据库账号权限,验证访问加密列的数据。
例如,对测试RDS PostgreSQL实例中students01表的gender列进行了加密处理。绑定的数据库账号权限为密文权限(JDBC解密)。
使用密文权限(JDBC解密)权限的测试账号登录数据库。具体操作,请参见连接PostgreSQL实例。
执行SELECT语句查看数据表,加密列会返回密文数据。
将测试账号权限切换为明文访问。具体操作,请参见修改数据库账号权限。
执行SELECT语句查看数据表,加密列会返回明文数据。