列加密

为了加强对PolarDB PostgreSQL中敏感列数据的保护,防止非授权人员通过云平台软件或数据库连接工具直接访问敏感数据的明文信息,您可以利用数据安全中心DSC(Data Security Center)提供的列加密功能。该功能能够在确保数据在数据库内可用的同时,实现数据的不可见性,从而有效抵御来自云平台外部和内部的安全威胁,使云上数据真正成为用户的私有资产。

前提条件

  • 内核版本PostgreSQL 14且内核小版本为2.0.14.15.31.0及以上。

    说明

    您可在控制台查看内核小版本号,也可以通过SHOW polardb_version;语句查看。如未满足内核小版本要求,请升级内核小版本

    您可在控制台查看内核小版本号,也可以通过SHOW polardb_version;语句查看。如未满足内核小版本要求,请升级内核小版本

  • 实例所在地域

    地域类型

    地域名称

    中国内地

    华北1(青岛)、华北2(北京)、华北3(张家口)、华北5(呼和浩特)、华东1(杭州)、华东2(上海)、华南1(深圳)、华南3(广州)、西南1(成都)。

    非中国内地

    中国香港、新加坡(新加坡)、马来西亚(吉隆坡)、印度尼西亚(雅加达)、德国(法兰克福)。

功能简介

PolarDB PostgreSQL的列加密功能由数据安全中心DSC提供,其采用AES-256-GCM加密算法和本地密钥的加密方式,可对数据库中的敏感数据列进行加密配置,确保敏感数据加密后存储,并支持已授权用户通过全密态客户端解密后访问明文数据,您可以自行选择与修改待加密的PolarDB PostgreSQL、库、表及列范围。

准备工作

在开启列加密功能前,您需要依次完成以下步骤:开通或升级DSC服务、授权DSC访问云资源、授权数据库资产、连接数据库并执行敏感数据识别任务。

1.开通或升级DSC服务

列加密功能仅适用于数据安全中心 DSC(Data Security Center)免费版高级版企业版7天试用版仅购买增值服务版的用户。

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

  • 已使用数据安全中心,需检查DSC版本与列加密额度,根据需求升级DSC服务:您可以登录数据安全中心控制台,在总览页面检查DSC版本与列加密额度。如果您未开通列加密功能或列加密授权配额不足,您可以进行版本升级

2.授权DSC访问云资源

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

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

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

说明

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

3.数据库资产同步

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

  1. 在左侧导航栏,选择资产中心

  2. 资产中心页面,单击资产同步

    说明

    购买DSC实例后,首次登录控制台将自动执行云上资产列表同步任务,无需手动操作。DSC会每日零点自动扫描并同步资产列表。

4.开启分类分级

实现列加密功能,您需要先授权数据库连接,并完成数据识别任务。

  1. 在左侧导航栏,选择资产中心

  2. 在左侧结构化数据区域,单击需要配置列加密的数据类型。

  3. 单击目标资产实例分类分级列的image

    说明

    请确保数据库实例已创建数据库,且实例状态运行中。若未创建数据库,则无法启用分类分级功能,也无法创建相应的识别任务。

    image

  4. 开启分类分级对话框中,按照如下内容进行配置。

    配置项

    说明

    开启方式

    配置您连接数据库进行数据检测的账号信息。支持两种配置方式:

    • 自动创建数据库账号DSC会自动在目标数据资产中创建一个以sddp_auto开头的只读账号,通过该账号连接目标数据库进行数据识别任务。

      说明

      仅对支持一键开启功能的数据类型,可以选择此方式。

    • 手动输入账号密码:配置您连接数据库的账号密码。

    授权范围

    授权进行数据检测的范围。

    • 整个数据源

    • 在数据源列表管理授权范围:选择授权范围。

    自动创建系统默认任务开始扫描

    选中后DSC会在数据库连接成功自动后创建默认扫描任务。

    您可以在分类分级 > 任务管理 > 识别任务页签中,单击系统默认任务,查看扫描任务执行情况。具体操作,请参见通过识别任务扫描敏感数据

    实例下新增数据库,自动连接

    选中后当DSC进行手动或自动资产同步后,检测到您的数据库实例中存在新增数据库,会自动连接。

  5. 配置完成后,单击确定

5.查看待加密数据库信息

