本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
数据筛选限制
当您授予对数据目录表的 Lake Formation 权限时,可以包括数据筛选规范,以限制对查询结果中以及与 Lake Formation 集成的引擎中某些数据的访问。Lake Formation 使用数据筛选来实现列级别安全性、行级别安全性以及单元格级别安全性。如果源数据包含嵌套结构,则可以对嵌套列定义和应用数据筛选条件。
请牢记以下关于行级别筛选和单元格级别筛选的注意事项和限制。
-
嵌套列不支持单元格级别安全性。
-
嵌套列也支持顶级列支持的所有表达式。但是,定义嵌套的行级别表达式时,不应引用分区列下的嵌套字段。
-
使用 Athena 引擎版本 3 或 Amazon Redshift Spectrum 时,所有区域均可提供单元格级别安全性。对于其他服务,只有支持的区域上提及的区域提供单元格级别安全性。
-
不支持
SELECT INTO
语句。 -
行筛选条件表达式不支持
array
和map
数据类型。支持struct
数据类型。 -
要对使用行级别和单元级别筛选的表运行查询操作,必须使用名为
AmazonAthenaLakeFormation
的特殊工作组。有关 Athena 中工作组的信息,请参阅《Amazon Athena 用户指南》中的使用工作组运行查询。 -
可以针对表定义的数据筛选条件数量没有限制,但是对于单个主体,最多只能针对一个表定义 100 个数据筛选条件
SELECT
权限。 -
可包含在对一个表的授权中的最大数据筛选条件数量为 10。
-
要使用行筛选表达式应用数据筛选条件,必须使用授权选项获得对所有表列的
SELECT
。当向外部账户授予权限时,此限制不适用于外部账户的管理员。 -
如果主体是组的成员,并且主体和该组都被授予了对部分行的权限,则主体的有效行权限是主体权限和组权限的并集。
-
在行级别筛选和单元格级别筛选中,以下列名受限:
ctid
oid
xmin
cmin
xmax
cmax
tableoid
insertxid
deletexid
importoid
redcatuniqueid
-
如果将 all-rows 筛选表达式与其他带有谓词的筛选表达式同时应用于表,则 all-rows 表达式将优先于所有其他筛选表达式。
-
当向外部账户授予行子集的权限,而外部 Amazon 账户的数据湖管理员向该账户中的委托人授予这些权限时,委托人的有效筛选谓词是该账户的谓词和直接授予委托人的任何谓词的交集。
例如,如果账户通过谓词
dept='hr'
获得了行权限,而主体被单独授予了对country='us'
的该权限,则主体只能访问带有dept='hr'
和country='us'
的行。
有关单元格级别筛选的更多信息,请参阅Lake Formation 中的数据筛选和单元格级别安全性。