《Lake Formation》中的数据过滤器 - Amazon Lake Formation
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

《Lake Formation》中的数据过滤器

您可以通过创建数据筛选条件来实现列级、行级和单元级和单元级安全性。在授予表的 La SELECT ke Formation 权限时,可以选择数据筛选器。

每个数据筛选条件都属于数据目录中的特定表。数据筛选条件包括以下信息:

  • 过滤器名称

  • 与筛选器关联的表的目录 ID

  • 表名称

  • 包含该表的数据库的名称

  • 列规范 — 要在查询结果中包括或排除的列的列表。

  • 行筛选表达式-用于指定要包含在查询结果中的行的一种表达式。在某些限制下,该表达式的语法与 PartiQL 语言中的WHERE子句相同。要指定所有行,请在控制台true中输入或在 API 调用AllRowsWildcard中使用。

    有关行筛选表达式中支持的内容的更多信息,请参阅行过滤器表达式中支持 PartiQL

您获得的筛选级别取决于填充数据筛选器的方式。

  • 如果指定“所有列”通配符并提供行筛选条件表达式,则仅建立行级安全性(行筛选)。

  • 如果包含或排除特定列并使用所有行通配符指定 “所有行”,则仅建立列级安全性(列筛选)。

  • 如果包含或排除特定列,同时提供行筛选条件表达式,则建立单元格级别的安全性(单元格筛选)。

以下来自 Lake Formation 控制台的屏幕截图显示了执行单元格级筛选的数据过滤器。对于针对orders表的查询,它限制对该列的访问权限,并且查询结果仅返回该customer_nameproduct_type列包含 “pharma” 的行。


        数据筛选器窗口包含以下垂直排列的字段:数据筛选器名称;目标数据库;目标表;选项按钮组,带有 “访问所有列”、“包含列” 和 “排除列” 选项;选择列(下拉列表);行筛选表达式(多行文本框)。选择排除列选项,选择 customer_name 列进行排除,行筛选表达式字段包含。'product_type='pharma'

请注意,使用单引号将字符串文字括起来。'pharma'

您可以使用 Lake Formation 控制台创建此数据过滤器,也可以向 CreateDataCellsFilter API 操作提供以下请求对象。

{ "Name": "restrict-pharma", "DatabaseName": "sales", "TableName": "orders", "TableCatalogId": "111122223333", "RowFilter": {"FilterExpression": "product_type='pharma'"}, "ColumnWildcard": { "ExcludedColumnNames": ["customer_name"] } }

您可以根据需要为表创建任意数量的数据筛选条件。为此,您需要在表上使用授予选项的SELECT权限。默认情况下,Data Lake 管理员有权在该账户中的所有表上创建数据筛选器。在向委托人授予表权限时,通常只使用可能的数据筛选器的子集。例如,您可以为作为数据筛选器的orders表创建第二个row-security-only数据筛选器。参照前面的屏幕截图,您可以选择 “访问所有列” 选项,并添加行筛选表达式product_type<>pharma。这个数据过滤器的名称可能是no-pharma。它限制了对product_type列设置为 “pharma” 的所有行的访问权限。

此数据筛选器 CreateDataCellsFilter API 操作的请求对象如下。

{ "Name": "no-pharma", "DatabaseName": "sales", "TableName": "orders", "TableCatalogId": "111122223333", "RowFilter": {"FilterExpression": "product_type<>'pharma'"}, "ColumnNames": ["customer_id", "customer_name", "order_num" "product_id", "purchase_date", "product_type", "product_manufacturer", "quantity", "price"] }

然后,您可以将带有restrict-pharma数据筛选器的orders表授予SELECT管理用户,SELECT将带有no-pharma数据筛选器的orders表授予非管理用户。对于医疗保健领域的用户,你可以在orders表格SELECT上授予对所有行和列的完全访问权限(无数据筛选器),或者可能使用另一个限制访问定价信息的数据筛选器。