Aurora PostgreSQL pg_columnmask 数据移动场景 - Amazon Aurora
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Aurora PostgreSQL pg_columnmask 数据移动场景

pg_columnmask 的行为因数据移动操作不同而异,具体取决于操作是发生在存储层、逻辑层还是应用程序层。存储级别操作(例如克隆)的行为不同于逻辑操作(例如 pg_dump)和应用程序级别操作(例如 FDW 查询)。本节介绍常见场景(包括复制、备份、导出和迁移)的掩蔽行为,并解释了每种场景的安全影响。

Aurora Global Database 和只读副本

Aurora pg_columnmask 策略存储在集群卷内的数据库系统表中。所有副本都访问相同的策略并返回以一致的方式掩蔽的结果。对于 Aurora Global Database 部署,pg_columnmask 策略会与其它数据库系统表一起复制到辅助 Amazon Web Services 区域,从而确保跨区域的数据保护一致性。在失效转移场景中,所有 pg_columnmask 策略都保持不变且正常运行。

数据库克隆和快照还原

Aurora 快速克隆和快照还原操作将所有 pg_columnmask 策略、角色和配置保留为数据库系统表的一部分。克隆或还原的数据库会从源集群继承所有现有策略。克隆或还原后,每个数据库集群都会维护独立的 pg_columnmask 策略。

逻辑复制

在初始同步期间,逻辑复制使用标准 SQL COPY 操作,并根据复制用户的权限强制执行 pg_columnmask 策略。在持续的 CDC(变更数据捕获)期间,不应用掩蔽策略,而通过 WAL 记录复制未掩蔽的数据。具有 pg_create_subscription 权限的用户可能会通过设置复制到他们控制的系统,来潜在泄露未掩蔽的数据。

蓝/绿部署

在快照还原期间,会自动将 pg_columnmask 策略包括在内。绿色环境从蓝色环境中所有策略的相同副本开始。在从蓝色复制到绿色期间,不对数据进行掩蔽。蓝色集群上的后续掩蔽策略更改(DDL 命令)不会复制到绿色集群,也不会使 RDS 蓝绿部署失效。

零 ETL 和 CDC 流

数据复制不受 pg_columnmask 策略影响。零 ETL 支持 DDL 复制,但不复制 pg_columnmask 或 RLS 策略。不对零 ETL 中的复制数据应用任何掩蔽策略。

Amazon Database Migration Service

根据为 DMS 任务选择的用户,对初始数据同步进行掩蔽或不进行掩蔽。始终不对 CDC 数据进行掩蔽。虽然可以迁移 pg_columnmask 相关的内部 RLS 策略,但它们无法在 non-pg_columnmask-enabled 目标上起作用。

数据导出

pg_columnmask 像对待任何其它查询操作一样对待导出,即根据执行用户的权限应用掩蔽。这适用于诸如 COPY、SELECT INTO、CREATE TABLE AS 等 SQL 命令和 Aurora PostgreSQL 的 S3 导出功能。

注意

当掩蔽的用户导出数据时,生成的文件包含掩蔽的值,这些值在还原时可能会违反数据库约束。

视图和实体化视图

使用视图时,请记住以下注意事项:

  • 常规视图:始终使用 INVOKER 语义。无论视图的创建者是谁,当前用户的掩蔽策略在查询视图时都适用。

  • 实体化视图:刷新后,将应用实体化视图所有者的掩蔽策略,而不是执行刷新的用户的策略。如果所有者有掩蔽策略,则实体化视图将始终包含掩蔽的数据。

数据转储和还原

pg_dump 以普通数据库用户身份运行,并根据连接用户的权限应用掩蔽策略。如果掩蔽的用户执行转储,则备份文件将包含掩蔽的数据。pg_columnmask 策略作为数据库架构的一部分包含在转储中。成功还原要求所有引用的角色都存在于目标数据库中,并且目标必须安装了 pg_columnmask 扩展。

注意

从 PostgreSQL 18 开始,pg_dump 支持 —no-policies 选项,该选项从数据库转储中同时排除行级别安全性(RLS)和 pg_columnmask 掩蔽策略。有关更多信息,请参阅 pg_dump

外部数据包装器

使用外部数据包装器时,对远程表应用掩蔽策略的依据是映射用户在源服务器上的权限,而不是本地查询用户的权限,虽然您可以通过 FDW 访问掩蔽的远程数据,但您不能直接在本地数据库中的外部表上创建 DDM 或 RLS 策略。