数据识别任务扫描完成后,查看已成功接入DSC的数据库实例信息,包括总列数列加密情况数据库账号信息等。

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

  2. 列加密页面查看以下信息。您可通过数据库列表上方的搜索组件,例如资产类型、加密状态(已加密列、未加密列或加密失败)、敏感等级等搜索并查看目标数据库实例信息。

    敏感等级说明

    敏感等级

    说明

    N/A

    未识别到当前识别模板内包含的敏感信息。

    S1

    不敏感数据,公开该类数据在绝大多数情况下不会造成危害。如省份、城市、商品名称等。

    S2

    一般敏感数据,不适合公开该数据,数据泄露的危害程度较低。如姓名、地址等。

    S3

    关键敏感数据, 数据敏感程度较高,少量泄漏即会带来严重危害。如各类身份证件、账号密码、数据库信息等。

    S4

    核心机密数据,任何情况下不应泄漏。如基因、指纹、虹膜等。

    image

    页面信息

    说明

    总列数

    已成功接入DSC的数据库实例包含的数据库表中的总列数。

    敏感数据(S3及以上)

    数据识别结果中敏感等级为S3及以上的列。其中包含敏感列,已加密列,未加密列,加密失败等信息。

    账号数据

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

    • 未配置加密:数据库中所有列都未开启加密时,账号权限为未配置加密

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

    您可以单击以上统计项的任意数字或单击权限设置,在账号权限设置面板,搜索并查看目标数据库实例下的所有账号信息,以确认为不同数据库账号设置不同访问权限。

    列表信息

    展示DSC实例名称资产类型地域加密算法明文权限账号加密检查等信息。

    • 仅支持对加密检查通过的实例配置列加密。

    • 加密检查结果为“未通过”。如果数据库版本不兼容,请先单击加密检查列的前往升级,跳转到RDSPolarDB控制台对应的升级页面,升级数据库版本。具体操作请参见检查失败常见问题

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

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

    2. 资产授权管理面板左侧产品名称导航栏,单击目标实例类型(RDSPolarDB),然后单击资产同步

开启列加密

确认目标数据库实例信息且加密检查显示通过后,完成列加密配置。

  1. 单击数据库实例列表上方的一键加密,为所有未加密列配置列加密。或者您也可以单击目标数据库实例对应操作列的一键加密,为目标数据库实例配置列加密。image

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

    • 数据安全中心DSC支持多种加密算法,但PolarDB PostgreSQL当前仅支持AES-256-GCM加密算法和本地加密的加密方式。

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

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

      重要

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

    image

修改列加密配置

修改加密列范围

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

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

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

    image

修改数据库账号权限

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

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

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

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

    说明

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

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

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

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

验证列加密结果

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

说明

列加密功能对第三方客户端未完全兼容(例如:通过 数据管理DMS(Data Management)查看已加密数据可能异常),建议使用列加密驱动(JDBC)PolarDB-Tools客户端访问加密数据。

例如,对测试PolarDB PostgreSQL集群中students01表的birth_date列进行了加密处理。同时,将集群内的一个数据库账号权限设置为明文权限,另一个账号保持密文权限(JDBC解密)

image

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

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

客户端使用说明

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

常见问题

PolarDB集群的加密检查“未通过”怎么办?

首先,确认PolarDB PostgreSQL集群运行状态为运行中,非运行中状态集群不支持配置列加密。

其次,如果已授权接入的PolarDB PostgreSQL数据库的版本不是PostgreSQL 14或内核小版本小于2.0.14.15.31.0,加密检查列会显示未通过

解决方案

  • 数据库版本不支持

    暂不支持PolarDB PostgreSQL集群大版本升级,您可以创建符合版本要求的新集群,再通过PolarDB PostgreSQL版间的迁移将当前数据库数据迁移至新集群。

  • 内核版本不支持

    如果确认目标PolarDB集群需要进行列加密配置,您可以单击配置与管理 > 版本管理中的仅升级内核引擎,单击立即升级,然后选择要升级到的内核小版本并确认。详细说明及注意事项,请参见版本升级。完成数据库内核升级后,该PolarDB数据库才支持开启列加密。

    image

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

  1. 在左侧导航栏,选择资产中心

  2. 资产中心页面,单击资产同步

相关内容