列加密

更新时间:2025-03-05 07:35

如果需要对RDS PostgreSQL敏感列数据进行访问加密,以防止非授权人员通过云平台软件或数据库连接工具直接访问敏感数据明文,可以利用数据安全中心DSC(Data Security Center)提供的列加密功能。该功能能够确保列数据在数据库内可用但不可见,有效防御来自云平台外部及内部的安全威胁,从而使云上数据真正成为用户的私有资产。

前提条件

功能说明

数据安全中心的列加密功能包含加密设置和账号权限管理两部分。加密设置定义加密算法和加密的RDS PostgreSQL数据库实例、库、表以及列范围,账号权限管理用于管控访问所有已加密列数据的数据库账号及其权限。

访问加密列数据原理

开启数据库列加密后,使用对应权限数据库账号查询数据库表中加密列数据时,数据库会返回加密后数据,在客户端应用时才解密为明文数据,使得数据在除了应用客户端以及数据库内的外部流动中全程以密文形式存在。

  • 数据库账号是指已获得授权接入DSC的RDS PostgreSQL数据库所下拉取的数据库账号。

  • 账号权限说明如下:

    权限

    说明

    权限

    说明

    密文权限(JDBC解密)

    默认访问已加密列数据的密文,支持该账号以SDK方式使用密钥进行解密后查看明文。

    开启RDS PostgreSQL数据库的列加密后,对应数据库下所有账号的权限默认设置为此权限。

    明文权限

    开启数据库列加密后,设置为明文权限的账号,不受列加密设置影响,可直接明文访问加密列信息。

image

计费说明

DSC为列加密服务免费提供1个字段的加密额度。后续使用该服务,您需要开启列加密服务并购买足够的列加密数,按照包年包月模式计费。计费详情,请参见计费概述

注意事项

列加密功能对低版本第三方客户端未完全兼容(例如:已加密数据通过数据管理 DMS(Data Management)查看可能会报错),若有需要兼容的,请联系我们进行数据库内核镜像升级。

升级影响

  • 对于基础版实例,内核镜像更换需要重启实例。

  • 对于高可用或集群版实例,需要进行HA切换,会有分钟级别的闪断。

  • 由于内核镜像的更新,原有加密策略可能需要重新导入生效。

总览列加密统计信息

数据库实例接入DSC后,会在DSC控制台的数据治理 > 列加密页面展示已连接的RDS PostgreSQL数据库实例列表,并根据敏感数据扫描和识别结果展示数据库、表、列以及敏感数据统计等信息。

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

  2. 在左侧导航栏,选择风险治理 > 列加密

  3. 在数据库实例列表,您可查看RDS PostgreSQL实例名称、地域和加密检查等信息。您可以通过列表上方的搜索组件,例如资产类型、加密状态、识别模板、识别模型、敏感等级等,搜索并查看目标数据库实例。

    展开目标数据库实例,可以查看该实例下的数据库、表、列以及敏感识别结果信息。

    image

  4. 在实例列表左上方,可以查看统计的列总数、敏感列(识别到敏感等级为S3及以上的列数)、已加密列(已开启加密且生效成功的列数)、未加密列以及加密失败(已开启加密但生效失败的列数)。

    说明

    以上统计数据的列均为数据识别结果中敏感等级为S3及以上的列。

  5. 在实例列表右上方,可以查看数据库相关的账号统计以及权限设置。

    账号总数:每个数据库的每个账号计为一个数据库账号,例如:A数据库和B数据库均有账号C,则数据库账号数计为两个。

    未配置加密:数据库中所有列都未开启加密时,账号权限为未配置加密,该数据库下所有账号正常访问所有列数据。

    明文权限密文权限:开启数据库中列加密后,可设置数据库账号访问加密列数据的权限。

配置列加密

对于数据治理 > 列加密页面显示的数据库实例,加密检查列显示通过,才能配置对应数据库的列加密。

说明

如果加密检查列显示未通过,可能是数据库版本或内核版本不支持使用列加密服务,需要您手动升级数据库版本或内核版本。具体内容,请参见本文常见问题

开启列加密

  1. 在左侧导航栏,选择风险治理 > 列加密

  2. 您可以选择以下方式,批量加密列或开启单列加密。

    一键加密(批量列加密)
    开启加密(单列加密)
    1. 单击目标数据库实例对应操作列的一键加密

    2. 在右侧面板,选择加密参数,然后单击确定

      image

      参数

      说明

      资产类型

      选择RDS。

      实例名称

      选择需要设置列加密的RDS实例。

      加密算法

      目前仅支持默认加密算法:AES-128-GCM

      明文权限账号

      完成加密配置后,对应数据库下所有账号都默认设置为密文权限。您可以选择加白的账号,使用明文权限访问加密列数据。

      配置加密列

      选择需要加密的数据库、表和列。

      您可以根据搜索组件,例如识别模板、识别模型、敏感等级、库名称、表名称等,搜索待加密列信息。

    在数据库实例列表,展开目标实例,找到目标列,单击操作列的开启加密。该列使用默认加密算法:AES-128-GCM进行加密。

    image

修改数据库账号权限

除了已设置为明文权限的账号,RDS PostgreSQL数据库的其他账号默认为密文权限(JDBC解密)(支持解密后访问明文数据)。

对于已配置且成功生效的加密列数据,您可以根据业务场景,修改账号权限为明文访问密文权限(JDBC解密)

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

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

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

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

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

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

修改加密列范围

完成加密配置后:

  • 您可以在实例列表的操作列,单击编辑,修改加密列范围。

  • 您也可以在实例列表展开目标实例,在数据库列表,找到目标名称,单击开启加密关闭加密,修改加密列。

验证列加密结果

您可以根据已配置数据库列加密和数据库账号权限,验证访问加密列的数据。

例如,对测试RDS PostgreSQL实例中students01表的gender列进行了加密处理。绑定的数据库账号权限为密文权限(JDBC解密)

image

  1. 使用密文权限(JDBC解密)权限的测试账号登录数据库。具体操作,请参见连接PostgreSQL实例

  2. 执行SELECT语句查看数据表,加密列会返回密文数据。

    image

  3. 将测试账号权限切换为明文访问。具体操作,请参见修改数据库账号权限

  4. 执行SELECT语句查看数据表,加密列会返回明文数据。

    image

常见问题

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

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

  • 数据库版本不支持

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

  • 内核版本不支持

    image

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

    image

  • 只读实例

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

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

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

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

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

  • 本页导读 (1)
  • 前提条件
  • 功能说明
  • 访问加密列数据原理
  • 计费说明
  • 注意事项
  • 总览列加密统计信息
  • 配置列加密
  • 开启列加密
  • 修改数据库账号权限
  • 修改加密列范围
  • 验证列加密结果
  • 常见问题
  • RDS实例的加密检查“未通过”怎么办?
文档反馈