通过数据安全中心DSC(Data Security Center)提供的列加密功能,可以实现对RDS PostgreSQL敏感列数据加密访问,防止非授权人员通过云平台软件或数据库连接工具直接访问敏感数据明文。该功能可确保列数据在数据库内可用但不可见,有效防御来自云平台内部与外部的安全威胁,从而使云上数据真正成为用户的私有资产。
前提条件
实例大版本为RDS PostgreSQL 16且内核小版本在20250228及以上。
实例位于以下地域内:
地域类型
地域名称
中国内地
华北1(青岛)、华北2(北京)、华北3(张家口)、华北5(呼和浩特)、华东1(杭州)、华东2(上海)、华南1(深圳)、华南3(广州)、西南1(成都)。
非中国内地
中国香港、新加坡(新加坡)、马来西亚(吉隆坡)、印度尼西亚(雅加达)、德国(法兰克福)。
功能简介
RDS PostgreSQL的列加密功能由数据安全中心DSC提供,其采用AES-256-GCM
加密算法和本地密钥的加密方式,可对数据库中的敏感数据列进行加密配置,确保敏感数据加密后存储,并支持已授权用户通过全密态客户端解密后访问明文数据,您可以自行选择与修改待加密的RDS PostgreSQL实例、数据库、表及列范围。
准备工作
在开启列加密功能前,您需要依次完成以下步骤:开通或升级DSC服务、授权DSC访问云资源、授权数据库资产、连接数据库并执行敏感数据识别任务。
1.开通或升级DSC服务
2.授权DSC访问云资源
3.授权数据库资产
4.连接数据库并执行敏感数据识别任务
开启列加密
登录数据安全中心控制台。在左侧导航栏,选择 。
重要加密检查列显示通过才能开启与配置对应数据库的列加密。如显示未通过,可能是数据库大版本或内核小版本不支持使用列加密服务,具体内容请参见本文常见问题。
单击数据库实例列表上方的一键加密,为所有未加密列配置列加密。
或着您也可以单击目标数据库实例对应操作列的一键加密,为目标数据库实例配置列加密。
在加密配置面板,选择待加密的资产类型、实例名称、明文权限账号以及选择需要配置列加密的目标库、表和列,然后单击确定。您需要注意以下事项:
RDS PostgreSQL仅支持
AES-256-GCM
加密算法和本地加密的加密方式。完成加密配置后,RDS PostgreSQL数据库账号默认权限为密文权限(JDBC解密),默认访问加密列的密文数据,支持通过客户端代码使用本地密钥解密后查看原始明文数据。
如您需要直接访问明文数据,可以在明文权限账号处添加相应的数据库账号,该账号拥有明文权限,可以直接访问加密列的明文数据。
重要如您需要对数据库内的最新数据进行敏感数据分类分级,则被设置为凭据的数据库账号(连接DSC与RDS PostgreSQL实例时使用的数据库账号)需要拥有明文权限。
修改列加密配置
修改加密列范围
开启列加密后,您可以根据自身需求,单独开启或关闭数据库实例内指定列的列加密功能,实现加密列范围的修改。
登录数据安全中心控制台。在左侧导航栏,选择 。
在实例列表展开目标实例,在数据库列表,找到目标库、表和列名称,单击开启加密或关闭加密,配置单列加密。
修改数据库账号权限
除了已设置为明文权限的账号,数据库实例的其他账号均为密文权限(JDBC解密)。您可以根据业务场景需要,修改账号权限为明文权限或密文权限(JDBC解密)。
登录数据安全中心控制台。
在
页面,单击账号数据区域的权限设置。您也可以在实例列表的操作列,单击编辑,在编辑配置面板中,单击账号权限的配置。
在账号权限设置面板,搜索目标实例和账号,查看当前账号权限。
说明若新增数据库账号未在列表中显示,请先完成资产同步后再查看。
单击目标账号对应操作列的修改权限。
您也可以选中多个具备相同权限的目标账号,单击列表下方的批量修改权限。
在修改权限对话框,选中目标权限,单击确定。
验证列加密结果
您可以配置数据库列加密和数据库账号权限,验证列加密结果。
将一个RDS PostgreSQL 16版本的数据库实例接入DSC并完成敏感数据分类分级,对RDS实例内的指定列(以
students01
表的birth_date
列为例)开启列加密。同时,将RDS实例内的一个数据库账号权限设置为明文权限,另一个账号保持密文权限(JDBC解密)。使用带有密文权限(JDBC解密)的账号通过DMS登录数据库,执行
SELECT * FROM students01;
语句查看数据表,加密列会返回密文数据。使用带有明文权限的账号通过DMS登录数据库,执行
SELECT * FROM students01;
语句查看数据表,加密列会返回明文数据。
客户端使用说明
如果您的数据库账号权限为密文权限(JDBC解密),您可以使用列加密驱动(JDBC)接入目标RDS数据库,通过Java应用程序访问数据库中加密的列数据。JDBC能够自动完成密文数据的解密并返回明文数据,过程对应用透明。具体内容,请参见列加密驱动(JDBC)。
常见问题
RDS实例的加密检查“未通过”怎么办?
相关内容
数据库列加密的功能和原理,请参见列加密概述。
如果授权后数据库敏感列数据发生变化,需重新扫描。具体操作,请参见通过识别任务扫描敏感数据。