设置透明数据加密TDE

PolarDB PostgreSQL版提供了透明数据加密TDE(Transparent Data Encryption)功能。TDE可对数据文件执行实时I/O加密和解密,数据在写入磁盘之前进行加密,从磁盘读入内存时进行解密。TDE不会增加数据文件的大小,开发人员无需更改任何应用程序,即可使用TDE功能。

前提条件

背景信息

TDE通过在数据库层执行静态数据加密,阻止可能的攻击者绕过数据库直接从存储中读取敏感信息。经过数据库身份验证的应用和用户可以继续透明地访问应用数据(不需要更改应用代码或配置),而尝试读取表空间文件中的敏感数据的OS用户以及尝试读取磁盘或备份信息的不法之徒将不允许访问明文数据。

PolarDB PostgreSQL版TDE加密使用的密钥由密钥管理服务(KMS)产生和管理,PolarDB不提供加密所需的密钥和证书。您不仅可以使用阿里云自动生成的密钥,也可以使用自带的密钥材料生成数据密钥,然后授权PolarDB使用。

注意事项

  • TDE功能开通后无法关闭。

  • 支持在PolarDB PostgreSQL版14.12.23.1及以上版本中开启TDE,也支持创建集群的过程中开启TDE。

  • 对于I/O密集型(I/O bound)场景,开通TDE后可能会对数据库性能产生一定影响。

操作步骤

创建集群过程中开启TDE,请参考创建PolarDB PostgreSQL版数据库集群。以下为您介绍如何在已存在PolarDB集群开启TDE功能。

重要

启用TDE加密会导致PolarDB集群重启,请谨慎操作。

  1. 登录PolarDB控制台

  2. 在左侧导航栏单击集群列表

  3. 在左上角,选择集群所在地域。

  4. 找到目标集群,单击集群ID。

  5. 在左侧导航栏单击配置与管理 > 安全管理

  6. TDE配置页签,打开TDE状态开关。

    image

  7. 设置TDE对话框中,选择使用服务密钥(阿里云自动生成)使用已有自定义密钥

    • 如果您选择使用服务密钥(阿里云自动生成),单击确定,开通TDE。

      image

    • 如果您选择使用已有自定义密钥,下拉选择由密钥管理服务(KMS)产生的密钥,单击确定,开通TDE。

      image

说明
  • 目前支持的密钥类型为Aliyun_AES_256。

  • 使用已有自定义密钥时,需要满足以下条件:

    • 需要使用阿里云主账号或者是具有AliyunSTSAssumeRoleAccess权限的账号。

    • 禁用密钥,设置了密钥计划删除或者删除密钥材料都会造成密钥不可用。

    • 撤销授权关系后,重启PolarDB集群会导致集群不可用。

  • 如果没有自定义密钥,需要单击前往创建,在密钥管理服务控制台创建密钥并导入自带的密钥材料,详情请参考创建密钥

开通TDE大约需要10分钟,请您耐心等待。

查看TDE状态

  1. 登录PolarDB控制台

  2. 在左侧导航栏单击集群列表

  3. 在左上角,选择集群所在地域。

  4. 找到目标集群,单击集群ID。

  5. 在左侧导航栏单击配置与管理 > 安全管理

  6. TDE配置页签,查看TDE状态

切换为自定义密钥

  1. 登录PolarDB控制台

  2. 在左侧导航栏单击集群列表

  3. 在左上角,选择集群所在地域。

  4. 找到目标集群,单击集群ID。

  5. 在左侧导航栏单击配置与管理 > 安全管理

  6. TDE配置页签,单击TDE状态右侧滑块。

    image

  7. 设置TDE对话框中,选择使用已有自定义密钥,下拉选择由密钥管理服务(KMS)产生的密钥,单击确定,开通TDE。

    说明

    使用已有自定义密钥的注意事项请参考操作步骤下的说明。

高级选项

说明
  • 仅选择使用已有自定义密钥时,支持开启TDE密钥自动轮转。

  • PolarDB并不会更新自定义密钥的主密钥版本,您可以手动更新密钥版本或更改密钥轮转策略,具体操作请参考密钥轮转

  • PolarDB集群在检测到自定义密钥的主密钥版本更新后,将于下次运维时间窗口内轮转TDE的密钥,该过程PolarDB集群将发生重启。

开启高级选项TDE密钥自动轮转功能支持以下两种方式:

  • 开通TDE并选择使用自定义密钥时,您可以在设置TDE对话框中,开启高级选项中的TDE密钥自动轮转功能。

    image

  • 在使用自定义密钥开启TDE后,在TDE配置页签开启高级选项中的TDE密钥自动轮转功能。

    image

常见问题

  • 开启TDE后,常用数据库工具(Navicat等)还能正常使用吗?

    答:可以正常使用。

  • 加密后查看数据为什么还是明文的?

    答:查询数据时会解密并读取到内存,所以是明文显示。开启TDE后存储的数据是加密的。

相关API

API

描述

ModifyDBClusterTDE

开启PolarDB集群TDE功能或修改加密方式。

DescribeDBClusterTDE

查询PolarDB集群的TDE设置详情。

CreateDBCluster

创建PolarDB集群,开启透明数据加密TDE。

说明

DBType参数需要为PostgreSQL