列加密

通过数据安全中心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服务

从未使用数据安全中心,需开通DSC服务

开通DSC服务并启用列加密功能后,可获得列加密免费规格,如需更多列加密数,可额外购买。列加密功能仅适用于数据安全中心 DSC(Data Security Center)免费版高级版企业版7天试用版仅购买增值服务版的用户。

版本

免费规格

免费版

1列。

高级版

1列。

企业版

10列。

7天试用版

10列。

仅购买增值服务版

1列。

  1. 访问数据安全中心购买页,并登录您的阿里云账号。

  2. 选择合适的版本,并开通列加密功能。

    image

  3. 单击立即购买并完成支付。

  4. 您可以在总览页面查看购买版本的功能规格。

已使用数据安全中心,需检查DSC版本与列加密额度,根据需求升级DSC服务

检查DSC版本与列加密额度

您可以登录数据安全中心控制台,在总览页面检查DSC版本与列加密额度:

  • DSC版本:列加密功能仅适用于免费版高级版企业版7天试用版仅购买增值服务版的用户。

  • 列加密额度:检查列加密额度是否满足业务需求。

image

升级DSC服务

当您的DSC版本不符或列加密额度不满足业务需求时,可以升级DSC服务获取更多列加密数。

当前仅支持高级版升级到企业版,或在同版本下灵活升级模块能力(如增加支持的列加密的列数等。其他版本不支持升级,您可以采用以下方式变更版本:

  • 免费版:可以在保留免费版资源的情况下,购买付费版本(如高级版、企业版、仅采购增值服务版等)。

  • 企业版或仅采购增值服务:需先退款再重新购买其他版本,但原版本实例及实例内的数据会被释放。

  • 7天试用版:试用期间不支持升级。试用结束后,您可以开通免费版或购买付费版服务,但会释放已授权和使用的资源和数据。

  • 升级实例配置不支持修改购买时长,即当前实例的剩余服务时长不变。

  1. 登录数据安全中心控制台

  2. 总览页面,单击升级

  3. 在数据安全中心的升级页面,您可以选择升级至企业版,或者在当前版本中开通并购买列加密数。

  4. 单击立即购买并完成支付。

  5. 您可以在总览页面查看变更后的功能规格。

2.授权DSC访问云资源

完成授权后,DSC实例才能访问OSS、RDS、MaxCompute等云服务的资源。

  1. 登录数据安全中心控制台

  2. RAM授权对话框中,单击立即授权

    说明

    如未弹出RAM授权对话框,说明您已授权DSC访问云资源。

3.授权数据库资产

在使用DSC检测云产品(包括RDS、PolarDB等)中存在的敏感数据或审计数据库活动前,您需要先完成资产实例授权。

  1. 登录数据安全中心控制台,在左侧导航栏,选择资产中心

  2. 授权管理页签中,单击资产授权管理

  3. 资产授权管理页面左侧产品名称导航栏中,选择需要授权的数据类型,并单击资产同步

    说明

    购买DSC实例后,首次登录控制台会立即执行云上资产列表同步任务,此时无需执行资产同步操作。后续新增的数据资产DSC会每天凌晨进行扫描并自动同步到对应资产的未授权列表中。存量用户则需要在资产中心 > 授权管理页签中的资产授权管理,手动执行资产同步操作。

  4. 单击目标资产操作列的授权

    需要批量授权时,选中目标资产,并单击批量授权

4.连接数据库并执行敏感数据识别任务

  1. 登录数据安全中心控制台,在左侧导航栏,选择资产中心

  2. 授权管理页签中,单击目标资产实例操作列的账密连接

  3. 账密连接面板,单击目标数据库操作列的添加凭据

  4. 添加凭据对话框,选择凭据,保持选中或取消选中立即扫描数据资产并进行数据识别,单击确定

    若您未创建凭据,需要在添加凭据对话框中单击新建凭据页签,配置数据库登录账号凭证的凭据名称用户名密码凭据类型,并单击确定

    重要
    • 勾选立即扫描数据资产并进行数据识别,DSC会自动创建并立即执行系统默认识别任务。识别任务会读取数据库中的数据,消耗数据库读性能,建议您在业务低峰期执行一键连接操作。

    • 未勾选立即扫描数据资产并进行数据识别,您可以前往导航栏中选择分类分级 > 任务管理,在识别任务页签中的系统默认任务列表中执行重扫,手动执行系统默认任务。

  5. 单击数据库实例左侧的展开图标图标,查看数据库的连接状态和功能状态。

    image

开启列加密

  1. 登录数据安全中心控制台在左侧导航栏,选择风险治理 > 列加密

    重要

    加密检查列显示通过才能开启与配置对应数据库的列加密。如显示未通过,可能是数据库大版本或内核小版本不支持使用列加密服务,具体内容请参见本文常见问题

  2. 单击数据库实例列表上方的一键加密,为所有未加密列配置列加密。

    或着您也可以单击目标数据库实例对应操作列的一键加密,为目标数据库实例配置列加密。

    image

  3. 加密配置面板,选择待加密的资产类型实例名称明文权限账号以及选择需要配置列加密的目标,然后单击确定。您需要注意以下事项:

    • RDS PostgreSQL仅支持AES-256-GCM加密算法和本地加密的加密方式。

    • 完成加密配置后,RDS PostgreSQL数据库账号默认权限为密文权限(JDBC解密),默认访问加密列的密文数据,支持通过客户端代码使用本地密钥解密后查看原始明文数据。

    • 如您需要直接访问明文数据,可以在明文权限账号处添加相应的数据库账号,该账号拥有明文权限,可以直接访问加密列的明文数据。

      重要

      如您需要对数据库内的最新数据进行敏感数据分类分级,则被设置为凭据的数据库账号(连接DSCRDS PostgreSQL实例时使用的数据库账号)需要拥有明文权限

修改列加密配置

修改加密列范围

开启列加密后,您可以根据自身需求,单独开启或关闭数据库实例内指定列的列加密功能,实现加密列范围的修改。

  1. 登录数据安全中心控制台在左侧导航栏,选择风险治理 > 列加密

  2. 在实例列表展开目标实例,在数据库列表,找到目标名称,单击开启加密关闭加密,配置单列加密。

    image

修改数据库账号权限

除了已设置为明文权限的账号,数据库实例的其他账号均为密文权限(JDBC解密)。您可以根据业务场景需要,修改账号权限为明文权限密文权限(JDBC解密)

  1. 登录数据安全中心控制台

  2. 风险治理 > 列加密页面,单击账号数据区域的权限设置

    您也可以在实例列表的操作列,单击编辑,在编辑配置面板中,单击账号权限配置

  3. 账号权限设置面板,搜索目标实例和账号,查看当前账号权限。

    说明

    若新增数据库账号未在列表中显示,请先完成资产同步后再查看。

  4. 单击目标账号对应操作列的修改权限

    您也可以选中多个具备相同权限的目标账号,单击列表下方的批量修改权限

  5. 在修改权限对话框,选中目标权限,单击确定

验证列加密结果

您可以配置数据库列加密和数据库账号权限,验证列加密结果。

  1. 将一个RDS PostgreSQL 16版本的数据库实例接入DSC并完成敏感数据分类分级,对RDS实例内的指定列(students01表的birth_date列为例)开启列加密。同时,将RDS实例内的一个数据库账号权限设置为明文权限,另一个账号保持密文权限(JDBC解密)image

  2. 使用带有密文权限(JDBC解密)的账号通过DMS登录数据库,执行SELECT * FROM students01;语句查看数据表,加密列会返回密文数据。image

  3. 使用带有明文权限的账号通过DMS登录数据库,执行SELECT * FROM students01;语句查看数据表,加密列会返回明文数据。image

客户端使用说明

如果您的数据库账号权限为密文权限(JDBC解密),您可以使用列加密驱动(JDBC)接入目标RDS数据库,通过Java应用程序访问数据库中加密的列数据。JDBC能够自动完成密文数据的解密并返回明文数据,过程对应用透明。具体内容,请参见列加密驱动(JDBC)

常见问题

RDS实例的加密检查“未通过”怎么办?

如果已授权接入的RDS PostgreSQL数据库的版本不是PostgreSQL 16、内核版本小于20250228或为只读实例,加密检查列会显示未通过

  • 数据库版本不支持

    如果确认目标RDS数据库需要进行列加密配置,您可以访问RDS实例列表,找到目标实例,升级数据库版本。具体操作,请参见升级数据库大版本

  • 内核版本不支持

    image

    如果确认目标RDS数据库需要进行列加密配置,您可以单击升级数据库内核,选择升级版本升级时间,然后单击确定,进行内核版本升级。详细说明,请参见升级内核小版本。完成数据库内核升级后,该RDS数据库才支持开启列加密。

    image

  • 只读实例

    由于创建只读实例时会从备实例复制数据,数据与主实例一致,主实例的数据更新也会在主实例完成操作后立即自动同步到所有只读实例,因此您可以在主实例进行列加密配置。

完成版本升级后,您需要在DSC控制台完成资产同步操作,同步数据库最新信息。

  1. 在左侧导航栏,选择资产中心,然后在授权管理页签,单击资产授权管理

  2. 资产授权管理面板左侧产品名称导航栏,单击目标实例类型。

  3. 资产授权管理面板中,单击资产同步

相关内容